Тип поля Утвердить в Автоматизации
Тип поля Утвердить в Автоматизации
Доброго времени суток.
Столкнулся со следующей проблемой:
Использую поле "Согласование" типа Утвердить для формирования документа. Там указываются сотрудники, которые должны согласовать документ перед его утвержденим.
Отдельной кнопкой автоматизации назначаются согласующие сотрудники.
После согласования срабатывает атоматическое действие, изменяющее статус документа и позволяюещее утверждающему его Утвердить.
Но в случае, если по какой-то причине, документ надо доработать, то отметки о согласовании (поле "Согласование") должны сброситься. Для решения этой задачи есть кнопка Автоматизации, действие которой делает поле "Согласование" пустым.
Теперь кнопка, отправляющая документ на согласование снова доступна и после внесения измений, документ снова отправляется на согласование.
Вот здесь внимание: если на этом этапе выбрать сотрудников, которые были в прошлый раз и уже нажимали кнопка "Согласовано" (от поля типа Утвердить), то отметка об согласовании возвращается.
Думаю, что такое поведение не логично.
В то же время, если пересохранить запись с пустым полем и заного отправить документ на согласование, то пользователи должны поставить отмеку заново. А вот так более логично и понятно.
Возможно я не прав и такое поведение в автоматизации более корректно? Почему тогда через простое редактирование работает по-другому?
Столкнулся со следующей проблемой:
Использую поле "Согласование" типа Утвердить для формирования документа. Там указываются сотрудники, которые должны согласовать документ перед его утвержденим.
Отдельной кнопкой автоматизации назначаются согласующие сотрудники.
После согласования срабатывает атоматическое действие, изменяющее статус документа и позволяюещее утверждающему его Утвердить.
Но в случае, если по какой-то причине, документ надо доработать, то отметки о согласовании (поле "Согласование") должны сброситься. Для решения этой задачи есть кнопка Автоматизации, действие которой делает поле "Согласование" пустым.
Теперь кнопка, отправляющая документ на согласование снова доступна и после внесения измений, документ снова отправляется на согласование.
Вот здесь внимание: если на этом этапе выбрать сотрудников, которые были в прошлый раз и уже нажимали кнопка "Согласовано" (от поля типа Утвердить), то отметка об согласовании возвращается.
Думаю, что такое поведение не логично.
В то же время, если пересохранить запись с пустым полем и заного отправить документ на согласование, то пользователи должны поставить отмеку заново. А вот так более логично и понятно.
Возможно я не прав и такое поведение в автоматизации более корректно? Почему тогда через простое редактирование работает по-другому?
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Тип поля Утвердить в Автоматизации
Согласен с вами, подумаю над решением.
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Тип поля Утвердить в Автоматизации
Доработал код. Теперь если мы в автоматизации изменяем значения поля Утвердить, история очищается.
Что бы применить изменения, откройте файл plugins\ext\classes\processes\processes.php
Найдите строчку:
После нее добавьте:
В результате должно получится:
Проверяйте и сообщите результат.
Что бы применить изменения, откройте файл plugins\ext\classes\processes\processes.php
Найдите строчку:
Код: Выделить всё
switch($actions_fields['type'])
{Код: Выделить всё
case 'fieldtype_users_approve':
db_query("delete from app_approved_items where entities_id='" . $action_entity_id . "' and items_id in (" . implode(',',$selected_items) . ") and fields_id='" . $actions_fields['fields_id'] . "'");
break;Код: Выделить всё
switch($actions_fields['type'])
{
case 'fieldtype_users_approve':
db_query("delete from app_approved_items where entities_id='" . $action_entity_id . "' and items_id in (" . implode(',',$selected_items) . ") and fields_id='" . $actions_fields['fields_id'] . "'");
break;
case 'fieldtype_created_by':
$sql_data['created_by'] = $actions_fields['value'];
break;
default:
$sql_data['field_' . $actions_fields['fields_id']] = $actions_fields['value'];
break;
}Re: Тип поля Утвердить в Автоматизации
Спасибо! Теперь работает предсказуемо!support писал(а): 18 фев 2020, 17:54 Доработал код. Теперь если мы в автоматизации изменяем значения поля Утвердить, история очищается.
Re: Тип поля Утвердить в Автоматизации
Хотя нет, я поторопился.
Теперь через автоматизацию поле можно только очистить (в действиях оставляем поле без пользоватлей).
Если же в дейстиви автоматизации для поля типа Утвердить сделать выбор пользователей в ручную
Теперь через автоматизацию поле можно только очистить (в действиях оставляем поле без пользоватлей).
Если же в дейстиви автоматизации для поля типа Утвердить сделать выбор пользователей в ручную
То изменение списка пользователей не происходит, а только сбрасываются отметки.sanys писал(а): 18 фев 2020, 12:59
Отдельной кнопкой автоматизации назначаются согласующие сотрудники.
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Тип поля Утвердить в Автоматизации
Нашел причину.
Найдите строчку, которую вы добавили:
И после нее добавьте:
В результате должно получится так:
Проверяйте и сообщите результат.
Найдите строчку, которую вы добавили:
Код: Выделить всё
db_query("delete from app_approved_items where entities_id='" . $action_entity_id . "' and items_id in (" . implode(',',$selected_items) . ") and fields_id='" . $actions_fields['fields_id'] . "'");Код: Выделить всё
$sql_data['field_' . $actions_fields['fields_id']] = $actions_fields['value'];Код: Выделить всё
case 'fieldtype_users_approve':
db_query("delete from app_approved_items where entities_id='" . $action_entity_id . "' and items_id in (" . implode(',',$selected_items) . ") and fields_id='" . $actions_fields['fields_id'] . "'");
$sql_data['field_' . $actions_fields['fields_id']] = $actions_fields['value'];
break;Re: Тип поля Утвердить в Автоматизации
Все, теперь почти все верно.
Работает так:
В действии автоматизации
Без ручного ввода - поле пустое - Очищает списко пользователей и сбрасывает отметку.
Без ручного ввода - предустановленные значения - сбрасывает отметки.
Ручной ввод - Обновляет список пользователей и сбрасывает отметки.
Требуется ручной ввод - Оставляем пустое поле - очищает список и сбрасывает отметки (проверил на всякий случай, но ситуация странная
Ручной ввод и использовать значения - обновляет список пользователей и сбрасывает отметки (именно обновляет, без сохранения уже установленных).
На счет последнего - не знаю кому может пригодится исользовать данный тип поля в таком ключе, но для меня сейчас не критично.
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Тип поля Утвердить в Автоматизации
Да, надо бы сохранять установленные отметки.
Изменил код
Изменил код
Код: Выделить всё
case 'fieldtype_users_approve':
if(strlen($actions_fields['value']))
{
db_query("delete from app_approved_items where entities_id='" . $action_entity_id . "' and items_id in (" . implode(',',$selected_items) . ") and fields_id='" . $actions_fields['fields_id'] . "' and users_id not in (" . $actions_fields['value'] . ")");
}
else
{
db_query("delete from app_approved_items where entities_id='" . $action_entity_id . "' and items_id in (" . implode(',',$selected_items) . ") and fields_id='" . $actions_fields['fields_id'] . "'");
}
$sql_data['field_' . $actions_fields['fields_id']] = $actions_fields['value'];
break;Re: Тип поля Утвердить в Автоматизации
sanys писал(а): 19 фев 2020, 10:40 Ручной ввод и использовать значения - обновляет список пользователей и сбрасывает отметки (именно обновляет, без сохранения уже установленных).
Здесь чуть-чуть не так поняли т.к. теперь не работает
Вместо этого отметки сохраняются.sanys писал(а): 19 фев 2020, 10:40 Без ручного ввода - предустановленные значения - сбрасывает отметки.
Запутал я Вас совсем. Откачусь на предыдущий вариант, т.к. он для меня более подходящий.
А вообще вижу следующие юзеркейсы:
1. Отправить на согласование.
- Список пользователей заранее предустановлен или требуется ручной ввод.
- Отметки сбрасываются.
- Заранее предустановленный пустой список пользователей.
- Отметки сбрасываются.
- Сохраняем предыдующий список пользователей и добавляем новых пользователей.
- По хорошему просится сохранение отметок у тех, кто уже был в списке и сбрасывание отметок у тех, кого добавили.
Мне кажется, надо делать проверку значения поля "Ввести вручную" ("Да", "Нет", "Да, и использовать значение") при настройке действия.
Для "Да" и "Нет" - сбрасывать отметки.
Для "Да, и использовать значние" - сохранять отметки, но только для ранее добавленных пользователей.
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Тип поля Утвердить в Автоматизации
Отметки не всегда нужно сбрасывать. Для того чтобы сбросить отметки, первым действием нужно установит пустое значение, а вторым действием уже назначать пользователей.