Тип поля Утвердить в Автоматизации

Все вопросы/проблемы по установке и использовании.
sanys
Сообщения: 113
Зарегистрирован: 30 май 2017, 12:52
Имя: Александр
Откуда: Казахстан

Тип поля Утвердить в Автоматизации

Сообщение sanys »

Доброго времени суток.
Столкнулся со следующей проблемой:
Использую поле "Согласование" типа Утвердить для формирования документа. Там указываются сотрудники, которые должны согласовать документ перед его утвержденим.
Отдельной кнопкой автоматизации назначаются согласующие сотрудники.
После согласования срабатывает атоматическое действие, изменяющее статус документа и позволяюещее утверждающему его Утвердить.
Но в случае, если по какой-то причине, документ надо доработать, то отметки о согласовании (поле "Согласование") должны сброситься. Для решения этой задачи есть кнопка Автоматизации, действие которой делает поле "Согласование" пустым.
Теперь кнопка, отправляющая документ на согласование снова доступна и после внесения измений, документ снова отправляется на согласование.

Вот здесь внимание: если на этом этапе выбрать сотрудников, которые были в прошлый раз и уже нажимали кнопка "Согласовано" (от поля типа Утвердить), то отметка об согласовании возвращается.
Думаю, что такое поведение не логично.

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

Возможно я не прав и такое поведение в автоматизации более корректно? Почему тогда через простое редактирование работает по-другому?
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Тип поля Утвердить в Автоматизации

Сообщение support »

Согласен с вами, подумаю над решением.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Тип поля Утвердить в Автоматизации

Сообщение support »

Доработал код. Теперь если мы в автоматизации изменяем значения поля Утвердить, история очищается.

Что бы применить изменения, откройте файл 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;
}
Проверяйте и сообщите результат.
sanys
Сообщения: 113
Зарегистрирован: 30 май 2017, 12:52
Имя: Александр
Откуда: Казахстан

Re: Тип поля Утвердить в Автоматизации

Сообщение sanys »

support писал(а): 18 фев 2020, 17:54 Доработал код. Теперь если мы в автоматизации изменяем значения поля Утвердить, история очищается.
Спасибо! Теперь работает предсказуемо!
sanys
Сообщения: 113
Зарегистрирован: 30 май 2017, 12:52
Имя: Александр
Откуда: Казахстан

Re: Тип поля Утвердить в Автоматизации

Сообщение sanys »

Хотя нет, я поторопился.
Теперь через автоматизацию поле можно только очистить (в действиях оставляем поле без пользоватлей).

Если же в дейстиви автоматизации для поля типа Утвердить сделать выбор пользователей в ручную
sanys писал(а): 18 фев 2020, 12:59
Отдельной кнопкой автоматизации назначаются согласующие сотрудники.
То изменение списка пользователей не происходит, а только сбрасываются отметки.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Тип поля Утвердить в Автоматизации

Сообщение support »

Нашел причину.

Найдите строчку, которую вы добавили:

Код: Выделить всё

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;
Проверяйте и сообщите результат.
sanys
Сообщения: 113
Зарегистрирован: 30 май 2017, 12:52
Имя: Александр
Откуда: Казахстан

Re: Тип поля Утвердить в Автоматизации

Сообщение sanys »

support писал(а): 19 фев 2020, 09:59 Нашел причину.
Все, теперь почти все верно.
Работает так:
В действии автоматизации
Без ручного ввода - поле пустое - Очищает списко пользователей и сбрасывает отметку.
Без ручного ввода - предустановленные значения - сбрасывает отметки.
Ручной ввод - Обновляет список пользователей и сбрасывает отметки.
Требуется ручной ввод - Оставляем пустое поле - очищает список и сбрасывает отметки (проверил на всякий случай, но ситуация странная :) )
Ручной ввод и использовать значения - обновляет список пользователей и сбрасывает отметки (именно обновляет, без сохранения уже установленных).

На счет последнего - не знаю кому может пригодится исользовать данный тип поля в таком ключе, но для меня сейчас не критично.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Тип поля Утвердить в Автоматизации

Сообщение support »

Да, надо бы сохранять установленные отметки.

Изменил код

Код: Выделить всё

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;
sanys
Сообщения: 113
Зарегистрирован: 30 май 2017, 12:52
Имя: Александр
Откуда: Казахстан

Re: Тип поля Утвердить в Автоматизации

Сообщение sanys »

sanys писал(а): 19 фев 2020, 10:40 Ручной ввод и использовать значения - обновляет список пользователей и сбрасывает отметки (именно обновляет, без сохранения уже установленных).
support писал(а): 19 фев 2020, 11:20 Да, надо бы сохранять установленные отметки.
Здесь чуть-чуть не так поняли т.к. теперь не работает
sanys писал(а): 19 фев 2020, 10:40 Без ручного ввода - предустановленные значения - сбрасывает отметки.
Вместо этого отметки сохраняются.

Запутал я Вас совсем. Откачусь на предыдущий вариант, т.к. он для меня более подходящий.

А вообще вижу следующие юзеркейсы:
1. Отправить на согласование.
  • Список пользователей заранее предустановлен или требуется ручной ввод.
  • Отметки сбрасываются.
2.Отменить согласование.
  • Заранее предустановленный пустой список пользователей.
  • Отметки сбрасываются.
3.Добавить к согласованию.
  • Сохраняем предыдующий список пользователей и добавляем новых пользователей.
  • По хорошему просится сохранение отметок у тех, кто уже был в списке и сбрасывание отметок у тех, кого добавили.
Но это конкретно в этом случае. Кому-то может пригодится сбрасывание отметок и в этом случае (правда не могу придумать пример).

Мне кажется, надо делать проверку значения поля "Ввести вручную" ("Да", "Нет", "Да, и использовать значение") при настройке действия.
Для "Да" и "Нет" - сбрасывать отметки.
Для "Да, и использовать значние" - сохранять отметки, но только для ранее добавленных пользователей.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Тип поля Утвердить в Автоматизации

Сообщение support »

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