Таблица значений выступает в программе 1C основным средством хранения и последующей обработки информации. Зачастую программисты пользуются данной таблицы для организации временных хранилищ определенного набора данных.
Таблицы значений сформированы из набора строк и столбцов. Для каждой из строк характерно наличие собственного индекса, обязательно начинающегося с нуля. Сама таблица значений может иметь различный размер с варьированием количества строк и столбцов. Соответственно по строке можно вести поиск информации или осуществлять выборку необходимых данных по критериям отбора. Допускается функционалом применение сортировки, удаление строк и другие возможности.
Ниже представлены ответы на основные вопросы, связанные с использованием таблиц значений.
Создание новой таблицы значений
ТабЗначений = Новый ТаблицаЗначений;
ТабЗначений.Колонки.Добавить(«КолКод»);
ТабЗначений.Колонки.Добавить(«КолНоменклатура»);
ТабЗначений.Колонки.Добавить(«КолКоличество»);
По результатам данной команды будет создана таблица, в которой имеется три столбца (колонки).
Добавление колонок
ФорматЧисла = Новый КвалификаторыЧисла(9, 2)
ОписаниеТипа = Новый ОписаниеТипов(«Число», КвалифЧисла);
ТабЗначений.Колонки.Добавить(«КолКоличество», ОписаниеТипа, «Количество номенклатуры»);
Данная команда предполагает создание нового столбца, обладающего размерностью в 9 символов (точность 2 символа).
Добавление новых строк
ВыбНоменклатура = Справочники.Номенклатура.Выбрать();
Пока ВыбНоменклатура.Следующий() Цикл
НоваяСтрока = ТабЗначений.Добавить();
НоваяСтрока. КолКод = ВыбНоменклатура.Код;
НоваяСтрока. КолНоменклатура = ВыбНоменклатура.Ссылка;
НоваяСтрока. КолКоличество = 1;
КонецЦикла;
Данная команда позволяет выбрать данные по номенклатуре и провести их добавление в таблицу значений.
Выгрузка данных запроса в табличном виде
НовыйЗапрос = Новый Запрос;
НовыйЗапрос.Текст = «ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК СсылкаНоменклатура
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура»;
ТабЗначений = НовыйЗапрос.Выполнить().Выгрузить();
По результатам применения команды, запрашиваемые данные будут сформированы в таблицу с единственной колонкой (столбцом).
Выборка строк (может быть проведена двумя способами)
Для Каждого СтрокаТаб Из ТабЗначений Цикл
Сообщить(СтрокаТаб.КолНоменклатура);
КонецЦикла
или
// Узнаем количество строк в таблице, так как индекс начинается с нуля, уменьшаем количество строк на 1 (одну).
КоличествоСтрок = ТабЗначений.Количество() — 1;
// Выполняем цикл по количеству строк
Для Н = 0 по КоличествоСтрок Цикл
Сообщить(ТабЗначений [Н]. КолНоменклатура);
КонецЦикла;
Представленная команда позволяет провести построчную выборку данных, причем во втором случае выборка производится на основе индексов строк.
Выборка строк с отбором
// Создаем отбор
ОтборСтруктура = Новый Структура;
ОтборСтруктура.Вставить(«КолНоменклатура «, СсылкаНоменклатура);
// Используем отбор в поиске строк
ТабЗначенийСтроки = ТабЗначений.НайтиСтроки(ОтборСтруктура);
Для Каждого СтрокаТаб Из ТабЗначенийСтроки Цикл
Сообщить(СтрокаТаб.КолКоличество);
КонецЦикла;
В данном случае будет осуществлена выборка, критерием отбора в которой станет «Номенклатура».
Сортировка
ТабЗначений.Сортировать(«КолКод Убыв, КолНоменклатура Возр»);
Данная команда предполагает введение разнонаправленной сортировки для двух значений.
Определение итогов в колонке
ИтогКоличество = ТабЗначений.Итог(«КолКоличество»);
Команда проводит расчет выбранного показателя с последующей записью в переменную.
Копирование таблицы
КопияТабЗначений = ТабЗначений.Скопировать()
Данная команда позволяет создать полноценную копию таблицы.
Свернуть таблицу по значению и провести суммирование результатов
ТабЗначений.Свернуть(«КолНоменклатура», «КолКоличество»);
По выбранной колонке таблица сворачивается с одновременным расчетом суммы по другой колонке.
Поиск нужной строки по значению
НайтиСтрока = ТабЗначений.Найти(СсылкаНоменклатура);
Команда позволяет найти необходимую строку с данными.
Удаление строк или очистка всей таблицы
ТабЗначений.Удалить(0); // Удалит первую строку по индексу
ТабЗначений.Очистить(); // Полностью очистить таблицу
Установка и получение значений
ПерваяСтрока = ТабЗначений.Получить(0);
Команда позволяет получить строку на основе ее индекса.
Вставка значений
НоваяСтрока = ТабЗначений.Вставить(1);
НоваяСтрока.КолНоменклатура = ТекНоменклатура;
НоваяСтрока.КолКоличество = 5;
Команда позволяет на основе индекса вставить строку и провести ее заполнение.
Дополнительный функционал для упрощения работы
// Выгружает колонку «КолНомнклатура» в массив
МассивНоменклатуры = ТабЗначений.ВыгрузитьКолонку(«КолНоменклатура»);
// Заполнит колону «КолКоличество»
ТабЗначений.ЗаполнитьЗначения(0, «КолКоличество «);
// Функция вернет количество строк в таблице
КоличествоСток = ТабЗначений.Количество();
If you liked my post, feel free to subscribe to my rss feeds