Таблица значений — специальный объект в программировании 1С 8.3 (8.2), который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.
Таблицу значений, как любую коллекцию, можно обойти циклом. Например:
Получить нужную строку можно по индексу, например:
Индексы в 1С начинается с 0 (нуля).
Рассмотрим основные свойства и методы этого объекта на примерах.
Создание и использование таблиц значений 1С в примерах
Создать таблицу можно следующим образом:
Добавить колонки в таблицу значений 1С:
Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.
После создания колонок добавим несколько новых строк и заполним колонки:
Получите 267 видеоуроков по 1С бесплатно:
Добавим еще одну колонку:
Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:
Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:
Скопировать строку таблицы значений 1С, для примера — первую:
Поиск в таблице значений 1С с ценой «17400» с помощью структуры:
Сортировка программ в таблице по цене:
Количество строк в таблице:
Выгрузить колонку таблицы значений в массив 1С 8.3 или 8.2:
Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:
Полностью скопировать таблицу значений 1С можно так:
Просуммировать итог по колонке таблицы значений:
Свернуть таблицу можно так:
При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».
Ну и напоследок очистим строки таблицы значений 1С 8.3 (8.2) полностью:
И удалим все колонки:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Описание:
Таблица значений — это несохраняемый в базе данных объект, который позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одной таблице типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Необходимо отметить, что таблица значений, связанная с элементом управления ТабличноеПоле, будет иметь все колонки, имеющиеся в табличном поле, с соответствующими именами. Кроме того, таблица значений может иметь также и собственные колонки, не отображаемые в табличном поле, при этом их имена должны отличаться от имен колонок табличного поля.
Элементы коллекции: СтрокаТаблицыЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс строки (нумерация с 0).
Таблица значений 1С – предназначена для хранения и обработки данных. Очень часто используется программистами для хранения временных (промежуточных) данных.
В таблицах значений существуют строки и колонки. У каждой строки есть индекс, он начинается с 0 (нуля). Таблицу значений можно создавать с различными колонками и добавлять в нее строки. По строкам в таблице можно делать выборку и поиск, устанавливать и получать значения, сортировать, группировать и удалять строки.
Далее постараюсь дам ответы на вопросы, касающиеся таблиц значений 1С.
Как можно создать новую таблицу значений?
ТабЗначений = Новый ТаблицаЗначений;
ТабЗначений.Колонки.Добавить(«КолКод»);
ТабЗначений.Колонки.Добавить(«КолНоменклатура»);
ТабЗначений.Колонки.Добавить(«КолКоличество»);
Функция создает таблицу значений с колонками «КолКод», «КолНоменклатура» и «КолКоличество».
Как добавить новую колонку с определенным типом и заголовком?
ФорматЧисла = Новый КвалификаторыЧисла(9, 2)
ОписаниеТипа = Новый ОписаниеТипов(«Число», КвалифЧисла);
ТабЗначений.Колонки.Добавить(«КолКоличество», ОписаниеТипа, «Количество номенклатуры»);
Функция добавляет колонку «КолКоличество» с типом «Число», длиной в 9 символов и с точностью в 2 символа.
Как можно добавить новые строки?
ВыбНоменклатура = Справочники.Номенклатура.Выбрать();
Пока ВыбНоменклатура.Следующий() Цикл
НоваяСтрока = ТабЗначений.Добавить();
НоваяСтрока. КолКод = ВыбНоменклатура.Код;
НоваяСтрока. КолНоменклатура = ВыбНоменклатура.Ссылка;
НоваяСтрока. КолКоличество = 1;
КонецЦикла;
Функция делает выборку по номенклатуре и добавляет полученные данные в таблицу значений.
Как выгрузить результат запроса в таблицу значений?
НовыйЗапрос = Новый Запрос;
НовыйЗапрос.Текст = «ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК СсылкаНоменклатура
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура»;
ТабЗначений = НовыйЗапрос.Выполнить().Выгрузить();
Функция делает запрос по номенклатуре и выгружает результат в таблицу значений. Колонка будет одна «СсылкаНоменклатура».
Как сделать выборку строк в таблице значений?
Для Каждого СтрокаТаб Из ТабЗначений Цикл
Сообщить(СтрокаТаб.КолНоменклатура);
КонецЦикла;
// Узнаем количество строк в таблице, так как индекс начинается с нуля, уменьшаем количество строк на 1 (одну).
КоличествоСтрок = ТабЗначений.Количество() — 1;
// Выполняем цикл по количеству строк
Для Н = 0 по КоличествоСтрок Цикл
Сообщить(ТабЗначений [Н]. КолНоменклатура);
КонецЦикла;
Функция делает выборку по таблице значений и сообщает все элементы, которые находятся в колонке «Номенклатура». В первом примере выборка идет по строкам, а во втором строки получаем по индексу.
Как сделать выборку строк в таблице значений с отбором?
// Создаем отбор
ОтборСтруктура = Новый Структура;
ОтборСтруктура.Вставить(«КолНоменклатура «, СсылкаНоменклатура);
// Используем отбор в поиске строк
ТабЗначенийСтроки = ТабЗначений.НайтиСтроки(ОтборСтруктура);
Для Каждого СтрокаТаб Из ТабЗначенийСтроки Цикл
Сообщить(СтрокаТаб.КолКоличество);
КонецЦикла;
Функция делает выборку по таблице значений с отбором по колонке «Номенклатура».
Как сделать сортировку?
ТабЗначений.Сортировать(«КолКод Убыв, КолНоменклатура Возр»);
Функция делает сортировку таблицы по колонкам «КолКод» по убыванию и «КолНоменклатура» по возрастанию.
Как вычислить итоги по колонке?
Функция получает итоги по колонке «КолКоличество» и записывает их в переменную «ИтогКоличество».
Как сделать копию таблицы значений?
Функция делает полную копию таблицы «ТабЗначений» в таблицу «КопияТабЗначений».
Как свернуть таблицу значений по колонке Номенклатура и суммировать по количеству?
Функция сворачивает таблицу по колонке «Номенклатура» и суммирует колонку «Количество». Если существуют еще колонки, то они будут удалены.
Как найти строку в таблице значений по значению?
Функция делает поиск по таблице и возвращает строку если строка найдена.
Как удалить строку или полностью очистит таблицу значений?
ТабЗначений.Удалить(0); // Удалит первую строку по индексу
ТабЗначений.Очистить(); // Полностью очистить таблицу
Как установить и получить значение?
Функция получает строку из таблицы значений по индексу
Как вставить значение в таблицу?
НоваяСтрока = ТабЗначений.Вставить(1);
НоваяСтрока.КолНоменклатура = ТекНоменклатура;
НоваяСтрока.КолКоличество = 5;
Функция вставляет строку по индексу и устанавливает значения.
Дополнительные функции, которые упрощают работу с таблицей значений в 1С
// Выгружает колонку «КолНомнклатура» в массив
МассивНоменклатуры = ТабЗначений.ВыгрузитьКолонку(«КолНоменклатура»);
// Заполнит колону «КолКоличество»
ТабЗначений.ЗаполнитьЗначения(0, «КолКоличество «);
// Функция вернет количество строк в таблице
КоличествоСток = ТабЗначений.Количество();
Источник: