| 0
    
        Web00001   29.09.23✎ 14:10 | 
        Всем привет. Курю разработку печатных форм посредством автоматической компоновки. В случае если данные можно описать посредством компоновки все прекрасно. Данные в СКД. Имя макета в идентификаторе - все работает. Но у меня много полей которые сложно так описать. Всякие там склонения и проч. Нужна небольшая постобработка представлений значений после запроса. В документации для таких случаев предлагают использовать процедуру "ПриПодготовкеДанныхПечати" и в макете использовать тип набора данных "Объект". Но не могу ума приложить как туда передать данные табличной части выводимого объекта. Выражения плана "Ссылка.ИмяТЧ.ИмяРеквизита" игнорируется. Передача таблицы, в значение макета СКД тоже не к чему приводит. Каким образом это должно работать?     |  | 
    
        | 1
    
        shuhard   29.09.23✎ 14:18 | 
        (0) 
НаборДанных - Объект
 
 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 
 СтандартнаяОбработка = Ложь;
 ПользовательскиеНастройкиМодифицированы = Ложь;
 
 УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы);
 
 // Подготовим и выведем отчет.
 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
 
 НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
 
 МакетКомпоновки = КомпоновщикМакета.Выполнить(
 СхемаКомпоновкиДанных,
 НастройкиКомпоновкиДанных,
 ДанныеРасшифровки);
 
 ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
 
 НаборДанных = СтоимостьМатериаловИРабот();
 
 
 
 Функция СтоимостьМатериаловИРабот()
 
 ТипПараметра = ТипЗнч(Основание);
 
 Запрос = Новый Запрос;
 МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
 
 Если ТипПараметра = Тип("СправочникСсылка.РесурсныеСпецификации") Тогда
 ДанныеСпецификацииВМенеджерВременныхТаблиц(МенеджерВременныхТаблиц);
 Иначе
 ДанныеЗаказаВМенеджерВременныхТаблиц(МенеджерВременныхТаблиц);
 КонецЕсли;
 
 Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
 
 Запрос.УстановитьПараметр("Период", Период);
 Запрос.УстановитьПараметр("Основание", Основание);
 Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
 
 Если ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25() Тогда
 Запрос.Текст = ТекстЗапросаСтоимостьМатериаловИРабот2_5();
 Иначе
 Запрос.Текст = ТекстЗапросаСтоимостьМатериаловИРабот();
 КонецЕсли;
 
 Результат = Запрос.Выполнить().Выгрузить();
 
 Возврат Результат;
 
 КонецФункции
 |  |