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