Имя: Пароль:
1C
 
Разработка команды печати для автоматической компоновки печатной формы
0 Web00001
 
29.09.23
14:10
Всем привет. Курю разработку печатных форм посредством автоматической компоновки. В случае если данные можно описать посредством компоновки все прекрасно. Данные в СКД. Имя макета в идентификаторе - все работает. Но у меня много полей которые сложно так описать. Всякие там склонения и проч. Нужна небольшая постобработка представлений значений после запроса. В документации для таких случаев предлагают использовать процедуру "ПриПодготовкеДанныхПечати" и в макете использовать тип набора данных "Объект". Но не могу ума приложить как туда передать данные табличной части выводимого объекта. Выражения плана "Ссылка.ИмяТЧ.ИмяРеквизита" игнорируется. Передача таблицы, в значение макета СКД тоже не к чему приводит. Каким образом это должно работать?
1 shuhard
 
29.09.23
14:18
(0)
НаборДанных - Объект

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



Функция СтоимостьМатериаловИРабот()
    
    ТипПараметра = ТипЗнч(Основание);
    
    Запрос = Новый Запрос;
    МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    Если ТипПараметра = Тип("СправочникСсылка.РесурсныеСпецификации") Тогда
        ДанныеСпецификацииВМенеджерВременныхТаблиц(МенеджерВременныхТаблиц);
    Иначе
        ДанныеЗаказаВМенеджерВременныхТаблиц(МенеджерВременныхТаблиц);
    КонецЕсли;
    
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("Период", Период);
    Запрос.УстановитьПараметр("Основание", Основание);
    Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
    
    Если ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25() Тогда
        Запрос.Текст = ТекстЗапросаСтоимостьМатериаловИРабот2_5();
    Иначе
        Запрос.Текст = ТекстЗапросаСтоимостьМатериаловИРабот();
    КонецЕсли;
    
    Результат = Запрос.Выполнить().Выгрузить();
    
    Возврат Результат;
    
КонецФункции
2 Web00001
 
29.09.23
14:28
(1)Не совсем понятно где здесь печатная форма документа\справочника
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn