Клиентский алгоритм изменения в расчетной подчиненной таблице
Алгоритм служит для обработки события изменения в расчетной подчиненной таблице журнала. Ссылка на алгоритм задается в менеджере настроек отображения.
Параметры алгоритма:
ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; СТРОКА: вариант; ПЕРЕМ <ТИП>: оп; ЦЕЛОЕ: строка; ПЕРЕМ СТРОКА: рез) // … КОНЕЦ
- контекст - входной параметр. Имя журнала + имя режима настроек.
- вариант - входной параметр. Имя варианта подчиненной таблицы в менеджере настроек отображения.
- оп - входной параметр. Операция, к которой относится расчетная таблица. Вместо идентификатора <ТИП> задается: для типовых операций - имя типа операции, одного из родительских типов или ОПЕРАЦИЯ, для ручных операций - ОПЕРАЦИЯ.
- стр - входной и выходной параметр. Номер строки в расчетной таблице. Используя это значение, можно сохранить строку "на прежнее место" в таблице или изменить ее порядковый номер.
- рез - выходной параметр. Результат выполнения алгоритма.
Алгоритм может возвращать три строковых значения результата: OK, CANCEL и CONTINUE.
- OK - событие изменения обработано алгоритмом, дальнейшей обработки не происходит. В этом случае алгоритм сам должен отвечать за изменение значений.
- CONTINUE - управление обработкой события передается платформе. Алгоритм отвечает за вызов диалога, а платформа - непосредственно за изменение данных.
- CANCEL - алгоритм отменяет событие, операция не будет сохранена в базу данных.
Примечание В платформе не предусмотрено стандартного механизма обработки событий в расчетной таблице, поэтому "CONTINUE" для нее эквивалентно "OK".
Пример
Пример иллюстрирует использование алгоритма изменения в расчетной подчиненной таблице. В ходе работы алгоритма происходит вызов диалогового окна для редактирования значений колонок табличного признака, на основе которого формируется расчетная таблица. В качестве колонок табличного признака "товары" выступают код соответствующего объекта аналитики, количество и цена .
В настройке отображения в узле "Изменение" для расчетной подчиненной таблицы задается ссылка на алгоритм редактирования.
ТИП ДобПризн(ДИАЛОГ)
[
ВВОД_ЦЕЛОГО: Ввод_целого1 = [
левый = 145,
верхний = 40,
ширина = 150,
высота = 20,
табиндекс = 1 ];
ТЕКСТ: Текст1 = [
левый = 30,
верхний = 45,
ширина = 100,
высота = 20,
текст = "количество" ];
КНОПКА: Кнопка2 = [
левый = 190,
верхний = 160,
ширина = 85,
высота = 30,
табиндекс = 4,
текст = "Отмена",
нажатие = {наж_отмена} ];
КНОПКА: Кнопка1 = [
левый = 85,
верхний = 160,
ширина = 85,
высота = 30,
табиндекс = 3,
текст = "OK",
нажатие = {наж_ок} ];
ВВОД_ЧИСЛА: Ввод_числа1 = [
левый = 225,
верхний = 105,
ширина = 115,
высота = 20,
табиндекс = 7 ];
ТЕКСТ: Текст5 = [
левый = 30,
верхний = 110,
ширина = 105,
высота = 15,
текст = "Цена" ];
ВВОД_КОДА: Ввод_кода1 = [
левый = 230,
верхний = 75,
ширина = 110,
высота = 20,
табиндекс = 5 ];
ТЕКСТ: Текст3 = [
левый = 30,
верхний = 80,
ширина = 180,
высота = 15,
текст = "Код товара" ];
ФУНКЦИЯ наж_ок(ПЕРЕМ КНОПКА: кнопка)
ЗАКРЫТЬ("OK")
КОНЕЦ_ФУНКЦИИ
ФУНКЦИЯ наж_отмена(ПЕРЕМ КНОПКА: кнопка)
ЗАКРЫТЬ("")
КОНЕЦ_ФУНКЦИИ
]
ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; // вход
СТРОКА: вариант; // вход
ПЕРЕМ ОПЕРАЦИЯ: оп; // вход
ЦЕЛОЕ: строка; // вход
ПЕРЕМ СТРОКА: рез) // выход
ПЕРЕМ ДобПризн: длг
ПЕРЕМ ССЫЛКА: ссл
ПЕРЕМ ЦЕЛОЕ: стр
ПЕРЕМ ЦЕЛОЕ: кол
ссл = оп.таб_признаки["товары"].ячейки[строка, "код"]
длг.Ввод_кода1.текст = ссл.код
длг.Ввод_целого1.значение = оп.таб_признаки["товары"].ячейки[строка, "количество"]
длг.Ввод_числа1.значение = оп.таб_признаки["товары"].ячейки[строка, "цена"]
ЕСЛИ длг.ПОКАЗАТЬ_МОДАЛЬНЫЙ = "OK" ТО
ссл.код= длг.Ввод_кода1.текст
оп.таб_признаки["товары"].ячейки[строка, "код"] = ссл
оп.таб_признаки["товары"].ячейки[строка, "количество"] = длг.Ввод_целого1.значение
оп.таб_признаки["товары"].ячейки[строка, "цена"] = длг.Ввод_числа1.значение
рез = "OK"
ИНАЧЕ
рез = "CANCEL"
КОНЕЦ_ЕСЛИ
КОНЕЦ