Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

Таблица значений 1С

Таблица значений выступает в программе 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