1с создание таблицы значений

Таблица значений — специальный объект в программировании 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, «КолКоличество «);
// Функция вернет количество строк в таблице
КоличествоСток = ТабЗначений.Количество();

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: