Практикум. Система учета заявок на канцтовары. Алгоритмы.
Общие сведения об алгоритмах
На платформе Greendata предусмотрена работа с алгоритмами.
Процесс создания и настройки алгоритмов состоит из нескольких этапов:
Отладка фронтовых алгоритмов происходит только на визуале после привязки алгоритма, в то время как откладка бэковых алгоритмов возможна на этапе создания формулы.
Каждый алгоритм может использоваться в Системе один или несколько раз.
Редактор алгоритмов содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.
Описание модуля
В рамках этой главы необходимо настроить фронтовые алгоритмы на визуале реестра типа объектов «Заявка» для сотрудника АХР. С помощью алгоритмов необходимо настроить фильтрацию и стилизацию реестра, основанную на состоянии объекта типа.
Также необходимо настроить фронтовые алгоритмы на визуале объектов типа «Заявка», которое будут меняться в зависимости от состояния заявки на бизнес-процессе.
Необходимо настроить фронтовые алгоритмы на визуале объектов типа «Позиция в заявке», которое будут меняться в зависимости от состояния заявки на бизнес-процессе.
Перед настройкой модуля «Алгоритмы» необходимо предварительно реализовать настройки, описанные в главах: |
Настройка алгоритмов в реестре типа «Заявка»
В реестре Сотрудника АХР типа «Заявка» необходимо настроить отображение только тех заявок, состояние объекта которых «Новый» и «Утверждено».
Чтобы перейти в реестр типа «Заявка», перейдите на стартовую страницу, для этого нажмите на логотип GreenData в главном меню. На стартовой странице на виджете «Типы объектов» перейдите к настройкам типа «Заявка», нажав на иконку типа.
Перейдите в реестр объектов типа с помощью кнопки «Открыть реестр» на панели инструментов.
В реестре перейдите в настройки реестра по кнопке «Настройки представления».
На вкладке https://docs-public.gdcloud.org/platform/ru/setting-up-the-object-type-instance-registry.html#%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8_3[«Фильтрация»] можно настроить фильтр по объектам и указать какие необходимо показывать в реестре. Есть три вида фильтра:
-
Алгоритм фильтрации – алгоритмический фильтр, в котором с помощью функций выбирается атрибут фильтруемого объекта и атрибут родительского объекта;
-
SQL условие - фильтр на основе SQL с использованием источников данных;
-
Дерево условий – конструктор логических условий для настройки фильтрации объектов, который позволяет комбинировать различные условия с использованием логических операторов OR и AND.
Выберите вид фильтра «Дерево условий» и с помощью выпадающего списка дополнительных действий в поле «Дерево условий» добавьте новый объект для настройки фильтрации.
В появившемся модальном окне создайте конструктор «Фильтрация заявок для АХР», базовый тип объектов – «Заявка», который будет фильтровать записи по атрибуту «Состояние» и выводить в реестре только заявки в состоянии «Новый» и «Утверждено». Сохраните настройки.
Структура дерева условий состоит из «узлов» (операторов) и «листьев» (условий). По умолчанию структура дерева содержит корневой узел AND, который нельзя удалить, так как он является агрегатом для остальных элементов дерева. Создание новых узлов или листьев осуществляется по кнопке , после нажатия на которую в контекстном меню выбирается добавляемый оператор или условие.
Необходимо создать дерево, в котором будет два условия: состояние заявки «Новый» или «Утверждено».
Чтобы создать дерево условий необходимо:
-
Определить типы и количество используемых операторов;
-
Определить типы и количество условий;
-
Определить сами условия.
Так как нужно показать записи с обоими состояниями заявки, то есть новые ИЛИ утвержденные, добавьте оператор OR.
После этого появится еще один узел, в котором необходимо добавить условия фильтрации.
Создание условия осуществляется с помощью кнопки .
После этого в боковом меню появятся поля для настройки условия.
Создайте условие, в котором атрибут «Состояние» будет равен «Новый».
Заполните поля следующим образом:
-
Тип поля 1: «Объектные значения» - «Атрибут объекта»;
-
Значение поля 1: «Состояние»;
-
Оператор: «= (Равно)»;
-
Тип поля 2: «Объектные значения» - «Справочное значение»;
-
Значение поля 2: Тип объекта - «Состояние объекта», объект – «Новый».
После заполнения полей в структуре дерева будет отображаться созданное условие.
В этом же узле OR добавьте еще одно условие, в котором атрибут «Состояние» будет равен «Утверждено» - для этого заполните поля аналогично предыдущему условия, но в качестве значения выберите «Утверждено».
Сохраните настройки в конструкторе фильтров с помощью кнопки «Ок» и вернитесь к настройкам реестра.
Перейдите на вкладку «Стили отображения» и активируйте переключатели напротив «Переносить слова в данных» и «Переносить слова в наименовании». В этой же вкладке ниже раскройте раздел «Другое» и в поле «Алгоритм стилизации» с помощью выпадающего списка дополнительных действий добавьте новый алгоритм.
В модальном окне появится редактор алгоритмов – он содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.
Создайте алгоритм «Алгоритм стилизации заявок в реестре» [REQ_STYLE_ALG], который будет подсвечивать зеленым новые заявки. Укажите в качестве базового типа объекта тип «Заявка».
Для реализации формулы алгоритма используйте функции:
Последовательно выполните следующие шаги:
-
В разделе «Логико-арифметические» вызовите функцию if;
-
В скобках в качестве условия укажите, что алгоритм будет выполняться, когда состояние заявки будет «Новый». Для этого в разделе «Источники» вызовите функцию attr и в модальном окне выберите «Состояние». С помощью клавиатуры введите знак равенства. В том же разделе «Источники» вызовите функцию dict, чтобы указать значение справочника – в качестве типа объекта выберите «Состояние объекта», в качестве объекта – «Новый»;
-
В теле условия вызовите функцию style:
-
Вы можете использовать готовые стили из справочника или создать свой собственный. Создайте собственный стиль, для этого для действия «Создать» выберите в выпадающем списке пункт «В новой вкладке», чтобы не прерывать создание алгоритма;
-
В появившемся модальном окне выберите тип стиля «Основной стиль форматирования» - после этого откроется новая вкладка, на которой можно создать новый стиль;
-
Создайте новый стиль «Новая заявка» и измените цвет фона. Сохраните созданный экземпляр с помощью кнопки на панели инструментов;
-
Вернитесь на вкладку настройки алгоритма и в модальном окне справочника стилей сначала обновите реестр объектов, а затем выберите созданный стиль «Новая заявка». После нажатия кнопки «Ок» стиль подставится в алгоритм;
-
Сохраните алгоритм. Сохраните настройки реестра «Заявки на канцтовары» для Сотрудника АХР и вернитесь к реестру по кнопке «Ок».
Настройка алгоритмов на визуале объектов типа «Заявка»
Создайте новую запись в реестре заявок и перейдите к настройке визуала с помощью кнопки на панели инструментов.
Настройте алгоритм постоянной блокировки для верхней группы атрибутов без названия для того, чтобы пользователи не могли изменить данные в полях атрибутов. Воспользуйтесь кнопкой на панели инструментов настройки чтобы назначить алгоритм блокировки. В появившемся модальном окне нажмите на кнопку «Создать новый».
В новом модальном окне создайте алгоритм «Блокировка true» [BLOCK_TRUE_ALG] и в поле ввода формулы вручную с клавиатуры введите значение true.
Сохраните изменения по кнопке «Сохранить» на панели элементов.
Настройка кнопки «Подать заявку»
Настройте кнопки для отправки заявки и сохранения изменений в ней.
Для кнопки «Подать заявку» перейдите к редактированию действия, для этого в поле «Действие» раскройте список дополнительных действий и выберите «Редактировать».
В разделе «Дополнительные параметры действия» нажмите на кнопку «Создать».
В открывшемся модальном окне можно произвести настройку выполнения алгоритма, а также указать сам алгоритм. В этом окне настроек заполните Наименование – «Параметры действия для алгоритма кнопки Подать заявку». С помощью кнопки дополнительных действий добавьте новый алгоритм.
Создайте алгоритм «Алгоритм для кнопки подать заявку» [BTN_SEND_REQ_ALG]. Укажите базовый Тип объекта «Заявка». Этот алгоритм будет запускать бизнес-процесс «Согласование заявки на канцтовары» по текущему объекту. Для реализации этого функционала предусмотрен системный тип объектов «ДО. Экземпляр запущенного процесса» – после создания объекта этого типа запускается бизнес-процесс.
Заполните поле формулы алгоритма:
Для реализации алгоритма воспользуйтесь следующими функциями:
Выполните следующие шаги, чтобы создать формулу:
Выполните следующие шаги чтобы создать формулу:
-
В разделе «Алгоритмы» с помощью функции var создайте новую переменную «start» - она будет хранить код объекта запущенного экземпляра бизнес-процесса;
-
Созданной переменной присвойте значение с помощью функции newInstance из раздела «Объекты». При выборе данной функции в открывшемся модальном окне выберите Тип объектов «ДО. Экземпляр запущенного процесса»;
-
Необходимо указать значения для атрибутов типа «ДО. Экземпляр запущенного процесса», чтобы запустить бизнес-процесс по текущему объекту, на котором была активирована кнопка «Подать заявку». Добавьте установку значения для атрибута «Объект». В разделе «Алгоритмы» вызовите функцию attrByVar, в появившемся окне активируйте переключатель «Установить значение», выберите переменную start и в списке атрибутов справа выберите атрибут «Объект», затем нажмите «Ок»;
-
После этого в поле ввода формулы появится новая строка. В скобках измените второй аргумент, который будет подставляться в новый объект: удалите значение null и замените его на атрибут Код базового типа объекта с помощью функции attr;
-
Добавьте установку значения для атрибута «Процесс», чтобы указать какой процесс должен выполняться. Аналогично шагу 3 вызовите функцию attrByVar, в появившемся окне выберите переменную start и в списке атрибутов справа выберите атрибут «Процесс», затем нажмите «Ок»;
-
После этого в поле ввода формулы появится новая строка. В скобках измените второй аргумент, который будет подставляться в новый объект: удалите значение null и замените его на значение созданного ранее бизнес-процесса. В разделе «Источники» с помощью функции dict вставьте объект из справочника «ДО. Бизнес процесс» – «Согласование заявки на канцтовары»;.
-
Добавьте установку значения для атрибута «Признак активности», чтобы запустить бизнес-процесс по текущему объекту. Аналогично 3 шагу вызовите функцию attrByVar, в появившемся окне выберите переменную start и в списке атрибутов справа выберите атрибут «Признак активности», затем нажмите «Ок»;
-
После этого в поле ввода формулы появится новая строка. В скобках измените второй аргумент, который будет подставляться в новый объект: удалите значение null с клавиатуры введите значение true, чтобы после окончания выполнения алгоритма бизнес-процесс был запущен;
-
Для сохранения созданного объекта в разделе «Объекты» вызовите функцию save. Укажите переменную start в скобках в качестве аргумента, для этого воспользуйтесь функцией var из раздела «Алгоритмы». В модальном окне выберите существующую переменную start;
-
Добавьте всплывающее сообщение об отправке заявки. В разделе «Сообщения» воспользуйтесь функцией sendPopUpMsg. В качестве первого параметра указывается тип сообщения, от которого зависит его оформление: укажите номер типа сообщения – «3». В качестве второго параметра укажите текст сообщения. Для этого в разделе «Текст» вызовите функцию text и в поле формулы алгоритма в кавычках введите с помощью клавиатуры текст: «Ваша заявка отправлена на рассмотрение».
Сохраните созданный алгоритм с помощью кнопки сохранения на панели управления. Выйдите из редактора алгоритма с помощью кнопки «Ок».
Так как в алгоритме сохраняется объект типа «ДО. Экземпляр запущенного процесса», необходимо настроить также сохранение объекта типа «Заявка». В окне настройки действия кнопки в разделе «Настройка сохранения объекта» активируйте переключатель «Сохранять объект» и укажите порядок сохранения – До выполнения алгоритма.
Сохраните настройки параметра для выполнения алгоритма и настройки действия кнопки.
На визуале есть возможность создавать алгоритмы видимости – алгоритмы, позволяющие скрывать отдельные элементы или целые группы в зависимости от условий.
Настройте алгоритм видимости для кнопки «Подать заявку».
Для этого раскройте панель настройки виджета и перейдите к настройке алгоритма видимости с помощью кнопки . В модальном окне создайте новый алгоритм.
Добавьте новый алгоритм видимости «Алгоритм видимости кнопки Подать заявку» [BTN_SEND_REQ_VIS_ALG], который будет показывать кнопку если состояние заявки – «Черновик» для того, чтобы пользователь мог только сохранить, но не отправлять на рассмотрение.
Заполните поле форму алгоритма.
Для реализации формула воспользуйтесь следующими функциями:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
В разделе «Логико-арифметические» вызовите функцию if;
-
В скобках в качестве условия укажите, что алгоритм будет выполняться, когда состояние заявки будет «Черновик». Для этого в разделе «Источники» вызовите функцию attr и в модальном окне выберите «Состояние». С помощью клавиатуры введите знак равенства. В том же разделе «Источники» вызовите функцию dict, чтобы указать значение справочника – в качестве типа объекта выберите «Состояние объекта», в качестве объекта – «Черновик»;
-
В операторах блока {} введите вручную значение true;
-
После блока операторов функции if вызовите функцию else, и в операторах блока {} укажите значение false.
Сохраните алгоритм и вернитесь к настройке визуального представления.
Настройте алгоритм блокировки для кнопки «Подать заявку». Для этого нажмите на кнопку настройки алгоритма блокировки на визуале настройки виджета, в появившемся окне нажмите на кнопку «Создать новый».
Создайте новый алгоритм «Алгоритм блокировки кнопки Подать заявку» [BTN_SEND_REQ_BLOCK_ALG], чтобы кнопка была заблокирована и нельзя было отправить заявку, если в заявке нет позиций, то есть атрибут «Позиции» не заполнен.
Заполните поле формулы алгоритма используя функции:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
В разделе «Логико-арифметические» вызовите функцию if;
-
Из этого же раздела в скобках в качестве условия вставьте функцию isNull, которая будет проверять наличие значения в указанном атрибуте;
-
Реализуйте проверку на наличие позиций в заявке. В качестве параметра функции isNull укажите атрибут «Позиции». Для этого в разделе «Источники» воспользуйтесь функцией attr – в модальном окне выберите атрибут «Позиции»;
-
Чтобы блокировать кнопку, если список позиций для заказа пуст, в операторах для выполнения с помощью клавиатуры укажите true.
Сохраните алгоритм и вернитесь к настройке визуального представления.
Настройка кнопки «Сохранить изменения»
Перейдите к редактированию действия кнопки «Сохранить изменения»: в появившемся окне в разделе «Дополнительные параметры действия» нажмите на кнопку «Создать».
В этом окне настроек заполните Наименование – «Параметры действия для алгоритма кнопки Сохранить изменения». С помощью кнопки дополнительных действий добавьте новый алгоритм.
Создайте алгоритм «Алгоритм для кнопки Сохранить изменения» [BTN_SAVE_CHANGES_ALG]. Укажите базовый Тип объекта «Заявка».
Заполните поле формулы алгоритма используя функции save и currentObject. Вызвав функцию save, укажите текущий объект с помощью функции currentObject;
Сохраните настройки алгоритма и действия кнопки. Сохраните визуал с помощью кнопки «Сохранить».
Настройте алгоритм видимости для кнопки «Сохранить изменения».
Создайте алгоритм «Алгоритм видимости кнопки Сохранить изменения» [BTN_SAVE_CHANGES_VIS_ALG]. Алгоритм будет показывать кнопку на визуале для Сотрудника-инициатора, только когда состояние объекта на бизнес-процессе будет «Пересматривается», и для Сотрудника АХР на этапе «Новый». То есть, когда заявка будет отправлена Сотруднику АХР для проверки наличия товара или Сотруднику-инициатору для внесения изменений в заказ.
Заполните поле формулы алгоритма.
Воспользуйтесь функциями:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
В разделе «Логико-арифметические» вызовите функцию if;
-
Установите условие, где состояние заявки должно быть «Пересматривается» И текущий пользователь не должен принадлежать группе доступа «Сотрудник АРХ» ИЛИ состояние заявки – «Новый». И текущий пользователь - «Сотрудник АХР»:
-
В разделе «Источники» воспользуйтесь функцией attr укажите атрибут Состояние;
-
Введите с помощью клавиатуры знак равенства;
-
В этом же разделе «Источники» воспользуйтесь функцией dict и укажите объект типа объектов «Состояние объекта» - «Пересматривается»;
-
Введите с помощью клавиатуры логический оператор and;
-
Введите с помощью клавиатуры логический оператор not;
-
В скобках оператора из раздела «Пользователи» вызовите функцию currentUserHasGroup, которая будет проверять группу доступа текущего пользователя. В скобках вместо group с помощью функции dict укажите объект «Группа доступа» - «Сотрудник АХР»;
-
Введите с помощью клавиатуры логический оператор or;
-
Повторите шаги 1-6 и заполните вторую часть условия, где состояние заявки – «Новый» И текущий пользователь - «Сотрудник АХР»;
-
-
В операторах блока {} введите вручную значение true;
-
После операторов блока {} функции if вызовите функцию else, и в операторах блока {} укажите значение false.
Сохраните алгоритм и вернитесь к настройке визуального представления.
Настройка кнопки «Отметить все»
Для отметки наличия всех товаров в заявке, настройте кнопку отметки всех позиций для Сотрудника АХР.
Для кнопки «Отметить все» перейдите к редактированию действия, раскрыв панель дополнительных действий поля «Действие» и выбрав «Редактировать». В появившемся окне в разделе «Дополнительные параметры действия» нажмите на кнопку «Создать».
В этом окне настроек заполните Наименование – «Параметры действия для алгоритма кнопки Отметить все». С помощью кнопки дополнительных действий добавьте новый алгоритм.
Создайте алгоритм «Алгоритм кнопки Отметить все» [BTN_MARK_ALL_ALG], укажите базовый Тип объекта – Заявка.
При нажатии на кнопку во всех добавленных позициях в атрибуте Наличие товара будет меняться значение на положительное, что будет обозначать, что товар в наличии.
Заполните поле формулы алгоритма.
Для этого воспользуйтесь функциями
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Чтобы реализовать прохождение алгоритма по позициям в заявке, в разделе «Алгоритмы» вызовите функцию цикла по коллекции forEach и в качестве коллекции укажите дочерний атрибут Позиции с помощью функции attr из раздела «Источники»;
-
В блоке операторов цикла укажите установку значения для атрибута Наличие товара коллекции, указанной в цикле – entry(содержит коллекцию объектов типа «Позиция в заявке»). В разделе «Алгоритмы» воспользуйтесь функцией attrByVar: в модальном окне активируйте переключатель «Установить значение» и выберите атрибут «Наличие товара» из списка. В поле ввода формулы алгоритма качестве устанавливаемого значения, то есть второго аргумента функции, вместо null введите с клавиатуры true;
-
Вставьте функцию save, в качестве параметра вызовите функцию var и выберите переменную entry.
Сохраните алгоритм и в окне настроек действия кнопки в разделе «Настройка сохранения объекта» активируйте переключатель «Сохранять объект» и выберите сохранение после выполнения алгоритма, чтобы сохранялись не только записи в атрибуте «Позиции», но и весь объект типа «Заявка» целиком.
Настройте алгоритм видимости для кнопки «Отметить все», который затем будет необходимо назначить подсказке. Создайте алгоритм видимости для кнопки «Видимость кнопки и подсказки для сотрудника АХР» [BTN_HINT_VIS_ALG], который будет делать видимым кнопку и подсказку, когда состояние объекта «Новый» и текущий пользователь — это Сотрудник АХР, а в остальных случаях – кнопка и подсказка будет не видна.
Заполните формулу алгоритма:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
В разделе «Логико-арифметические» вызовите функцию if;
-
В качестве условия укажите, что Состояние заявки должно быть «Новый» И текущий пользователь – «Сотрудник АХР»:
-
В разделе «Источники» с помощью функции attr вставьте атрибут Состояние;
-
Введите с клавиатуры знак равенства;
-
В этом же разделе с помощью функции dict вставьте элемент типа объекта «Состояние объекта» – «Новый»;
-
Вставьте логическое И с помощью функции and;
-
В группе «Пользователи» вызовите функцию currentUserHasGroup, в качестве параметра вместо текста group вставьте объект типа «Группа доступа» – «Сотрудник АХР» с помощью функции dict;
-
-
В операторах блока {} введите вручную значение true;
-
После операторов блока {} функции if вызовите функцию else, и в операторах блока {} укажите значение false.
Сохраните алгоритм и настройки визуала.
Настройка подсказки
Настройте подсказку для кнопки «Отметить все», которую будет видеть Сотрудник АХР при работе с заявкой. Перейдите к настройке виджета с помощью соответствующей кнопки
Создайте алгоритм «Текст подсказки для сотрудника АХР» [HINT_TEXT_ALG]. Для этого нажмите на кнопку «Создать алгоритм», а в модальном окне «Создать новый».
Заполните формулу алгоритма с помощью функции text, в кавычках введите следующий текст:
«Отметьте какие товары в наличии и отправьте сотруднику на доработку, выбрав соответствующее решение в карточке задачи. Если всех товаров нет в наличии, ничего не отмечайте, в задаче выберите соответствующее действие».
В окне настройки подсказки оставьте тип подсказки – Информационная, деактивируйте чек-бокс «Можно закрыть» и активируйте чек-бокс «Отображать полностью». Сохраните настройки подсказки с помощью кнопки «Ок».
Настройте алгоритм видимости для подсказки: в окне настроек выберите из раскрывающегося списка алгоритм «Видимость кнопки и подсказки для сотрудника АХР». Сохраните изменения.
Настройка алгоритма видимости содержимого вкладки «Документы»
Настройте алгоритм видимости виджета прикрепления файлов, расположенного на вкладке Документы. Для этого перейдите во вкладку «Документы» и настройте алгоритм видимости для виджета «Прикрепленные файлы». Создайте новый алгоритм «Алгоритм видимости прикрепленных файлов» [DOC_VIS_ALG], который будет показывать виджет на этапах «Утверждено» и «Архив», на остальных этапах будет скрыт.
Заполните поле формулы алгоритма.
Для этого воспользуйтесь функциями:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Вызовите функцию if, в выражении вставьте атрибут Состояние с помощью функции attr;
-
Введите с клавиатуры знак равенства и вставьте значение «Утверждено», используя функцию dict;
-
Воспользуйтесь функцией or для обозначения логического ИЛИ, а затем добавьте приравнивание атрибута Состояние к значению «Архив», используя функцию dict;
-
В операторах блока {} введите вручную значение true;
-
После операторов блока {} функции if вызовите функцию else, и в операторах блока {} укажите значение false.
Сохраните алгоритм и вернитесь к настройке визуального представления.
Настройка алгоритма блокировки атрибута «Позиции»
Вернитесь на вкладку «Заказ» и настройте алгоритм блокировки атрибута «Позиции». Для этого раскройте панель настроек атрибута и выберите «Алгоритм блокировки», в появившемся модальном окне создайте новый алгоритм по кнопке «Создать новый».
Создайте алгоритм «Алгоритм блокировки атрибута Позиции» [ATTR_ORDER_BLOCK_ALG]. Алгоритм будет проверять группу доступа, в которой находится текущий пользователь, и состояние заявки на бизнес-процессе. Для пользователей на этапе «Пересматривается» или «Черновик», то есть во время работы над заявкой, блокировки не будет, на всех остальных этапах атрибут будет заблокирован. Для сотрудника АХР на этапе «Новый» атрибут не будет заблокирован, чтобы была возможность внести изменения о наличии товара.
Заполните поле формулы алгоритма.
Для этого воспользуйтесь функциями:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Вызовите функцию if, в условии проведите проверку на группу доступа «Сотрудник АХР» с помощью функции currentUserHasGroup, в качестве параметра вместо текста group вставьте объект типа «Группа доступа» – «Сотрудник АХР» с помощью функции dict;
-
В блоке операторов для выполнения вызовите функцию if, в качестве условия вставьте проверку на состояние объекта: «Новый»;
-
В блоке операторов для выполнения вложенного условия укажите false, чтобы поле не блокировалось при выполнении условий;
-
Для вложенного условия после операторов блока {} функции if вызовите функцию else, и в операторах блока {} укажите значение true;
-
Для основного условия после операторов блока {} функции if вызовите функцию else if, в условии проведите проверку на то, что пользователь не принадлежит группе доступа «Сотрудник АХР» с помощью функций not, currentUserHasGroup и dict;
-
В блоке операторов для выполнения вызовите функцию if, в качестве условия вставьте проверку на состояние объекта: «Пересматривается» или «Черновик»;
-
В блоке операторов для выполнения вложенного условия укажите false, чтобы поле не блокировалось при выполнении условий.
Сохраните настройки визуала объекта типа «Заявка» с помощью кнопки «Ок» на панели элементов.
Настройка алгоритмов на визуале объектов типа «Позиция в заявке»
Настройте алгоритм блокировки для атрибутов типа объектов «Позиции в заявке» на визуале типа «Заявка». Создайте экземпляр в реестре атрибута «Позиции». В появившемся окне перейдите к режиму настройки визуала.
Создайте алгоритм блокировки для атрибутов Товар и Количество. Для этого раскройте панель настройки атрибута и перейдите к настройке алгоритма блокировки. В появившемся окне нажмите на кнопку «Создать новый».
Добавьте новый алгоритм «Алгоритм блокировки Товар и Количество» [ITEM_NUM_BLOCK_ALG], который будет блокировать поля если заявка имеет статус отличный от «Пересматривается» или «Черновик», а также если пользователь – Сотрудник АХР.
Заполните поле формулы алгоритма.
Для этого воспользуйтесь функциями:
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Вызовите функцию if, в качестве условия вставьте проверку на состояние объекта «Пересматривается» или «Черновик»:
-
В разделе «Источники» вызовите функцию attr и выберите цепочечный атрибут «Состояние» от объектного атрибута «Заявка»;
-
Введите с помощью клавиатуры знак равенства;
-
В том же разделе выберите функцию dict и укажите объект справочника «Состояние объекта» - «Пересматривается»;
-
Введите с помощью клавиатуры логический оператор or;
-
Повторите шаг 1-3 и вставьте проверку на состояние объекта «Черновик»;
-
-
В блоке операторов для выполнения вложенного условия укажите false, чтобы поле не блокировалось при выполнении условий;
-
Добавьте дополнительное условие для главной функции с помощью else if. В качестве условия вставьте проверку на группу доступа «Сотрудник АХР» с помощью функций currentUserHasGroup и dict.
-
В поле операторов укажите true, чтобы блокировать поле атрибута.
Сохраните алгоритм и для атрибута Количество назначьте этот же алгоритм. Сохраните изменения на визуале с помощью кнопки «Сохранить» на панели элементов.
Создайте алгоритм блокировки «Алгоритм блокировки атрибута наличия» [ITEM_BLOCK_ALG] для атрибута «Наличие товара». Алгоритм будет проверять группу доступа, в которой находится текущий пользователь, и состояние заявки на бизнес-процессе. Для сотрудника АХР на этапе «Новый» атрибут не будет заблокирован, чтобы у пользователя была возможность внести изменения о наличии товара.
Заполните поле формулы алгоритма.
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Вызовите функцию if, в качестве условия вставьте проверку на группу доступа «Сотрудник АХР» с помощью функции currentUserHasGroup, в качестве параметра вместо текста group вставьте объект типа «Группа доступа» – «Сотрудник АХР» с помощью функции dict;
-
В поле операторов выполнения вызовите еще функцию if и задайте условие для состояния заявки – «Новый», с помощью функций attr и dict;
-
В блоке операторов для выполнения вложенного условия укажите false, чтобы поле не блокировалось при выполнении условий;
-
Для вложенного условия добавьте функцию else, в поле операторов выполнения которой впишите true;
-
Добавьте функцию else и в поле операторов укажите true, чтобы блокировать атрибут.
Сохраните алгоритм и настройки визуала объекта типа «Позиция в заявке».