Работа с таблицой значений в 1С 8.x

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

ТаблицаЗначений = Новый ТаблицаЗначений;

// Создать нужные колонки. 
ТаблицаЗначений.Колонки.Добавить("Фамилия"); 
ТаблицаЗначений.Колонки.Добавить("Возраст"); 

// Добавить новую строку и задать значения в колонках таблицы. 
НоваяСтрока = ТаблицаЗначений.Добавить(); 
НоваяСтрока.Фамилия = "Иванов"; 
НоваяСтрока.Возраст = 23; 

// Добавить новую строку и задать значения в колонках таблицы. 
НоваяСтрока = ТаблицаЗначений.Добавить(); 
НоваяСтрока["Фамилия"] = "Иванов"; 
НоваяСтрока["Возраст"] = 23;           
Как найти значение в таблице значений?

НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение); 

НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение, "Поставщик, Покупатель"); 

// Сформировать структуру отбора. 
СтруктураПоиска = Структура("Сотрудник", ИскомоеЗначение); 

// Найти строки. 
МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска);           
Как перебрать строки таблицы значений?

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

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

ТаблицаЗначений.Удалить(УдаляемаяСтрока); 

ТаблицаЗначений.Удалить(0); 

ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка); 

ТаблицаЗначений.Колонки.Удалить(0); 

СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() - 1; 
Индекс = ТаблицаЗначений.Количество() - 1; 
Пока Индекс > = 0 Цикл 
	Для Сч = 0 По СтаршийИндексКолонок Цикл 
		Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип("Число") Тогда 
			ТаблицаЗначений.Удалить(Индекс); 
			Прервать; 
		КонецЕсли; 
	КонецЦикла; 

	Индекс = Индекс - 1; 

КонецЦикла;
Как заполнить таблицу значений, если имена колонок содержатся в переменных?

НоваяСтрока = ТаблицаЗначений.Добавить(); 
НоваяСтрока[ИмяКолонки] = Значение;           
Как заполнить всю колонку таблицы значений нужным значением?

ТаблицаЗначений.ЗаполнитьЗначения(Ложь, "ФлагФискальногоУчета");          
Как таблицу значений «ТаблицаПолучатель» заполнить данными таблицы значений «ИсходнаяТаблица»?

ТаблицаПолучатель = ТаблицаИсходная.Скопировать(); 

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

ОдноименныеКолонки = Новый Массив(); 
Для Каждого Колонка Из ИсходнаяТаблица.Колонки Цикл 
	СовпадающаяКолонка = ТаблицаПолучатель.Колонки.Найти(Колонка.Имя); 
	Если СовпадающаяКолонка <> Неопределено Тогда 

		// Получить свойства колонки. 
		Индекс = ТаблицаПолучатель.Колонки.Индекс(СовпадающаяКолонка); 
		Имя = Колонка.Имя; 
		ТипЗначения = Колонка.ТипЗначения; 
		Заголовок = Колонка.Заголовок; 
		Ширина = Колонка.Ширина; 

		// Заменить колонки в таблице-получаетеле. 
		ТаблицаПолучатель.Колонки.Удалить(Индекс); 
		ТаблицаПолучатель.Колонки.Вставить(Индекс, Имя, ТипЗначения, Заголовок, Ширина); 

		// Добавить очередное имя совпадающих колонок в массив. 
		ОдноименныеКолонки.Добавить(Колонка.Имя); 
	КонецЕсли; 
КонецЦикла; 

// Цикл перебора строк исходной таблицы. 
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл 

	// Добавить новую строку в таблицу-получатель. 
	НоваяСтрока = ТаблицаПолучатель.Добавить(); 

	// Заполнить значения в совпадающих ячейках. 
	Для Каждого ИмяКолонки Из ОдноименныеКолонки Цикл 
		НоваяСтрока[ИмяКолонки] = СтрокаИсходнойТаблицы[ИмяКолонки]; 
	КонецЦикла; 

КонецЦикла;           
Как добавить колонки к таблице значений «ТаблицаЗначений» с ограничениями по типу?

// Добавить колонку без ограничений по типу. 
ТаблицаЗначений.Колонки.Добавить("Объект"); 

// Ограничения по типам данных колонки: 
// Только элементы справочника "Контрагенты". 
ТаблицаЗначений.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты")); 

// Подготовка и установка ограничений для данных типа Строка. 
КвалификаторыСтроки = Новый КвалификаторыСтроки(20, ДопустимаяДлина.Переменная); 
ДопустимыеТипы = Новый ОписаниеТипов("Строка", , КвалификаторыСтроки); 
ТаблицаЗначений.Колонки.Добавить("ПримечаниеСтроковоеКороткое", ДопустимыеТипы); 

// Расширение уже использованного ранее описания типов. 
КвалификаторыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный); 
КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата); 
РасширенныеДопустимыеТипы = Новый ОписаниеТипов(ДопустимыеТипы, "Число, Дата", , КвалификаторыЧисла, , КвалификаторыДаты); 
ТаблицаЗначений.Колонки.Добавить("Примечание", РасширенныеДопустимыеТипы);           
Как изменить тип значения колонки таблицы значений, полученной выгрузкой из запроса?

// Создать пустые ссылки. 
ПустоеОприходование = Документы.ОприходованиеТоваров.ПустаяСсылка(); 
ПустойВозврат = Документы.ВозвратТоваровОтПокупателя.ПустаяСсылка(); 

// Выполнить запрос. 
Запрос = Новый Запрос; 
Запрос.Текст = "ВЫБРАТЬ 
	|	Ссылка 
	|ИЗ 
	|	Документ.ПоступлениеТоваровУслуг 
	| 
	|ОБЪЕДИНИТЬ ВСЕ 
	| 
	|ВЫБРАТЬ ПЕРВЫЕ 0 
	|	&ПустойДокументОприходование 
	| 
	|ОБЪЕДИНИТЬ ВСЕ 
	| 
	|ВЫБРАТЬ ПЕРВЫЕ 0 
	|	&ПустойДокументВозврат 
	|"; 

Запрос.УстановитьПараметр("ПустойДокументОприходование", ПустоеОприходование); 
Запрос.УстановитьПараметр("ПустойДокументВозврат", ПустойВозврат); 

// Выгрузить в таблицу значений. 
ТаблицаСсылок = Запрос.Выполнить().Выгрузить();           
Выгрузка данных из таблицы значений в список значений

Рассмотрим случай в необходимости выгрузить из таблицы значений «ТаблицаЦен» выгрузить в таблицу списка для применения в запросе.

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

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

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТипЦен", СписокТиповЦен);
Запрос.УстановитьПараметр("Номенклатура", СписокНоменклатур);
Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", СписокХарактеристика);
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатуры.ТипЦен,
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
| ЦеныНоменклатуры.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.ТипЦен В(&ТипЦен)
| И ЦеныНоменклатуры.Номенклатура В(&Номенклатура)
| И ЦеныНоменклатуры.ХарактеристикаНоменклатуры В(&ХарактеристикаНоменклатуры)";
Результат = Запрос.Выполнить().Выбрать();

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *