Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Доступность смены статуса для групп пользователей, пользователя, проекта #285

Closed
7OH opened this issue Apr 5, 2021 · 24 comments

Comments

@7OH
Copy link
Contributor

7OH commented Apr 5, 2021

Необходимо реализовать настройку доступности смены статусов (как в карточке задачи, так и на канбан доске).
Настраиваться должно С какого статуса и НА какой можно менять - группе пользователей, пользователю.
В карточке - при выборе статуса - показывать только доступные.
В канбан доске - при начале и окончании перетаскивания определять возможность.
Так работает в JIRA - удобно - не даёт разработчику перекинуть задачу из "В процессе" в "Архив" или, например, "К оплате".

@BlizD
Copy link
Owner

BlizD commented Apr 5, 2021

А где хранится такая настройка? По идее это необходимо указывать в самом статусе.
Может использовать для этого новую ТЧ "ДоступныеДляПереходаСтатусы" в спр. узСтатусыЗадач

@milanse
Copy link

milanse commented Apr 5, 2021

У меня есть похожее решение.
Выглядит так:
image

Реализовано через РС, текущий статус, новый статус, наименование команды. Но тут надо еще права пользователей смотреть. И, по хорошему, в разрезе проектов.

@7OH
Copy link
Contributor Author

7OH commented Apr 5, 2021

Может использовать для этого новую ТЧ "ДоступныеДляПереходаСтатусы" в спр. узСтатусыЗадач

Где-то так и хочется - да.

У меня есть похожее решение.

Делись ) - попробуем адаптировать.

@milanse
Copy link

milanse commented Apr 5, 2021

Ну у меня без учета прав, просто РС. Я сам заманался каждый раз выбирать нужный статус )

@7OH
Copy link
Contributor Author

7OH commented Apr 5, 2021

Права на задачи отдельно - есть задача меняем статус на (выборка из регистра).
Можно даже при старте в параметры сеанса загнать доступные и всё.

@milanse
Copy link

milanse commented Apr 5, 2021

Могу либо свою конфу выложить, либо сам смержить необходимый кусок с последним девом.

@7OH
Copy link
Contributor Author

7OH commented Apr 5, 2021

За мерж можно и отдельное спасибо сказать будет )))))

@7OH
Copy link
Contributor Author

7OH commented Apr 12, 2024

Решил добить задачу.
Давайте освежим.
Настройка использования механизма ограничений должна быть в разрезе Проекта\Основной задачи ?
Если да - тогда реквизит надо добавить в обе сущности - если хоть в одной заполнено - используется.
Дальше регистр возможности смены - изменения:
Проект\ОсновнаяЗадача
Пользователь\Группа
СтатусНачальный
СтатусКонечный
Показатели:
Отключить (чтобы запись не удалять при необходимости)

Доступность выбирается максимальная : если проекту доступно 1, а задаче 2 - по итогу доступно и 1 и 2.
Аналогично с пользователь\группа.

Ок ?

@7OH
Copy link
Contributor Author

7OH commented Apr 14, 2024

Сделал только про проекту.
Изменения:
РегистрСведений.узДоступностьСменыСтатусовЗадач - добавлен
Подсистема.узУправлениеЗадачами - добавлен РегистрСведений
Роли : узПолныеПрава, узПользователь, узПользовательОграничениеДоступаЧтение, узПользовательОграничениеДоступаИзменение - права на РегистрСведений
Справочник.узЗадачи.ФормаЭлемента - код по ограничению смены статусов
Справочник.узПроекты - новый реквизит ОграничиватьСменуСтатусов + вывод его на все формы справочника
Обработка.узКанбанДоска.ФормаДинамическая - код проверки смены статуса

Файл на диске - https://disk.yandex.ru/d/w0MDjl0sPtqFwQ

@BlizD
Copy link
Owner

BlizD commented Apr 14, 2024

Привет, спасибо за доработки, на этих выходных не получилось посмотреть. Возможно на след. получится

@BlizD BlizD changed the title Доступность смены статуса Доступность смены статуса в рамках проекта Apr 20, 2024
@BlizD BlizD changed the title Доступность смены статуса в рамках проекта Доступность смены статуса для групп пользователей, пользователя, проекта Apr 20, 2024
@BlizD
Copy link
Owner

BlizD commented Apr 20, 2024

@7OH
Мне не очень нравится идея с отдельным регистром сведений.

Поэтому предлагаю переделать на новую табличную часть "ДоступныеДляПереходаСтатусы" в справочнике узСтатусыЗадачи

  1. Реквизиты ТЧ:
  • Проект - (Справочник.узПроекты);
  • Пользователь - Справочник.ГруппыПользователей, Справочник.Пользователи ;
  • Основная задача - Справочник.узЗадачи;
  • СтатусНачальный - Справочник.узСтатусыЗадачи ;

Если какой то реквизит не заполнен в ТЧ, то это означает разрешение перевода статуса для всех проектов, пользователей, основных задач,
Если ТЧ пустая, значит можно переходить из любых статусов в этот статус.

  1. код проверки разместить в модуле объекта узЗадачи в событии ПередЗаписью.

  2. на форме задачи и канбан доски - можно не ограничивать выбор статусов, пусть будут доступны все. Проверка сработает при попытке перевести.

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

А как видеть сводные данные по группе пользователей ?
Удобство ввода уйдёт.
Сейчас пляшем от проекта , для каждого пользователя группы - сразу видна цепочка доступностей.
Как вводить понятно при хранении в статусе - я пока не представляю

@BlizD
Copy link
Owner

BlizD commented Apr 20, 2024

Думаю лучше будет сделать запрещающую таблицу "ТЧ ЗапрещеныДляПереходаСтатусы" в этом случае по идее настроек будет меньше нужно вводить.

Давай здесь попробуем смоделировать разные настройки

https://docs.google.com/spreadsheets/d/1P-horjncEp3jK9_TQZqgRG3cWnqmPVML/edit?usp=sharing&ouid=111332701158750307557&rtpof=true&sd=true

image

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

Ок. У нас обычно разрешений было меньше.
Пример: разрешено из к выполнению, выполнение, готово.
Запреты придётся вводить декартовым произведением плюс не отследить новые статусы.

@BlizD
Copy link
Owner

BlizD commented Apr 20, 2024

Ок, вернул разрешающие "ДоступныеДляПереходаСтатусы"

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

А чем не нравится регистр ?
Всегда же советуют, чтобы не записывать лишний раз сущность - создавать отдельный регистр с отдельными правами.
Чтобы понять в задаче - всё равно нырять куда-то - что в статус, что в регистр.
По поводу проверки перед записью - могу не согласиться.
Пример: я не знаю, что мне доступно и буду на каждый статус пытаться записью задачи проверять. А при ограничении сразу в поле ввода - я на ходу вижу - можно или нет.

@BlizD
Copy link
Owner

BlizD commented Apr 20, 2024

>А чем не нравится регистр ?
Всегда же советуют, чтобы не записывать лишний раз сущность - создавать отдельный регистр с отдельными правами.
Чтобы понять в задаче - всё равно нырять куда-то - что в статус, что в регистр.

В данном случае мне кажется нет смысла создавать отдельный регистр, чтобы его можно было редактировать отдельно от статуса.

>По поводу проверки перед записью - могу не согласиться.

Проверка в модуле в любом случае должна быть, чтобы она действовала не только на форму элемента, но и при попытке изменить на канбан доске и программным способом.

>Пример: я не знаю, что мне доступно и буду на каждый статус пытаться записью задачи проверять. А при ограничении сразу в поле ввода - я на ходу вижу - можно или нет.

На форме элемента тоже проверку можно сделать, главное, чтобы был единый метод проверки.

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

Ок - добавлю проверку и в модуль объекта - согласен.
На канбан доске проверка уже есть.

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

Ещё вопрос - как разрешить (в случае хранение в ТЧ статуса) изменение из Готово в любой ?
Это надо писать во все доступные статусы строку?
Учитывая, что мы согласились работать с разрешениями - мы теряем возможность смены в любой новый.
Сейчас красиво разрешение на все действия реализованы одной строкой - с двумя пустыми статусами.

@BlizD
Copy link
Owner

BlizD commented Apr 20, 2024

Да, что то не взлетает.
Поэтому и хотел запрещающие статусы сделать. Если нет записи в тч, значит все разрешено

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

Может на следующих выходных всё таки взглянуть на текущее решение ещё раз ?
Минимум записей - и не пропускаем ничего от будущих изменений.
Всё запрещено - разрешения вносим.
Что-то внесли новое - никуда в разрешения не попадёт.
Ну и регистр, так как пустые записи с обоих сторон.

@BlizD
Copy link
Owner

BlizD commented Apr 20, 2024

Можешь в том ексель. Привести примеры настроек в случае с регистром?

@7OH
Copy link
Contributor Author

7OH commented Apr 20, 2024

Немного расписал плюсы минусы - детально не стал - вроде и так прозрачно выходит.
Поправил в форме ввода в одном месте.
Добавил проверку для записи программной в модуле задачи (такую же как в конбан доске).
Файл на диске - https://disk.yandex.ru/d/Pf81DQy98_AkYA

@BlizD
Copy link
Owner

BlizD commented Apr 30, 2024

@7OH Залил изменения, провел рефакторинг.
Убрал форму для заполнения, оставил простую форму записи.
Разместил на форме проекта настройку списка доступных.

Подготовил инструкцию https://github.com/BlizD/Tasks/wiki/Как-настроить-доступные-смены-статусов-для-задач

@BlizD BlizD added this to the 2024.хх.хх.хх milestone Apr 30, 2024
@BlizD BlizD closed this as completed May 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants