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