23. Работа с алгоритмами в табличных частях

Работа с табличными частями и алгоритмами

Для просмотра процесса «Выполнить проверку заказа» и алгоритма «Цена по таблице»:

  1. В окне «Шаблоны процессов» выбрать процесс «Проверить заказ».
  2. Откроется диалоговое окно «Проверить заказ (Шаблоны процессов)». Перейти в раздел «Схема».
  3. Нажать на задачу «Выполнить проверку заказа».
  4. Откроется диалоговое окно «Выполнить проверку заказа (События)». Перейти на вкладку «Заполнение».
  5. В графе «Алгоритм», в строке с текстом «Цена по таблице», нажать на значок с двумя квадратиками в конце строки.
  6. Откроется диалоговое окно «Цена по таблице (Алгоритмы)». Перейти на вкладку «Алгоритм».
  7. Для раскрытия подсказки нажать на зеленый значок «больше» рядом с текстом «Подсказка».
Рис.1. Процесс «Проверить заказ»
Рис.2. Схема процесса «Проверить заказ»
Рис.3. Заполнение задачи «Выполнить проверку заказа»
Рис.4. Пример алгоритма «Цена по таблице»

Пример алгоритма «Цена по таблице»

В табличной части (Рис. 3) имеется реквизит «Цена». Реквизит «Цена» нужно заполнить с помощью алгоритма на основании реквизита табличной части «Документы».

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

В алгоритме используется переменная «Контекст.ТекущееЗначение» (Рис.4). Этой переменной будет передана вся правая часть таблицы, то есть значения элемента.

В правой части значения элемента выбран путь к цене из табличной части (Товары,работы,услуги) из «Заказа покупателя». Таким образом в реквизите «Контекст.ТекущееЗначение» будет массив, на каждом индексе которого находится значение из соответствующей строки табличной части.

Например, нулевой элемент массива будет соответствовать строке табличной части под номером 1 и так далее. То есть индексы в массиве и индексы в табличной части получаются одинаковые. Данный алгоритм работает для заполнения из таблицы в таблицу.

Данные по табличным частям являются массивами и записываются в структуру, которая называется «Набор записей регистра сведений значения реквизитов объектов».
Реквизит «Контекст.ТекущийОбъект» — это не задача, а набор записей регистра сведений значения реквизитов объектов.

В «Отбор» и «Значение» табличной части установлена ссылка на текущую задачу (ЗадачаСсылка = Контекст.ТекущийОбъект.Отбор.Объект.Значение).

Алгоритм решается за два прохода. Необходимо проверить заполнение объекта задачи, то есть набор записей регистра сведений.

В первом проходе объект задачи не заполнен и содержит пустую ссылку на зарезервированный объект. (Если НЕ ЗадачаСсылка.ПолучитьОбъект() = Неопределено).

Если объект задачи заполнен, определяется количество строк в табличной части (МаксИндекс = Контекст.ТекущееЗначение.ВГраница()) и заполняется значение по формуле. Строк будет столько, сколько элементов в массиве. В примере (Рис.3) 4 строки.

В переменную «Запасы заказа» получаем табличную часть из бизнес-процесса, из инициатора, который запустил бизнес-процесс (ЗапасыЗаказа = ЗадачаСсылка.БизнесПроцесс.Инициатор.Запасы). Запасы – это имя в конфигураторе, синоним (Товары, работы, услуги).

Затем для каждого индекса в текущий массив заносятся значения по формуле «Цена равно сумма делить на количество» (Контекст.ТекущееЗначение[ТекИндекс] = ЗапасыЗаказа[ТекИндекс]. Сумма/ЗапасыЗаказа[ТекИндекс].Количество).

Проверка алгоритма

Для проверки алгоритма «Цена по таблице»:

  1. В окне «Цена по таблице (Алгоритмы)» вкладка «Алгоритмы» дописать в формуле Контекст.ТекущееЗначение[ТекИндекс] = ЗапасыЗаказа[ТекИндекс]. Сумма/ЗапасыЗаказа[ТекИндекс]. Количество – 1.
  2. Нажать на кнопку «Записать и закрыть» в трех окнах последовательно.
  3. Нажать в левой части окна под панелью разделов текст «Заказы покупателей».
  4. Создать новый заказ копированием.
  5. Откроется диалоговое окно «Заказ покупателя (Создание)». Нажать на кнопку «Провести». Бизнес-процесс запускается автоматически.
  6. Откроется диалоговое окно «Выполнить проверку заказа». Если цены отличаются на единицу от того, что выбрано в документе, то алгоритм работает.
Рис.5. Пример проверки алгоритма «Цена по таблице».
Рис.6. Создание нового заказа
Рис.7. Проводка нового заказа
Рис.8. Проверка заказа

Важно вернуть значение в формуле алгоритма к первоначальному состоянию, для этого в окне «Цена по таблице (Алгоритмы)» вкладка «Алгоритмы» убрать -1 в формуле Контекст.ТекущееЗначение[ТекИндекс]=ЗапасыЗаказа[ТекИндекс]. Сумма/ ЗапасыЗаказа[ТекИндекс]. Количество.

Оцените статью