Таблица значений переменных
-

Таблица значений переменных

0
7779
05.10.2022 Марина Анапольская

Содержание:

1. Коллекции значений

2. Синтакcис при работе с Таблицей значений - примеры 

 

1. Коллекции значений


Язык программирования 1С имеет в своем функционале несколько универсальных коллекций значений. Эти коллекции значений позволяют хранить и обрабатывать данные различных типов. Одной из наиболее полных и функциональных коллекций является Таблица значений переменных. ТЗ - объект, с помощью которого можно хранить и обрабатывать данные в виде таблицы, т.о. колонки являются коллекцией значений, а строки - коллекцией колонок. Таблица значений выражений храниться в оперативной памяти, т.е. она существует на время исполнения программного кода. Для того чтобы сохранения данных в базу нужно использовать другие объекты (табличные части объектов, различные регистры и т.д.)


Функции таблицы значений:

·         При работе с табличными частями документов, справочников;

·         Результат запроса можно выгрузить в ТЗ;

·         При выводе табличных данных на форму;

·         Во всех остальных случаях, когда необходимо поместить данные в таблицу и обработать их.


НО! Важно знать, что в тип ТаблицаЗначений определен только на сервере. Это значит, что Таблицу значений величин нельзя создавать на клиенте, а также ее нельзя передавать на клиент с сервера.


 1s tablica znachenij velichin.png

Рис. 1. Ошибка при попытке создания Таблицы значений на клиенте


Примечание: Для того, чтобы записать Таблицу значений на клиент, необходимо перевести ее в Массив (одномерная коллекция значений, с более простой структурой). 


2. Синтаксис при работе с Таблицей значений - примеры


tablica znachenij velichin.png

Рис. 2. Структура дерева разделов Синтаксис-помощника


1.      Создание (инициализация) Таблицы значений.

1.1.   Для того, чтобы построить таблицу значений нужно воспользоваться конструктор Новый:

ТЗ = Новый ТаблицаЗначений;

Т.о., в переменной ТЗ присвоиться пустая таблица, не имеющая структуры;

 

1.2.   Чтобы задать структуру таблицы значений выражений необходимо создать колонки:

ТЗ.Колонки.Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>);

 

Например,

ТЗ.Колонки.Добавить(«Груз», , «Вид груза»);

ТЗ.Колонки.Добавить(«Вес»);

ТЗ.Колонки.Добавить(«Цена», , «Цена (груза));


В первом параметре задается имя колонки, для обращения к ней в коде программы, во 2м – тип значений колонки, в 3м – заголовок, который будет представлен в режиме Предприятия, в 4м – ширина колонки.

 

Если необходимо задать тип колонки явным образом, то использовать нужно объект ОписаниеТипов:

МассивТ = Новый Массив;

МассивТ.Добавить(Тип("СправочникСсылка.ВидыГрузов"));

МассивТ.Добавить(Тип("Число"));

ПараметрыЧ = Новый КвалификаторыЧисла(10,3);

 

ТЗ.Колонки.Добавить(«Груз», Новый ОписаниеТипов(МассивТ, , ПараметрыЧисла), «Вид груза»);

ТЗ.Колонки.Добавить(«Вес», Новый ОписаниеТипов(МассивТ, , ПараметрыЧ));

 

Имеется возможность вставить новую колонку в любое место таблицы методом:

ТЗ.Колонки.Вставить(<Индекс>, <ИмяКол>, <Тип>, <ЗаголовокКол>, <ШиринаКол>)


tablica velichin v 1s.png  

Рис. 3. Описание объекта встроенного языка Таблица значений в Синтаксис-помощнике «Cntr + F1»


1.3.    Т.к. Таблица значений в виде коллекции строк, то и добавлять каждую новую строку нужно методом «Добавить()», обращаясь к ТЗ как к коллекции:

НовСтрока = ТЗ.Добавить(); – Добавить в конец таблицы;

НовСтрока = ТЗ.Вставить(<Индекс>); – Вставить строку в нужное место, по указанному индексу.

 

1.4.    Если нужно не формировать новую, а получить ТЗ из другой, подобной, т.е. скопировать, то можно воспользоваться методом Скопировать():

 

НоваяТЗ = ТЗ.Скопировать(ПарамОтбора, «СписокКолонок»);

Где ПарамОтбора – Структура, ключ которой равен имени колонки, а значение – отбираемому значению. Список колонок –колонки, которые нужно скопировать, перечисленне через запятую. «Кол1, Кол2, …»

 

Копирование всей ТЗ, полностью:

НоваяТЗ = ТЗ.Скопировать();

 

1.5.    Создать ТЗ также можно, выгрузив результат запроса:

ТЗ = Запрос.Выполнить().Выгрузить();

   

 vyvod tablicy znachenij.png

Рис. 4. Пример создания ТЗ в коде модуля

 

2.       Работа со строками таблицы значений

2.1.    Для обхода строк в примере с таблицей значений используется оператор «Для каждого …Из…Цикл»:

Для Каждого СтрокаТЗ Из ТЗ Цикл

//обработка строки таблицы

КонецЦикла;

 

Для обращения к конкретной строке нужно использовать оператор []

ТЗ[2].Количество = 500;

 

2.2.    Количество строк ТЗ определяется методом Количество()

КолвоСтрок = ТЗ.Количество();

 

2.3.    Строки можно отсортировать методом Сортировать():

ТЗ.Сортировать(«Колонки»);

Колонки – список колонок, по которым нужно отсортировать, указанные в порядке сортировки:

ТЗ.Сортировать(«Номенклатура,Цена»);

 

2.4.    Есть возможность очистить всю таблицу методом Очистить()

ТЗ.Очистить();

2.5.    Удалить можно не только все строки, но и одну - метод Удалить(<Индекс>)

ТЗ.Удалить(2);

 

2.6.    Стоит сказать об одном удобном инструменте. Если необходимо отобрать строки в результате таблице значений, по определенному условию:

 

СтрокаТЗ = ТЗ.Найти(<Значение>, <Колонки>);

Значение – по которому осуществляется отбор, Колонки – те, в которых необходимо искать значение. Если параметр отсутствует – то поиск осуществляется по всей таблице.

 

ИЛИ СтрокиТЗ = ТЗ.НайтиСтроки(<ПараметрыОтбора>);

ПараметрыОтбора – структура отбора (ключ – имя колонки, значение – искомое значение).

Важно! Данный метод возвращает массив строк таблицы значений переменных, в котором хранятся ссылки на строки, т.е. если изменяться строки в самой ТЗ, то изменяться и строки массива.

 

2.7.    Для того чтобы свернуть строки по повторяющимся значениям (аналогично группировке в запросе) необходимо использовать соответствующий метод:

ТЗ.Свернуть(<КолонкиГруппировок>, <КолонкиСуммирования>);

Где – КолонкиГруппировок –колонки (список через запятую), те, по значениям которых нужно свернуть ТЗ, КолонкиСуммирования – те колонки, значения котроых нужно суммировать.

 

2.8.    Важной особенностью выводов таблицы значений является возможность просуммировать значения в конкретной колонке. Для этого служить Метод Итог():

ПодвалКолонки = ТЗ.Итог(<ИмяКолонки>);

 

3.       Значения Таблицы значений при отладке

При отладке программы иногда очень удобно посмотреть значения, которые сформированы на текущем шаге отладки используя таблицу значений. Для этого достаточно выделить идентификатор таблицы значений и нажать на пиктограмму «Вычислить выражение» в панели действий главного меню (или воспользоваться комбинацией клавиш Shift + F9).


 vyvod tablicy znachenij 1s.png

Рис. 5. Значения таблицы значений при нажатии на копку «Вычислить выражение»

   

Специалист компании «Кодерлайн»

Марина Анапольская

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.