наверх
Свободные IT публикации
быстро и доступно
логин:
пароль:

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


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

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

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

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

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

Как найти значение в таблице значений?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

НоваяСтрока = ТаблицаЗначений.Добавить(); 
НоваяСтрока[ИмяКолонки] = Значение;

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

ТаблицаЗначений.ЗаполнитьЗначения(Ложь, "ФлагФискальногоУчета");

Как таблицу значений "ТаблицаПолучатель" заполнить данными таблицы значений "ИсходнаяТаблица"?

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

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

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

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

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

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