/// Запускается "ПриСоздании на сервере Функция УстановитьНастройкиСервис() СКД = Отчеты.Выработка.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

Поле = СКД.ВычисляемыеПоля.Добавить();
Поле.ПутьКДанным = "ЗаказНаряд.payer";
Поле.Заголовок = "payer";
Поле.Выражение = "Выбор
					   |	Когда ЗаказНаряд.ВидРемонта.КодВыгрузки = ""КР""
					   |Тогда ""Клиент""
					   |Иначе """"
					   |Конец";

Поле = СКД.ВычисляемыеПоля.Добавить();
Поле.ПутьКДанным = "ЗаказНаряд.product_type";
Поле.Заголовок = "product_type";
Поле.Выражение = "Выбор
					   |	Когда ЗаказНаряд.ВидРемонта.КодВыгрузки = ""КР""
					   |Тогда ""Клиент""
					   |Иначе """"
					   |Конец";

Поле = СКД.ВычисляемыеПоля.Добавить();
Поле.ПутьКДанным = "ЗаказНаряд.order_type";
Поле.Заголовок = "order_type";
Поле.Выражение = "Выбор
					   |	Когда ЗаказНаряд.ВидРемонта.КодВыгрузки = """"
					   |Тогда ""Укажите код выгрузки для вида ремонта "" + ЗаказНаряд.ВидРемонта.Наименование
					   |Иначе ЗаказНаряд.ВидРемонта.КодВыгрузки
					   |Конец";

Поле = СКД.ВычисляемыеПоля.Добавить();
Поле.ПутьКДанным = "ЗаказНаряд._date";
Поле.Заголовок = "date";
Поле.Выражение = "НАЧАЛОПЕРИОДА(ЗаказНаряд.Дата,""ДЕНЬ"")";

Поле = СКД.ВычисляемыеПоля.Добавить();
Поле.ПутьКДанным = "ЗаказНаряд.order_number";
Поле.Заголовок = "order_number";
Поле.Выражение = "Выбор
					   |	Когда ПОДСТРОКА(ЗаказНаряд.Номер,4,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,4,7)
					   | Когда ПОДСТРОКА(ЗаказНаряд.Номер,5,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,5,6)
					   | Когда ПОДСТРОКА(ЗаказНаряд.Номер,6,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,6,5)
					   | Когда ПОДСТРОКА(ЗаказНаряд.Номер,7,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,7,4)
					   | Когда ПОДСТРОКА(ЗаказНаряд.Номер,8,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,8,3)
					   | Когда ПОДСТРОКА(ЗаказНаряд.Номер,9,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,9,2)
					   | Когда ПОДСТРОКА(ЗаказНаряд.Номер,10,1) <> ""0""
					   |Тогда ПОДСТРОКА(ЗаказНаряд.Номер,10,1)
					   |Конец";

Поле = СКД.ВычисляемыеПоля.Добавить();
Поле.ПутьКДанным = "Отметка";
Поле.Заголовок = "Отметка";
Поле.Выражение = "НЕ ЗаказНаряд.ВидРемонта.КодВыгрузки = """"";


АдресСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
СтруктураПолей = Новый Структура("Отметка, ЗаказНаряд, ВидРемонта, Автомобиль
								|,vin
								|,date
								|,order_number
								|,work_total
								|,parts_total
								|,order_Type
								|,mileage
								|,payer
								|,product_type"

								,"Отметка", "ЗаказНаряд", "ЗаказНаряд.ВидРемонта", "Автомобиль"
								,"Автомобиль.VIN"
								,"ЗаказНаряд._date"
								,"ЗаказНаряд.order_number"
								,"СуммаРабот"
								,"СуммаНоменклатуры"
								,"ЗаказНаряд.order_type"
								,"ЗаказНаряд.Пробег"
								,"ЗаказНаряд.payer"
								,"ЗаказНаряд.product_type"
								);

Настройки = КомпоновщикНастроек.Настройки;

УдалитьСтандартныеНастройки(Настройки);

Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Группировка.Использование = Истина;

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

Группа = Настройки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
Группа.ТипГруппы  = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;

ЭлементОтбора = Группа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Автомобиль");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
ЭлементОтбора.ПравоеЗначение = Справочники.Автомобили.НайтиПоКоду("ЦБ00000002");

ЭлементОтбора = Группа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Автомобиль.VIN");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеНачинаетсяС;
ЭлементОтбора.ПравоеЗначение = "1N";
ЭлементОтбора.Использование = Ложь;

ЭлементОтбора = Группа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Автомобиль.VIN");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;

ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПодразделениеКомпании");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии;
СписокПодразделений = Новый СписокЗначений;
СписокПодразделений.Добавить(Справочники.ПодразделенияКомпании.НайтиПоКоду("ЦБ000014"));
СписокПодразделений.Добавить(Справочники.ПодразделенияКомпании.НайтиПоКоду("ЦБ000021"));
ЭлементОтбора.ПравоеЗначение = СписокПодразделений;

ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поставщик");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Справочники.Контрагенты.НайтиПоКоду("ЦБ011454");
ЭлементОтбора.Использование = Ложь;

ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗаказНаряд.Состояние");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Справочники.ВидыСостоянийЗаказНарядов.Закрыт;

ЭлементПорядка = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ЗаказНаряд._date");

КонецФункции

/// Запускается пользователем Функция СформироватьДанныеВыработки() Экспорт

тзРезультат = ВыполнитьСКД(СКД, КомпоновщикНастроек);

тзРезультат.Свернуть("Отметка, ЗаказНаряд, ВидРемонта, Автомобиль,vin,date,order_number,order_Type,payer,mileage,product_type","work_total,parts_total");	
тзРезультат.Сортировать("date");

Возврат тзРезультат;

КонецФункции

Функция ВыполнитьСКД(текСКД, текКомпоновщик) КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

Если текКомпоновщик.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("ДатаНачала") <> Неопределено Тогда
	текКомпоновщик.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", НачалоМесяца(Дата));
КонецЕсли;
Если текКомпоновщик.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("ДатаОкончания") <> Неопределено Тогда
	текКомпоновщик.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаОкончания", КонецДня(Дата));
КонецЕсли;
Если текКомпоновщик.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("ДатаОтчета") <> Неопределено Тогда
	текКомпоновщик.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаОтчета", КонецДня(Дата));
КонецЕсли;

МакетКомпоновки = КомпоновщикМакета.Выполнить(текСКД, текКомпоновщик.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,);

тзРезультат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(тзРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Для Каждого Колонка ИЗ тзРезультат.Колонки Цикл
	ПОПЫТКА //На случай, если заголовок с пробелом и т.п.
		Колонка.Имя = Колонка.Заголовок;		
	ИСКЛЮЧЕНИЕ КОНЕЦПОПЫТКИ;
КонецЦикла;

Возврат тзРезультат;

КонецФункции

Код раскрашен тут