Работа с таблицей значений в 1С 8.3
Таблица значений — специальный объект в программировании 1С 8.3, который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.
Таблицу значений, как любую коллекцию, можно обойти циклом. Например:
Для Каждого Строка Из Товары Цикл
Получить нужную строку можно по индексу, например:
Строка = ТаблицаЗначений[0];
Индексы в 1С начинается с 0 (нуля).
Рассмотрим основные свойства и методы этого объекта на примерах.
Создание и использование таблиц значений 1С в примерах
Создать таблицу можно следующим образом:
ТаблицаТоваров = Новый ТаблицаЗначений;
Добавить колонки в таблицу значений 1С:
ТаблицаТоваров.Колонки.Добавить("Программа", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ТаблицаТоваров.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
После создания колонок добавим несколько новых строк и заполним колонки:
НоваяСтрока = ТаблицаТоваров.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("1C 8.3 Управление торговлей"); НоваяСтрока.Цена = 17400; НоваяСтрока = ТаблицаТоваров.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("1С 8.3 Бухгалтерия"); НоваяСтрока.Цена = 13000; НоваяСтрока = ТаблицаТоваров.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("1С 8 Управление небольшой фирмой"); НоваяСтрока.Цена = 17400;
Добавим еще одну колонку:
ТаблицаТоваров.Колонки.Добавить("ВерсияПлатформы", Новый ОписаниеТипов("Строка"));
Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:
Для Каждого Строка Из ТаблицаТоваров.ВерсияПлатформы Цикл Строка.ВерсияПлатформы = "1C 8.3"; КонецЦикла; //или ТаблицаТоваров.ЗаполнитьЗначения("8.3", "ВерсияПлатформы");
Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:
Сообщить(ТаблицаТоваров[0].Программа);
Скопировать строку таблицы значений 1С, для примера — первую:
ЗаполнитьЗначенияСвойств(ТаблицаТоваров.Добавить(), ТаблицаТоваров[0]);
Поиск в таблице значений 1С с ценой «17400» с помощью структуры:
МассивСтрок = ТаблицаТоваров.НайтиСтроки(Новый Структура("Цена", 17400));
Сортировка программ в таблице по цене:
ТаблицаТоваров.Сортировать("Цена");
Количество строк в таблице:
ВсегоСтрок = ТаблицаТоваров.Количество();
Выгрузить колонку таблицы значений в массив 1С:
ТаблицаТоваров.ВыгрузитьКолонку("Программа");
Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:
//по строке ТаблицаТоваров.Удалить(ТаблицаТоваров[ВсегоСтрок - 1]); //по индексу ТаблицаТоваров.Удалить(ВсегоСтрок - 1);
Полностью скопировать таблицу значений 1С можно так:
НоваяТаблицаТоваров = ТаблицаТоваров.Скопировать();
Просуммировать итог по колонке таблицы значений:
СуммаЦен = ТаблицаТоваров.Итог("Цена");
Свернуть таблицу можно так:
ТаблицаТоваров.Свернуть("ВерсияПлатформы", "Цена");
При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».
Ну и напоследок очистим строки таблицы значений 1С 8.3 полностью:
ТаблицаТоваров.Очистить();
И удалим все колонки:
ТаблицаТоваров.Колонки.Очистить();
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Андрей:
А как работать с ТаблицейЗначений как с элементом формы
Аноним:
Здравствуйте. Можно ли добавить строку в таблице между строк?
Ученый:
Можно ли добавить в таблице строку между строк?