Руководство разработчика

Строка добавления в таблице

Как и редактируемые отчеты, таблица тоже имеет строку добавления с изображением "+". По умолчанию строка добавления всегда находится внизу таблицы. За наличие строки добавления в нижней части таблицы отвечает поле стр_доб объектного типа ТАБЛИЦА. Изображение "+" в строке добавления отображается, если в таблице есть хотя бы один фиксированный столбец. При нажатии в строке добавления на это изображение вызывается обработчик команда со строковым кодом "+".

В примере ниже реализована работа строки добавления. При нажатии на строку добавления в таблице добавляются новые строки с данными.

Пример

ТИП Товары
[
  СТРОКА: название;
  ЧИСЛО: цена;
  СТРОКА: производитель;
  
  ФУНКЦИЯ Заполнение(ЦЕЛОЕ: номер)
    название = "ТОВАР_" + СТР(номер)
    цена = СЛУЧ_ЧИСЛО(500)
    производитель = "Производитель_" + СТР(номер)
  КОНЕЦ_ФУНКЦИИ
]

ТИП Диалог_таб(ДИАЛОГ)
[
  ...
  ПОДМЕНА до_открытия = {Подготовка_данных};
  Товары: товар[]; 
  ТАБЛИЦА: Таблица1 = [ левый = 35,
                        верхний = 20,
                        ширина = 295,
                        высота = 165,
                        табиндекс = 1003,
                        кол_фикс_столбцов = 1,
                        ...
                        столбцы = ( 76,
                                    50,
                                    105 ),
                        строки = ( 1: 20,
                                   3: 20,
                                   4: 20 ),
                        элементы = ( 1, 1: "номер",
                                     2, 1: "наименование",
                                     3, 1: "Производитель",
                                     4, 1: "цена" ),
                        стр_доб = ДА,
                        команда = {Команда},
                        данные = {Получение_данных} ];

  ФУНКЦИЯ Получение_данных(ПЕРЕМ ТАБЛИЦА: элемент; ЦЕЛОЕ: столбец; ЦЕЛОЕ: строка; ПЕРЕМ *: знач)
    ВЫБОР (столбец)
      #1: знач = строка - элемент.кол_фикс_строк
      #2: знач = товар[строка - элемент.кол_фикс_строк].название
      #3: знач = товар[строка - элемент.кол_фикс_строк].производитель
      #4: знач = товар[строка - элемент.кол_фикс_строк].цена 
    КОНЕЦ_ВЫБОРА
  КОНЕЦ_ФУНКЦИИ

  ФУНКЦИЯ ЛОГИКА: Команда(ПЕРЕМ ТАБЛИЦА: элемент; СТРОКА: код)
    ВЫБОР(код)
      #"+":
        элемент.кол_строк ++
        элемент.ОБНОВИТЬ
        РЕЗУЛЬТАТ = ДА
    ИНАЧЕ
        РЕЗУЛЬТАТ = НЕТ
    КОНЕЦ_ВЫБОРА
  КОНЕЦ_ФУНКЦИИ  
  
  ФУНКЦИЯ ЛОГИКА: Подготовка_данных
    РЕЗУЛЬТАТ = ДА
     ЦИКЛ ДЛЯ (и = 1 ,5)
      товар[и].Заполнение(и)
    КОНЕЦ_ЦИКЛА
  КОНЕЦ_ФУНКЦИИ
  ...
]

ВЫЧИСЛИТЬ
  ПЕРЕМ Диалог_таб: д
  // д <- данные
  ЕСЛИ д.ПОКАЗАТЬ_МОДАЛЬНЫЙ <> "" ТО
    // д -> данные
  КОНЕЦ_ЕСЛИ
КОНЕЦ

См. также: