Справочные материалы по 1С
Работа с таблицой значений в 1С 8.x
Как создать таблицу значений и заполнить ее поля?
ТаблицаЗначений = Новый ТаблицаЗначений;
// Создать нужные колонки.
ТаблицаЗначений.Колонки.Добавить("Фамилия");
ТаблицаЗначений.Колонки.Добавить("Возраст");
// Добавить новую строку и задать значения в колонках таблицы.
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Фамилия = "Иванов";
НоваяСтрока.Возраст = 23;
// Добавить новую строку и задать значения в колонках таблицы.
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока["Фамилия"] = "Иванов";
НоваяСтрока["Возраст"] = 23;
Как найти значение в таблице значений?
НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение);
НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение, "Поставщик, Покупатель");
// Сформировать структуру отбора.
СтруктураПоиска = Структура("Сотрудник", ИскомоеЗначение);
// Найти строки.
МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска);
Как перебрать строки таблицы значений?
Для Каждого ТекущаяСтрока Из ТаблицаСотрудников Цикл
Сообщить(ТекущаяСтрока.Сотрудник);
КонецЦикла;
СтаршийИндекс = ТаблицаСотрудников.Количество() - 1;
Для Сч = 0 по СтаршийИндекс Цикл
Сообщить(СписокСотрудников[Сч].Сотрудник);
КонецЦикла;
Как удалить строки (колонки) таблицы значений?
ТаблицаЗначений.Удалить(УдаляемаяСтрока);
ТаблицаЗначений.Удалить(0);
ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка);
ТаблицаЗначений.Колонки.Удалить(0);
СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() - 1;
Индекс = ТаблицаЗначений.Количество() - 1;
Пока Индекс > = 0 Цикл
Для Сч = 0 По СтаршийИндексКолонок Цикл
Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип("Число") Тогда
ТаблицаЗначений.Удалить(Индекс);
Прервать;
КонецЕсли;
КонецЦикла;
Индекс = Индекс - 1;
КонецЦикла;
Как заполнить таблицу значений, если имена колонок содержатся в переменных?
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока[ИмяКолонки] = Значение;
Как заполнить всю колонку таблицы значений нужным значением?
ТаблицаЗначений.ЗаполнитьЗначения(Ложь, "ФлагФискальногоУчета");
Как таблицу значений "ТаблицаПолучатель" заполнить данными таблицы значений "ИсходнаяТаблица"?
ТаблицаПолучатель = ТаблицаИсходная.Скопировать();
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл
НоваяСтрока = ТаблицаПолучатель.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы);
КонецЦикла;
ОдноименныеКолонки = Новый Массив();
Для Каждого Колонка Из ИсходнаяТаблица.Колонки Цикл
СовпадающаяКолонка = ТаблицаПолучатель.Колонки.Найти(Колонка.Имя);
Если СовпадающаяКолонка <> Неопределено Тогда
// Получить свойства колонки.
Индекс = ТаблицаПолучатель.Колонки.Индекс(СовпадающаяКолонка);
Имя = Колонка.Имя;
ТипЗначения = Колонка.ТипЗначения;
Заголовок = Колонка.Заголовок;
Ширина = Колонка.Ширина;
// Заменить колонки в таблице-получаетеле.
ТаблицаПолучатель.Колонки.Удалить(Индекс);
ТаблицаПолучатель.Колонки.Вставить(Индекс, Имя, ТипЗначения, Заголовок, Ширина);
// Добавить очередное имя совпадающих колонок в массив.
ОдноименныеКолонки.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
// Цикл перебора строк исходной таблицы.
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл
// Добавить новую строку в таблицу-получатель.
НоваяСтрока = ТаблицаПолучатель.Добавить();
// Заполнить значения в совпадающих ячейках.
Для Каждого ИмяКолонки Из ОдноименныеКолонки Цикл
НоваяСтрока[ИмяКолонки] = СтрокаИсходнойТаблицы[ИмяКолонки];
КонецЦикла;
КонецЦикла;
Как добавить колонки к таблице значений "ТаблицаЗначений" с ограничениями по типу?
// Добавить колонку без ограничений по типу.
ТаблицаЗначений.Колонки.Добавить("Объект");
// Ограничения по типам данных колонки:
// Только элементы справочника "Контрагенты".
ТаблицаЗначений.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
// Подготовка и установка ограничений для данных типа Строка.
КвалификаторыСтроки = Новый КвалификаторыСтроки(20, ДопустимаяДлина.Переменная);
ДопустимыеТипы = Новый ОписаниеТипов("Строка", , КвалификаторыСтроки);
ТаблицаЗначений.Колонки.Добавить("ПримечаниеСтроковоеКороткое", ДопустимыеТипы);
// Расширение уже использованного ранее описания типов.
КвалификаторыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный);
КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата);
РасширенныеДопустимыеТипы = Новый ОписаниеТипов(ДопустимыеТипы, "Число, Дата", , КвалификаторыЧисла, , КвалификаторыДаты);
ТаблицаЗначений.Колонки.Добавить("Примечание", РасширенныеДопустимыеТипы);
Как изменить тип значения колонки таблицы значений, полученной выгрузкой из запроса?
// Создать пустые ссылки.
ПустоеОприходование = Документы.ОприходованиеТоваров.ПустаяСсылка();
ПустойВозврат = Документы.ВозвратТоваровОтПокупателя.ПустаяСсылка();
// Выполнить запрос.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеТоваровУслуг
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 0
| &ПустойДокументОприходование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 0
| &ПустойДокументВозврат
|";
Запрос.УстановитьПараметр("ПустойДокументОприходование", ПустоеОприходование);
Запрос.УстановитьПараметр("ПустойДокументВозврат", ПустойВозврат);
// Выгрузить в таблицу значений.
ТаблицаСсылок = Запрос.Выполнить().Выгрузить();