Имя: Пароль:
1C
 
Не получается с компоновкой в очередной раз...
0 mikecool
 
01.07.19
21:56
Есть внешняя обработка, пробую сделать универсальной
Реквизит обработки КомпоновщикНастроек - Тип КомпоновщикНастроекКомпоновкиДанных
Программно формирую схему компоновки

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

запрос получаю так:
Функция ТекстЗапросаВыгрузки()
    
    ТекстЗапроса = (
        "ВЫБРАТЬ
        |    *
        |ИЗ
        |    Документ.%1 КАК Шапка"
    );
    
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%1", СокрЛП(ВыгружаемыйОбъект));
    Возврат ТекстЗапроса;
    
КонецФункции

компоновщик лежит на обычной форме в табличном поле, инициализирую его:
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаВыгрузки));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаВыгрузки.НастройкиПоУмолчанию);    
тут все работает, отборы могу добавлять в пользовательском режиме

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

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

где я ошибся?
1 palsergeich
 
01.07.19
22:29
На ум приходит только одно - что то не то с СхемаВыгрузки = Новый СхемаКомпоновкиДанных вот этим куском
2 segn
 
02.07.19
04:42
В КомпоновщикМакета.Выполнить() необходимо указать параметр ТипГенератора.
3 mikecool
 
02.07.19
09:55
(2) точно! спасибо.
(1) а чего там может быть не так?
4 mikecool
 
02.07.19
10:23
отрабатывать стало, вот только каждый раз результат - пустой (((
5 mikecool
 
02.07.19
10:36
не хватало после добавления группировки
    ПолеВыбора = СхемаВыгрузки.НастройкиПоУмолчанию.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
    ПолеВыбора.Использование = Истина;