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

Таблица значений 1С – предназначена для хранения и обработки данных. Очень часто используется программистами для хранения временных (промежуточных) данных.

В таблицах значений существуют строки и колонки. У каждой строки есть индекс, он начинается с  0 (нуля). Таблицу значений можно создавать с различными колонками и добавлять в нее строки. По строкам в таблице можно делать выборку и поиск, устанавливать и получать значения, сортировать, группировать и удалять строки.

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

Далее постараюсь дам ответы на вопросы, касающиеся таблиц значений 1С.

Как можно создать новую таблицу значений?

ТабЗначений = Новый ТаблицаЗначений;
ТабЗначений.Колонки.Добавить("КолКод");
ТабЗначений.Колонки.Добавить("КолНоменклатура");
ТабЗначений.Колонки.Добавить("КолКоличество");

Функция создает таблицу значений с колонками «КолКод», «КолНоменклатура» и «КолКоличество».

Как добавить новую колонку с определенным типом и заголовком?

ФорматЧисла = Новый КвалификаторыЧисла(9, 2)
ОписаниеТипа = Новый ОписаниеТипов("Число", КвалифЧисла);
ТабЗначений.Колонки.Добавить("КолКоличество", ОписаниеТипа, "Количество номенклатуры");

Функция добавляет колонку «КолКоличество» с типом «Число», длиной в 9 символов и с точностью в 2 символа.

Как можно добавить новые строки?

ВыбНоменклатура = Справочники.Номенклатура.Выбрать();
Пока ВыбНоменклатура.Следующий() Цикл
НоваяСтрока = ТабЗначений.Добавить();
НоваяСтрока. КолКод = ВыбНоменклатура.Код;
НоваяСтрока. КолНоменклатура = ВыбНоменклатура.Ссылка;
НоваяСтрока. КолКоличество = 1;
КонецЦикла;

Функция делает выборку по номенклатуре и добавляет полученные данные в таблицу значений.

Как выгрузить результат запроса в таблицу значений?

НовыйЗапрос = Новый Запрос;
НовыйЗапрос.Текст = "ВЫБРАТЬ
|        СправочникНоменклатура.Ссылка КАК СсылкаНоменклатура
|ИЗ
|        Справочник.Номенклатура КАК СправочникНоменклатура";
ТабЗначений = НовыйЗапрос.Выполнить().Выгрузить();

Функция делает запрос по номенклатуре и выгружает результат в таблицу значений. Колонка будет одна «СсылкаНоменклатура».

Как сделать выборку строк в таблице значений?

Для Каждого СтрокаТаб Из ТабЗначений Цикл
Сообщить(СтрокаТаб.КолНоменклатура);
КонецЦикла;

или

// Узнаем количество строк в таблице, так как индекс начинается с нуля, уменьшаем количество строк на 1 (одну).
КоличествоСтрок = ТабЗначений.Количество() - 1;
// Выполняем цикл по количеству строк
Для Н = 0 по КоличествоСтрок Цикл
Сообщить(ТабЗначений [Н]. КолНоменклатура);
КонецЦикла;

Функция делает выборку по таблице значений и сообщает все элементы, которые находятся в колонке «Номенклатура». В первом примере выборка идет по строкам, а во втором строки получаем по индексу.

Как сделать выборку строк в таблице значений с отбором?

// Создаем отбор
ОтборСтруктура = Новый Структура;
ОтборСтруктура.Вставить("КолНоменклатура ", СсылкаНоменклатура);
// Используем отбор в поиске строк
ТабЗначенийСтроки = ТабЗначений.НайтиСтроки(ОтборСтруктура);
Для Каждого СтрокаТаб Из ТабЗначенийСтроки Цикл
Сообщить(СтрокаТаб.КолКоличество);
КонецЦикла;

Функция делает выборку по таблице значений с отбором по колонке «Номенклатура».

Как сделать сортировку?

ТабЗначений.Сортировать("КолКод Убыв, КолНоменклатура Возр");

Функция делает сортировку таблицы по колонкам «КолКод» по убыванию и «КолНоменклатура» по возрастанию.

Как вычислить итоги по колонке?

ИтогКоличество = ТабЗначений.Итог("КолКоличество");

Функция получает итоги по колонке «КолКоличество» и записывает их в переменную «ИтогКоличество».

Как сделать копию таблицы значений?

КопияТабЗначений = ТабЗначений.Скопировать();

Функция делает полную копию таблицы «ТабЗначений» в таблицу «КопияТабЗначений».

Как свернуть таблицу значений по колонке Номенклатура и суммировать по количеству?

ТабЗначений.Свернуть("КолНоменклатура", "КолКоличество");

Функция сворачивает таблицу по колонке «Номенклатура» и суммирует колонку «Количество». Если существуют еще колонки, то они будут удалены.

Как найти строку в таблице значений по значению?

НайтиСтрока = ТабЗначений.Найти(СсылкаНоменклатура);

Функция делает поиск по таблице и возвращает строку если строка найдена.

Как удалить строку или полностью очистит таблицу значений?

ТабЗначений.Удалить(0); // Удалит первую строку по индексу
ТабЗначений.Очистить(); // Полностью очистить таблицу

Как установить и получить значение?

ПерваяСтрока = ТабЗначений.Получить(0);

Функция получает строку из таблицы значений по индексу

Как вставить значение в таблицу?

НоваяСтрока = ТабЗначений.Вставить(1);
НоваяСтрока.КолНоменклатура = ТекНоменклатура;
НоваяСтрока.КолКоличество = 5;

Функция вставляет строку по индексу и устанавливает значения.

Дополнительные функции, которые упрощают работу с таблицей значений в 1С

// Выгружает колонку «КолНомнклатура» в массив
МассивНоменклатуры = ТабЗначений.ВыгрузитьКолонку("КолНоменклатура");
// Заполнит колону «КолКоличество»
ТабЗначений.ЗаполнитьЗначения(0, "КолКоличество ");
// Функция вернет количество строк в таблице
КоличествоСток = ТабЗначений.Количество();

2 thoughts on “Таблица значений 1С

  1. Никанор

    весьма информативно,молодца!

Добавить комментарий

Имя