Использование комбинированного режима хранения данных
Комбинированный режим использования источника данных для таблицы задействует и внешний, и внутренний источники данных.
В случае использования комбинированного режима для хранения данных в индексном поле элементы, как правило, хранятся только заголовки столбцов, все остальное содержимое таблицы запрашивается из внешнего источника.
Внутренний источник имеет больший приоритет, чем внешний источник. Заполнение таблицы происходит следующим образом - сначала проверяется внутренний источник данных, если там для требуемых координат не содержится данных, то происходит обращение к внешнему источнику, то есть генерация события "данные".
В примере ниже демонстрируется типичный вариант использования комбинированного режима, когда заголовки столбцов находятся во внутреннем источнике, а остальные данные во внешнем источнике. Внешний источник данных представлен переменной типа Товары, обработчик данные копирует данные из этой переменной в таблицу. Выражение (строка - элемент.кол_фикс_строк) в качестве индекса используется для предотвращения потери объектов при использовании многоуровнего заголовка в таблице.
Пример
ТИП Товары [ СТРОКА: название; ЧИСЛО: цена; СТРОКА: производитель; ФУНКЦИЯ Заполнение(ЦЕЛОЕ: номер) название = "ТОВАР_" + СТР(номер) цена = СЛУЧ_ЧИСЛО(500) производитель = "Производитель_" + СТР(номер) КОНЕЦ_ФУНКЦИИ ] ТИП Диалог_таб(ДИАЛОГ) [ ... ПОДМЕНА до_открытия = {Подготовка_данных}; ... Товары: товар[]; ТАБЛИЦА: Таблица1 = [ левый = 25, верхний = 50, ширина = 260, высота = 125, табиндекс = 1003, размер_столбца = 50, размер_строки = 20, столбцы = ( 1: 76, 3: 105 ), элементы = ( 1, 1: "наименование", 2, 1: "цена", 3, 1: "Производитель" ), данные = {Получение_данных} ]; ФУНКЦИЯ Получение_данных(ПЕРЕМ ТАБЛИЦА: элемент; ЦЕЛОЕ: столбец; ЦЕЛОЕ: строка; ПЕРЕМ *: знач) ВЫБОР (столбец) #1: знач = товар[строка - элемент.кол_фикс_строк].название #2: знач = товар[строка - элемент.кол_фикс_строк].цена #3: знач = товар[строка - элемент.кол_фикс_строк].производитель КОНЕЦ_ВЫБОРА КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ ЛОГИКА: Подготовка_данных РЕЗУЛЬТАТ = ДА ЦИКЛ ДЛЯ (и = 1 ,5) товар[и].Заполнение(и) КОНЕЦ_ЦИКЛА КОНЕЦ_ФУНКЦИИ ... ] ВЫЧИСЛИТЬ ПЕРЕМ Диалог_таб: д // д <- данные ЕСЛИ д.ПОКАЗАТЬ_МОДАЛЬНЫЙ <> "" ТО // д -> данные КОНЕЦ_ЕСЛИ КОНЕЦ