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

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

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

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

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

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

Пример

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

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

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

ТИП ДобПров(ДИАЛОГ)
[
  ТЕКСТ: Текст4 = [ 
    левый = 25,
    верхний = 60,
    ширина = 305,
    высота = 20,
    текст = "контрагент_получатель=Intex" ];

  ТЕКСТ: Текст3 = [ 
    левый = 25,
    верхний = 125,
    ширина = 50,
    высота = 20,
    текст = "Сумма:" ];

  ТЕКСТ: Текст2 = [
    левый = 25,
    верхний = 90,
    ширина = 130,
    высота = 20,
    текст = "контрагент_отправитель" ];

  ТЕКСТ: Текст1 = [ 
    левый = 25,
    верхний = 30,
    высота = 20,
    ширина = 80,
    текст = "Вид операции:" ];

  ЧИСЛО: ширина = 431;
  ЧИСЛО: высота = 192;
  ЧИСЛО: верхний = 157;
  ЧИСЛО: левый = 186;
  СТРОКА: заголовок="Изменение проводки";
  
  КНОПКА: кн_Отмена = [ 
    левый = 330,
    верхний = 150,
    высота = 25,
    ширина = 80,
    табиндекс = 5,
    текст = "Отмена",
    нажатие = наж_отмена ];
  
  КНОПКА: кн_Ок = [ левый = 245,
    верхний = 150,
    высота = 25,
    ширина = 80,
    табиндекс = 4,
    текст = "Ок",
    нажатие = наж_ок ];

  ВВОД_ЧИСЛА: Ввод_числа1 = [ 
    левый = 110,
    верхний = 125,
    ширина = 85,
    высота = 20,
    табиндекс = 3 ];

  ВВОД_КОДА: Ввод_кода1 = [ 
    левый = 185,
    верхний = 90,
    ширина = 205,
    высота = 20,
    табиндекс = 2 ];

  КОМБОСПИСОК: Комбосписок1 = [ левый = 110,
    верхний = 30,
    высота = 21,
    ширина = 215,
    табиндекс = 1,
    текст = "1",
    выбор = 1,
    изменение = ВыбралиВариант ,
    элементы = ("приход", "расход")];

  ФУНКЦИЯ ВыбралиВариант(ПЕРЕМ КОМБОСПИСОК: список )
    ВЫБОР(СТР(список.выбор))
      #"1":
        Текст2.текст = "контрагент_отправитель"
        Текст4.текст = "контрагент_получатель=Intex"
      #"2":
        Текст4.текст = "контрагент_отправитель=Intex"
        Текст2.текст = "контрагент_получатель"
    КОНЕЦ_ВЫБОРА
    ОБНОВИТЬ
  КОНЕЦ_ФУНКЦИИ

  ФУНКЦИЯ наж_ок(ПЕРЕМ КНОПКА: кнопка)
    ЗАКРЫТЬ("OK")
  КОНЕЦ_ФУНКЦИИ

  ФУНКЦИЯ наж_отмена(ПЕРЕМ КНОПКА: кнопка)
    ЗАКРЫТЬ("")
  КОНЕЦ_ФУНКЦИИ
]

КОНСТ НашаОрг = "ОРГАНИЗАЦИЯ/СПР/Intex";
КОНСТ ЕдИзм = "ВАЛ/USD";

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

  ПЕРЕМ ДобПров: длг
  ПЕРЕМ ПРОВОДКА: пров
  пров = оп.проводки[стр]
  ЕСЛИ пров.дебет.код = НашаОрг ТО
    длг.Ввод_кода1.текст = пров.кредит.код
    длг.Комбосписок1.выбор = 1
    длг.Ввод_числа1.значение = пров.количество
  ИНАЧЕ
    длг.Ввод_кода1.текст = пров.дебет.код
    длг.Комбосписок1.выбор = 2
    длг.Ввод_числа1.значение = пров.количество
  КОНЕЦ_ЕСЛИ
 
  ЕСЛИ длг.ПОКАЗАТЬ_МОДАЛЬНЫЙ = "OK" ТО
    ПЕРЕМ элемент = СТР(длг.Комбосписок1.выбор)
    пров.дебет.свойства = ()
    пров.кредит.свойства = ()
    ВЫБОР(элемент)
      #"1":
        пров.дебет.код = НашаОрг
        пров.дебет.СЧИТАТЬ
        пров.кредит.код = длг.Ввод_кода1.текст
        пров.единицы.код = ЕдИзм
        пров.количество = длг.Ввод_числа1.значение
        оп.проводки[стр] = пров
        рез = "OK"
      #"2":
        пров.дебет.код = длг.Ввод_кода1.текст
        пров.дебет.СЧИТАТЬ
        пров.кредит.код = НашаОрг
        пров.кредит.СЧИТАТЬ
        пров.единицы.код = ЕдИзм
        пров.количество = длг.Ввод_числа1.значение
        оп.проводки[стр] = пров
        рез = "OK"
    КОНЕЦ_ВЫБОРА
  ИНАЧЕ
    рез = "CANCEL"
  КОНЕЦ_ЕСЛИ
 КОНЕЦ

См. также: