Справка Инфо-Бухгалтер 10

Клиентский алгоритм изменения в расчетной подчиненной таблице

Алгоритм служит для обработки события изменения в расчетной подчиненной таблице журнала. Ссылка на алгоритм задается в менеджере настроек отображения.

Параметры алгоритма:

ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст;
          СТРОКА: вариант;
          ПЕРЕМ <ТИП>: оп;
          ЦЕЛОЕ: строка;
          ПЕРЕМ СТРОКА: рез)
// …
КОНЕЦ

Алгоритм может возвращать три строковых значения результата: OK, CANCEL и CONTINUE.

Пример

Пример иллюстрирует использование алгоритма изменения в расчетной подчиненной таблице. В ходе работы алгоритма происходит вызов диалогового окна для редактирования значений колонок табличного признака, на основе которого формируется расчетная таблица. В качестве колонок табличного признака "товары" выступают код соответствующего объекта аналитики, количество и цена .

В настройке отображения в узле "Изменение" для расчетной подчиненной таблицы задается ссылка на алгоритм редактирования.

Показатьподробное объявление типов для диалогового окна

ТИП ДобПризн(ДИАЛОГ)
[
  ВВОД_ЦЕЛОГО: Ввод_целого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"
  КОНЕЦ_ЕСЛИ
КОНЕЦ

См. также: