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

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

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

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

ВЫЧИСЛИТЬ (ПЕРЕМ АНАЛИТ_КОНТЕКСТ: контекст;  
           ПЕРЕМ <T>: объект; 
           ПЕРЕМ ПРАВА_ДОСТУПА: права_доступа; 
           ПЕРЕМ МОДИФ_ПАРАМ: мп; 
           ПЕРЕМ ПУБЛ_ПАРАМ: публ; 
           ПЕРЕМ СТРОКА: рез)
// ...
КОНЕЦ 

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

Коды навигации NEXT, PREV, FIRST, LAST возвращаются при активации редактирования следующего, предыдущего, первого и последнего объектов аналитики в списке с сохранением изменений в текущем объекте аналитики. Если редактирование объекта аналитики невозможно или в списке объектов больше нет объектов аналитики, то коды NEXT и PREV эквивалентны коду OK.

К примеру при указании сочетания кодов OK,PREV после добавления нового объекта аналитики будет вызвано окно для редактирования предыдущего объекта аналитики.

Существует код возврата CLOSE, который возвращается при закрытии родительского диалога, из которого был вызван диалог добавления, и самого диалога добавления. Данный код возврата имеет более высокий приоритет, чем у кодов навигации, то есть он подавляет команды NEXT, PREV, FIRST, LAST.

Пример

Пример иллюстрирует использование алгоритма добавления, который вызывает диалог для ввода кода, названия и значений свойств объекта ветки "ТОВАРЫ".

В Настройке отображения указывается ссылка на алгоритм для ветки "ТОВАРЫ" в узле "Добавление".

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

ТИП ДобОбъект(ДИАЛОГ)
[
  СТРОКА: заголовок = "Добавление объекта в ветку Товары";
  ЧИСЛО: ширина = 355;
  ЧИСЛО: высота = 242;
  ЧИСЛО: верхний = 94;

  КНОПКА: кн_отмена = [ левый = 280,
    верхний = 205,
    высота = 25,
    ширина = 65,
    табиндекс = 6,
    текст = "Отмена",
    нажатие = отмена_нажатие ];

  КНОПКА: кн_ок = [ 
    левый = 200,
    верхний =205,
    высота = 25,
    ширина = 65,
    табиндекс = 5,
    доступный = НЕТ,
    текст = "Ок",
    нажатие = ок_нажатие ];

  ТЕКСТ: Текст2 = [ левый = 15,
    верхний = 50,
    высота = 25,
    ширина = 65,
    табиндекс = 4,
    текст = "Название:" ];
	
  РЕДАКТОР: ред_название = [ левый = 90,
    верхний = 50,
    высота = 25,
    ширина = 200,
    табиндекс = 2 ];

  ТЕКСТ: Текст1 = [ левый = 15,
    верхний = 15,
    высота = 25,
    ширина = 35,
    табиндекс = 3,
    текст = "Код:" ];

  РЕДАКТОР: ред_код = [ левый = 90,
    верхний = 15,
    высота = 25,
    ширина = 120,
    табиндекс = 1,
    изменение = код_изменение ];

  ТЕКСТ: Текст3 = [ 
    левый = 20,
    верхний = 90,
    ширина = 35,
    высота = 25,
    табиндекс = 3,
    текст = "Цена:" ];

  ВВОД_ЧИСЛА: Ввод_числа1 = [ 
    левый = 90,
    верхний = 90,
    ширина = 145,
    высота = 25,
    табиндекс = 7 ];

  ТЕКСТ: Текст4 = [ 
    левый = 10,
    верхний = 135,
    ширина = 125,
    высота = 25,
    табиндекс = 3,
    текст = "Страна производитель:" ];

  РЕДАКТОР: ред_страна = [ 
    левый = 145,
    верхний = 130,
    ширина = 120,
    высота = 25,
    табиндекс = 1 ];

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

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

  ФУНКЦИЯ код_изменение(ПЕРЕМ РЕДАКТОР: ред)
    ЕСЛИ ред.текст <> "" ТО
      кн_ок.доступный = ДА
      ОБНОВИТЬ
    ИНАЧЕ
      кн_ок.доступный = НЕТ
      ОБНОВИТЬ
    КОНЕЦ_ЕСЛИ
   КОНЕЦ_ФУНКЦИИ

]

ВЫЧИСЛИТЬ(ПЕРЕМ АНАЛИТ_КОНТЕКСТ: контекст; // вход
          ПЕРЕМ АНАЛИТИКА: об;             // вход/выход
          ПЕРЕМ ПРАВА_ДОСТУПА: права;      // вход/выход
          ПЕРЕМ МОДИФ_ПАРАМ: парам;        // вход/выход
          ПЕРЕМ ПУБЛ_ПАРАМ: публ;          // вход/выход
          ПЕРЕМ СТРОКА: рез)               // вход/выход

  // OK - CANCEL - CONTINUE
  ПЕРЕМ ДобОбъект: длг;
  ЕСЛИ длг.ПОКАЗАТЬ_МОДАЛЬНЫЙ = "OK" ТО
    об._код = контекст.корень + "/" + длг.ред_код.текст
    об._название = длг.ред_название.текст
    об._свойства["цена"].значение = длг.Ввод_числа1.значение
    об._свойства["страна"].значение = длг.ред_страна.текст
    рез = "OK"
 ИНАЧЕ
    рез = "CANCEL"
  КОНЕЦ_ЕСЛИ
КОНЕЦ

См. также: