1С: Шпаргалка по работе с таблицей значений

Ниже приведены наиболее часто используемые применения. Рассматриваются наиболее часто встречающиеся операции.

Определение типа колонок:


// Ссылочные типы
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));  
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный"));
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("ТипКонтактнойИнформации", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыКонтактнойИнформации"));  
 
// Простые типы
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("ДолжностьНаименование", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(150))); 
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(10,2)));
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата",, Новый КвалификаторыДаты(ЧастиДаты.Дата)));
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("ЕстьОповещение", Новый ОписаниеТипов("Булево"));   
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("ИменаПолейСубконто", Новый ОписаниеТипов("Массив"));  

//Составное
МассивТипов = Новый Массив();
МассивТипов.Добавить(Тип("Булево"));
МассивТипов.Добавить(Тип("ПеречислениеСсылка.ВидыПродукцииИС"));	
ТЗ_ДанныеПоСотрудникам.Колонки.Добавить("МаркировкаОстатков", Новый ОписаниеТипов(МассивТипов));
     

Удаление строк:

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

Сортировка:

ТЗДат.Сортировать("Дата Возр");

1С: Получение полей отбора с формы списка

Задача: узнать состав текущего отбора на форме списка..и составить аналогичный запрос в БД, для получения выборки

Решение: Применимо в данный момент только к динамическому списку. Отборы получаем чтением данных из компоновщика настроек. Запрос (фактически условие) получается крайне грубым, но приемлемым для моих входящих данных. Итак код:

 	// Проработаем текущий отбор
	sql="";   	
	для каждого стр из Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы цикл
			попытка ош=стр["Элементы"];исключение прервать; конецпопытки;
			для каждого эл из стр.Элементы цикл
				если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Содержит тогда
					sql=sql+" И "+эл.ЛевоеЗначение+" ПОДОБНО ""%"+эл.ПравоеЗначение+"%""";
				конецесли;	
				если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно тогда
					sql=sql+" И "+эл.ЛевоеЗначение+" = """+эл.ПравоеЗначение+"""";
				конецесли;	
				если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Больше тогда
					sql=sql+" И "+эл.ЛевоеЗначение+" > """+эл.ПравоеЗначение+"""";
				конецесли;	
				если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Меньше тогда
					sql=sql+" И "+эл.ЛевоеЗначение+" < """+эл.ПравоеЗначение+"""";
				конецесли;	
				если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно тогда
					sql=sql+" И "+эл.ЛевоеЗначение+" <> """+эл.ПравоеЗначение+"""";
				конецесли;	
				
			конеццикла;
	конеццикла;