Клиентский алгоритм изменения в таблице проводок
Алгоритм служит для обработки события изменения в подчиненной таблице проводок журнала. Ссылка на алгоритм задается в менеджере настроек отображения.
Параметры алгоритма:
ВЫЧИСЛИТЬ (ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; СТРОКА: вариант; ПЕРЕМ <ТИП>: оп; ЧИСЛО: стр; ПЕРЕМ СТРОКА: рез) // … КОНЕЦ
- контекст - входной параметр. Имя журнала + имя режима настроек.
- вариант - входной параметр. Имя варианта подчиненной таблицы в менеджере настроек отображения.
- стр - входной и выходной параметр. Номер строки в таблице проводок. Используя это значение, можно сохранить проводкку "на прежнее место" или изменить ее порядковый номер в таблице проводок.
- оп - входной параметр. Операция, к которой относятся проводки. Вместо идентификатора <ТИП> задается: для типовых операций - имя типа операции, одного из родительских типов или ОПЕРАЦИЯ, для ручных операций - ОПЕРАЦИЯ.
- рез - выходной параметр. Результат выполнения алгоритма.
Алгоритм может возвращать строковые значения результата: OK, CANCEL, CONTINUE.
- 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"
КОНЕЦ_ЕСЛИ
КОНЕЦ