ТаблицаЗначений — это программный объект встроенного языка, позволяющий хранить произвольные данные в табличном виде. Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали.
Строки и колонки имеют последовательную целочисленную нумерацию. Кроме этого, колонкам можно присваивать строковые идентификаторы, удовлетворяющие требованиям, выдвигаемым к идентификаторам языка. Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом колонки. Если тип не задан, в ячейке можно хранить значения произвольного типа.
Таблица значений является полностью динамическим объектом, т.к. Вы можете манипулировать не только строками таблицы, добавляя и\или удаляя их, но и колонками.
Таблица значений используется в двух случаях:
- При работе с формами: при размещении на форме элемент управления типа
ТаблицаЗначений
, он автоматически связывается с одноименным объектом встроенного языкаТаблицаЗначений
; - При работе с кодом: для хранения каких-либо многострочных списочных данных вы создаете нужное количество объектов типа
ТаблицаЗначений
;
Создание таблицы значений
Как и все объекты агрегатного типа, таблица значений создается с помощью функции СоздатьОбъект() встроенного языка:
тз = СоздатьОбъект("ТаблицаЗначений");
Инициализация таблицы значений
Инициализация объекта выполняется в три этапа:
- Добавление колонок
- Добавление строки
- Установка значений ячеек
Итак, прежде, чем начать работать с объектом ТаблицаЗначений
, необходимо настроить колонки (задать имя и тип). Делается это с помощью метода НоваяКолонка() следующим образом:
тз.НоваяКолонка("Название", "Строка"); тз.НоваяКолонка("Количество", "Число");
Как Вы успели заметить, вместе с названием колонки задается и тип значений.
После того, как Вы добавили колонки, можно добавлять строки. Делается это с помощью метода НоваяСтрока():
тз.НоваяСтрока();
Теперь переменная тз
спозиционирована на добавленную строку и мы можем приступить к заполнению ячеек:
тз.Название = "Репка"; тз.Количество = 3;
Как видите, имена ячеек текущей строки имеют то же название, что и колонки. Это делает использование объекта элементарным: достаточно указать через точку после имени объекта имя колонки.
Манипуляция значениями строк таблицы
Для получения значений, содержащихся в строках, необходимо перво-наперво спозиционировать объект на интересующей Вас строке. Для этого используются такие методы как: ПолучитьСтрокуПоНомеру() и ПолучитьСтроку():
тз.ПолучитьСтрокуПоНомеру(1); тз.Название = "Репка"; тз.Количество = 3;
Перебор строк таблицы значений
Для последовательного перебора (обхода) всех строк таблицы значений обычно используются методы ВыбратьСтроки() и ПолучитьСтроку() объекта:
тз.ВыбратьСтроки(); Пока тз.ПолучитьСтроку() = 1 Цикл Сообщить(Шаблон("[тз.НомерСтроки]. [тз.Товар] х [тз.Количество] ед.")); КонецЦикла;
Также можно организовать перебор с помощью оператора цикла Для, где в качестве ограничителя цикла используется количество строк таблицы, возвращаемое методом КоличествоСтрок():
Для Инд = 1 По тз.КоличествоСтрок() Цикл тз.ПолучитьСтрокуПоНомеру(Инд); Сообщить(Шаблон("[тз.НомерСтроки]. [тз.Товар] х [тз.Количество] ед.")); КонецЦикла;
Атрибуты объекта ТаблицаЗначений
НомерСтроки | атрибут содержит номер текущей строки таблицы |
<ИдентификаторКолонки> | атрибут содержит значение текущей ячейки таблицы |
Методы объекта ТаблицаЗначений
НоваяКолонка() | метод добавляет новую колонку в конец таблицы |
ВставитьКолонку() | метод вставляет новую колонку в указанное место в таблице |
УдалитьКолонку() | метод удаляет указанную колонку из таблицы |
КоличествоКолонок() | метод возвращает количество колонок в таблице |
НоваяСтрока() | метод добавляет новую строку в конец таблицы |
ВставитьСтроку() | метод вставляет новую строку в указанное место в таблице |
УдалитьСтроку() | метод удаляет указанную строку из таблицы |
КоличествоСтрок() | метод возвращает количество строк в таблице |
НайтиЗначение() | метод выполняет поиск значения в ячейках таблицы |
ВыбратьСтроки() | метод формирует последовательную выборку строк таблицы значений |
ПолучитьСтроку() | метод получает следующую строку из ранее сформированной выборки |
ПолучитьСтрокуПоНомеру() | метод позиционирует объект на указанной строке |
* — в таблице перечислены не все методы таблицы значений. |
Хочется отметить, что объекты типа ТаблицаЗначений
не хранятся в информационной базе.
В ТЗ английский синтаксис GetLineByNum() не работает, только русский ПолучитьСтрокуПоНомеру().
Может для ТЗ эта команда пишется английском по-другому ?
Да, Вы правы. Правильный синтаксис команды GetLineByNumber()