Алгоритм доступности действий для проводок в контексте операции
Алгоритм определяет доступность действий (пунктов меню и кнопок на панели инструментов) для строк подчиненной таблицы проводок. В отличие от алгоритма доступности действий, который вызывается в контексте типа операции, этот алгоритм может определять доступность действий в зависимости от конкретной выбранной операции и от строки в таблице. Алгоритм вызывается каждый раз при перемещении курсора на другую строку в таблице. Ссылка на алгоритм задается в менеджере настроек отображения.
Параметры алгоритма:
ВЫЧИСЛИТЬ (ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; СТРОКА: вариант; ПЕРЕМ <ТИП>: оп; ЧИСЛО: стр; ПЕРЕМ ЛКФ_ДЕЙСТВИЯ: д) // ... КОНЕЦ
- контекст - входной параметр. Имя журнала + имя режима настроек.
- вариант - входной параметр. Имя варианта подчиненной таблицы.
- оп - входной параметр. Текущая выбранная операция. Алгоритм не должен ее изменять. Вместо идентификатора <ТИП> задается имя типа операции, имя одного из родительских типов или ОПЕРАЦИЯ. Для ручных операций используется тип ОПЕРАЦИЯ. .
- д - выходной параметр. Разрешения действий. Каждому идентификатору действия ставится в соответствие одно из состояний: доступно, запрещено или спрятано.
Пример
Пример иллюстрирует использование алгоритма доступности действий для проводок в контексте операции. В контекстном меню для проводки с ненулевым количеством действие удаления будет спрятано.
В настройке отображения в узле "Доступность действий" задается ссылка на алгоритм. В Редакторе меню для пункта контекстного меню "удаление" нужно задать идентификатор "удаление".
ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; // вход СТРОКА: вариант; // вход ПЕРЕМ списание: оп; // вход ЦЕЛОЕ: строка; // вход ПЕРЕМ ЛКФ_ДЕЙСТВИЯ: действия) // выход ЕСЛИ оп.проводки[строка].количество <> 0 ТО действия.идент["удаление"] = ЛКФ_СД_СПРЯТАНО ИНАЧЕ действия.идент["удаление"] = ЛКФ_СД_ДОСТУПНО КОНЕЦ_ЕСЛИ КОНЕЦ