Имя: Пароль:
1C
1С v8
Таблица значений в построителе отчета: поля отбора
0 OnePrg
 
16.12.20
00:51
ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(тб);

При этом все поля отбора в построителе не раскрываются. Где какое свойство нужно проставить, чтобы скажем поле "Номенклатура" раскрывалось по своим реквизитам?
1 FIXXXL
 
16.12.20
08:11
(0) посмотри что там в Отборе у него
2 OnePrg
 
16.12.20
09:10
(1) В отборе пусто. Отбор вывел на форму, с ним будет пользователь работать.
3 OnePrg
 
16.12.20
09:11
(1) .... именно при добавлении в отбор вижу список доступных полей, но поля ссылочного типа не раскрываются по своим реквизитам
4 FIXXXL
 
16.12.20
11:43
(3) видимо не типизированы...
5 sapphire
 
16.12.20
12:28
(0) ТЗ не типизирована
6 OnePrg
 
16.12.20
15:23
(5) типизирована
если поля не типизированы, они вообще в отбор не попадают
7 TormozIT
 
гуру
16.12.20
15:54
Не поддерживает он это (обращение к реквизитам ссылок в клиентских источниках данных).
8 OnePrg
 
16.12.20
16:37
(7) понятно

а через запрос ТЗ в построитель можно втянуть?
9 youalex
 
16.12.20
16:57
(8) напрямую нет.
Но можно задать поля литералами, типа

Построитель.Текст = "ВЫБРАТЬ Значение(Справочник.Номенклатура.) КАК Номенклатура, 0 Как Сумма ПОМЕСТИТЬ вт"

Так у тебя все отборы будут работать.

А чтобы получить результат, уже используешь Запрос
типа Запрос = Построитель.ПолучитьЗапрос();
У тебя будет Запрос со всеми отборами в "ГДЕ", в тексте меняешь первый запрос пакета (с литералами) - на помещение реальной ТЗ в вт.

Такое)
10 OnePrg
 
16.12.20
21:02
(9) >Но можно задать поля литералами, типа
>Построитель.Текст = "ВЫБРАТЬ Значение(Справочник.Номенклатура.) КАК Номенклатура, 0 Как Сумма ПОМЕСТИТЬ вт"

>Так у тебя все отборы будут работать.

вообще нет доступных полей в отборе
11 OnePrg
 
16.12.20
21:07
А стоп... кажется разобрался. Сделаю - отпишусь.
12 OnePrg
 
16.12.20
21:47
(9) Не понял. Получаю запрос из построителя, в запросе меняю текст, а дальше? Засунуть запрос обратно в построитель? Как?
13 youalex
 
17.12.20
00:46
(10) Да, там еще нужен второй запрос в пакете, где ты выбираешь поля из временной таблицы, выражения построителя тоже можно использовать.

(12) смотря что тебе нужно.
Если вывести данные в отчет - можно использовать второй построитель )), типа :
РезультатЗапроса = Запрос.Выполнить();
ОписаниеИсточника = Новый ОписаниеИсточникаДанных(РезультатЗапроса );
ПостроительДляВывода.ИсточникДанных = ОписаниеИсточника;
ПостроительДляВывода.Вывести(ТабДок);

СКД - не вариант?
14 OnePrg
 
17.12.20
10:55
(13) >СКД - не вариант?

та вот буду пробовать СКД.

Только суть задачи в том, что Отбор вынесен на форму. Для этого таблица на форме должна ссылаться на поле Отбор реквизита формы Построитель. А с СКД как? Что вынести на форму? Сделать реквизит типа КомпоновщикНастроек?
15 ДенисЧ
 
17.12.20
11:02
(14) КомпоновщикНастроек.Настройки.Отбор

Пользуйся.
16 OnePrg
 
17.12.20
16:27
КомпоновщикНастроек у меня это реквизит формы

СКД - переменная в коде

Как компоновщик привязать к переменной?
17 OnePrg
 
17.12.20
16:35
Кажется нашёл

КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
18 OnePrg
 
17.12.20
17:06
Нет доступных полей для отбора. Что не так делаю?

КомпоновщикНастроек - реквизит формы


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

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);    
    
    ВнешнийНаборДанных = Новый Структура("тб", тб);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
19 youalex
 
17.12.20
17:43
Попробуй через ВХ:
Пример 2:
// Поместим схему во временное хранилище

URLСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных);
// Создадим источник

ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы);
20 youalex
 
17.12.20
17:48
Схема уже должна быть с набором типа Объект и полями на момент инициализации компоновщика (вроде)
21 OnePrg
 
18.12.20
10:50
(20) Вот вот и меня это смущает

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

Ведь этот код взят из модуля отчёта СКД, там как я понимаю переменная КомпоновщикНастроек предопределена, в у меня КомпоновщикНастроек - реквизит формы, а СхемаКомпоновкиДанных просто переменная.
22 youalex
 
18.12.20
11:17
нужно сначала Схему заполнить. Или в макете руками накликать поля (если у тебя ТЗ фиксированный набор колонок) и подтягивать из макета, или программно.
Если у тебя Отчет, то можно вообще сделать стандартно, указав эту схему как основную
23 OnePrg
 
18.12.20
12:09
(19) Сначала хочу просто загнать в СКД таблицу, а потом уже буду прикручивать отборы на форме. Но и это не получается.

Ругается Неправильные параметры источника доступных настроек

    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;

    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);    
    
    ВнешнийНаборДанных = Новый Структура("тб", тб);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);        
    
    URLСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных);
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы)));    
    
    ДокументРезультат=Новый ТабличныйДокумент;
    ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);        
    ДокументРезультат.Показать();
24 youalex
 
18.12.20
13:03
(23) В СКД ты таблицу не загонишь, тебе нужно в СКД создать описание таблицы, точнее набора данных "Объект".
Сама таблица значений используется уже при компоновке результата.
25 OnePrg
 
18.12.20
16:13
(24) Вот в инете нашёл пример для модуля СКД

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

А у меня то СКД это переменная, как из неё получить компоновщик настроек?




Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
    
    ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных = "Local";
    
    НаборДанныхОбъектСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанныхОбъектСхемыКомпоновкиДанных.Имя = "НаборДанных1";
    НаборДанныхОбъектСхемыКомпоновкиДанных.ИмяОбъекта = "ТаблицаОстатков";
    НаборДанныхОбъектСхемыКомпоновкиДанных.ИсточникДанных = "ИсточникДанных1";
    
    ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Номенклатура";
    ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Номенклатура";
    ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Номенклатура";
    
    ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Склад";
    ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Склад";
    ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Склад";
    
    ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "ВНаличииОстаток";
    ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "ВНаличииОстаток";
    ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "В наличии остаток";
    
    Ресурс = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
    Ресурс.ПутьКДанным = "ВНаличииОстаток";
    Ресурс.Выражение = "Сумма(ВНаличииОстаток)";
    
    НастройкиКомпоновки = КомпоновщикНастроек.Настройки;
    
    Если НастройкиКомпоновки.Структура.Количество() = 0 Тогда
        
        ГруппировкаКомпоновкиДанных1 = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        ГруппировкаКомпоновкиДанных1.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировкиКомпоновкиДанных.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Склад");
        
        АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
        АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина;
        
        ГруппировкаКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных1.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        ГруппировкаКомпоновкиДанных2.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировкиКомпоновкиДанных2.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных2.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
        
        АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных2.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
        АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина;
        
        ВыбранноеПолеКомпоновкиДанных = НастройкиКомпоновки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
        ВыбранноеПолеКомпоновкиДанных.Использование = Истина;
        ВыбранноеПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("ВНаличииОстаток");
        
        ЭлементОтбораКомпоновкиДанных = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораКомпоновкиДанных.Использование = Истина;
        ЭлементОтбораКомпоновкиДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВНаличииОстаток");
        ЭлементОтбораКомпоновкиДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
        ЭлементОтбораКомпоновкиДанных.ПравоеЗначение = 500;
        
        ЭлементПорядкаКомпоновкиДанных = НастройкиКомпоновки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
        ЭлементПорядкаКомпоновкиДанных.Использование = Истина;
        ЭлементПорядкаКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
        ЭлементПорядкаКомпоновкиДанных.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
        
        УсловноеОформление = НастройкиКомпоновки.УсловноеОформление.Элементы.Добавить();
        УсловноеОформление.Использование = Истина;
        ВыбранноеПолеКомпоновкиДанных = УсловноеОформление.Поля.Элементы.Добавить();
        ВыбранноеПолеКомпоновкиДанных.Использование = Истина;
        ВыбранноеПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("ВНаличииОстаток");
        
        ВыбранноеПолеКомпоновкиДанных = УсловноеОформление.Поля.Элементы.Добавить();
        ВыбранноеПолеКомпоновкиДанных.Использование = Истина;
        ВыбранноеПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
        
        УсловноеОформление.ИспользоватьВЗаголовке         = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
        УсловноеОформление.ИспользоватьВЗаголовкеПолей  = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
        УсловноеОформление.ИспользоватьВОбщемИтоге         = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
        
        ЭлементОтбораКомпоновкиДанных = УсловноеОформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораКомпоновкиДанных.Использование = Истина;
        ЭлементОтбораКомпоновкиДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВНаличииОстаток");
        ЭлементОтбораКомпоновкиДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
        ЭлементОтбораКомпоновкиДанных.ПравоеЗначение = 1000;
        
        УсловноеОформление.Оформление.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветФона"), WebЦвета.Желтый);
        
    КонецЕсли;    
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки);
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    |    ТоварыНаСкладах.Склад,
    |    ТоварыНаСкладах.ВНаличииОстаток КАК ВНаличииОстаток
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладах";
    
    ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
    
    ВнешниеНаборы = Новый Структура("ТаблицаОстатков", ТаблицаОстатков);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры
26 ДенисЧ
 
18.12.20
16:20
(25) В схеме нет компоновщика в явном виде
Создаёшь объект и ему .ЗагрузитьНастройки(схема.ПолучитьНастройкиПоУмолчанию)
27 OnePrg
 
19.12.20
00:27
Таблицу значений в СКД загрузил, отбор на форме есть, но как теперь в полях отбора добавить реквизиты полей

http://imagizer.imageshack.com/img924/981/K75cjD.png

    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;

    ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя                     = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных     = "Local";

    НаборДанныхОбъектСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанныхОбъектСхемыКомпоновкиДанных.Имя                 = "НаборДанных1";
    НаборДанныхОбъектСхемыКомпоновкиДанных.ИмяОбъекта         = "тб";
    НаборДанныхОбъектСхемыКомпоновкиДанных.ИсточникДанных     = "ИсточникДанных1";    
    
    Для каждого колонка из тб.Колонки Цикл
        ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        ПолеНабораДанныхСхемыКомпоновкиДанных.Поле             = Колонка.Имя;
        ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным     = Колонка.Имя;
        ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок     = Колонка.Имя;
    КонецЦикла;
    
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    НастройкиКомпоновки = КомпоновщикНастроек.Настройки;
    
    ГруппировкаКомпоновкиДанных1 = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ГруппировкаКомпоновкиДанных1.Использование         = Истина;
    ПолеГруппировкиКомпоновкиДанных                 = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировкиКомпоновкиДанных.Использование     = Истина;
    ПолеГруппировкиКомпоновкиДанных.Поле             = Новый ПолеКомпоновкиДанных(тб.Колонки[0].Имя);    
    
    АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина;    
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки);
    
    ВнешниеНаборы = Новый Структура("тб", тб);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы);
    
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
28 OnePrg
 
19.12.20
00:30
Нашел.

    ПолеНабораДанныхСхемыКомпоновкиДанных.ТипЗначения    = Колонка.ТипЗначения;

Рабочий код прилагаю. Всем спасибо!

    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;

    ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя                     = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных     = "Local";

    НаборДанныхОбъектСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанныхОбъектСхемыКомпоновкиДанных.Имя                 = "НаборДанных1";
    НаборДанныхОбъектСхемыКомпоновкиДанных.ИмяОбъекта         = "тб";
    НаборДанныхОбъектСхемыКомпоновкиДанных.ИсточникДанных     = "ИсточникДанных1";    
    
    Для каждого колонка из тб.Колонки Цикл
        ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        ПолеНабораДанныхСхемыКомпоновкиДанных.Поле             = Колонка.Имя;
        ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным     = Колонка.Имя;
        ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок     = Колонка.Имя;
        ПолеНабораДанныхСхемыКомпоновкиДанных.ТипЗначения    = Колонка.ТипЗначения;
    КонецЦикла;
    
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    НастройкиКомпоновки = КомпоновщикНастроек.Настройки;
    
    ГруппировкаКомпоновкиДанных1 = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ГруппировкаКомпоновкиДанных1.Использование         = Истина;
    ПолеГруппировкиКомпоновкиДанных                 = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировкиКомпоновкиДанных.Использование     = Истина;
    ПолеГруппировкиКомпоновкиДанных.Поле             = Новый ПолеКомпоновкиДанных(тб.Колонки[0].Имя);    
    
    АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина;    
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки);
    
    ВнешниеНаборы = Новый Структура("тб", тб);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы);
    
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.