Внешняя печатная форма на основании внешнего отчета Или Внешний отчет на основании документа

1. Dmitry888 41 17.12.20 18:44 Сейчас в теме
Добрый день.
Есть такой вопрос. Можно ли сделать внешний отчет, и формировать его на основании данных документа?

Такой вопрос возник потому, что в ЗУП 3.1 Есть документ, у которого есть печатная форма, но данная печатная форма формируется из отчета, который я не хочу править чтобы не снимать конфигурацию с поддержки и сохранил этот типовой отчет как внешний. И когда я формирую этот отчет, то в нем не заполняются некоторые данные документа, например дата и номер.
Можно ли что-то придумать в моем случае?
По теме из базы знаний
Найденные решения
12. SlavaKron 18.12.20 13:04 Сейчас в теме
(11) Возьмите функцию ПечатьТ7 из модуля менеджера документа, скопируйте ее себе в модуль ВПФ и программно меняйте настройки отчета, в частности Порядок и Структуру:
	// Начало Изменение настроек
	Настройки = ОтчетТ7.КомпоновщикНастроек.Настройки;
	Настройки.Порядок.Элементы.Очистить();
	НовыйПорядок = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
	НовыйПорядок.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
	
	Настройки.Структура.Очистить();	
	
	// Группировка Организация
	ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	
	ПолеГруппировки = ГруппировкаОрганизация.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация");
	
	ГруппировкаОрганизация.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	
	// Группировка ГодГрафика
	ГруппировкаГодГрафика = ГруппировкаОрганизация.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	
	ПолеГруппировки = ГруппировкаГодГрафика.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ГодГрафика");
	
	ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
	ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НомерДок");
	
	ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
	ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ДатаДок");	
	
	
	// Группировка ДатаНачала
	ГруппировкаДатаНачала = ГруппировкаГодГрафика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	
	ПолеГруппировки = ГруппировкаДатаНачала.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
	
	ГруппировкаДатаНачала.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	
	// Группировка Сотрудник
	ГруппировкаСотрудник = ГруппировкаДатаНачала.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	
	ПолеГруппировки = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");	
	
	ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	
	// Группировка Детальные записи
	ДетальныеЗаписи = ГруппировкаСотрудник.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));	
	
	// Конец изменение настроек
Показать
Прикрепленные файлы:
ВПФ_ГрафикОтпусков_Т7.epf
voneska7; AndKovalchuk; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ixijixi 1796 17.12.20 19:24 Сейчас в теме
Можно, почему нет)

Я так понимаю форма Т-1, Т-5 или типа того? Можно присмотреться к полю СсылкаНаОбъект, оттуда много чего можно вытянуть
3. Dmitry888 41 18.12.20 09:29 Сейчас в теме
(2)Пытался все это провернуть в отчете ГрафикОтпусков, но ничего не получилось.
А что я сделал: я сохранил типовой отчет как внешний, добавил в модуль объекта немного кода, для того чтобы его можно было привязать как внешний отчет в базу. А вот дальше возник ступор. Я добавил реквизит СсылкаНаОбъект и не знаю как его в этот отчете использовать, чтобы данные из этого документа ГрафикОтпусков заполнял данные отчета.
Пытался разобраться с типовым решением, но там уж сильно все замудрено. Добавлял во внешний отчет свой типовые функции печати из документа "ГрафикОтпусков" но ничего не получилось. Сможете подсказать или помочь каким образом можно настроить СсылкуНаОбъект, чтобы отчет показывал желаемый результат?
Во вложении я прикрепляю тот внешний отчет который у меня получился.
Прикрепленные файлы:
ГрафикОтпусков.erf
6. ixijixi 1796 18.12.20 09:52 Сейчас в теме
(3) У тебя внешний отчет ГрафикОтпусков по факту ничего не формирует, он лишь служит оберткой для вызова типового отчета ГрафикОтпусков. В процедуре ПечатьТ7
ОтчетТ7 = Отчеты.ГрафикОтпусков.Создать();
ОтчетТ7.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетТ7.СхемаКомпоновкиДанных.ВариантыНастроек.Т7.Настройки);
ОтчетТ7.ИнициализироватьОтчет();
ОтчетТ7.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", "Т7");
...............
ОтчетТ7.СкомпоноватьРезультат(ДокументРезультат);
Ну и все вхождения ОтчетТ7 убери ниже по тексту процедуры.

Попробуй поменять на
//ОтчетТ7 = Отчеты.ГрафикОтпусков.Создать();
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Т7.Настройки);
ИнициализироватьОтчет();
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", "Т7");
//+
Поле = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Поле.Поле = Новый ПолеКомпоновкиДанных("ИмяТвоегоПоляИзСхемыКомпоновки");


Потом дебажь процедуру ПриКомпоновкеРезультата своего отчета, там весь вывод в таб.док идет.
8. Dmitry888 41 18.12.20 10:08 Сейчас в теме
(6)ОтчетТ7 убрал, но результат не изменился. Думаю, то что я задумал это мне не под силам.
9. ixijixi 1796 18.12.20 10:10 Сейчас в теме
(8) Ну, не всё сразу) Отладчик в зубы, и вперед!)
4. Dmitry888 41 18.12.20 09:29 Сейчас в теме
5. aspirator23 339 18.12.20 09:40 Сейчас в теме
Нужно передать СсылкуНаОбъект в процедуру Печать в массиве. Важно что кроме этого первого параметра массивобъектов, нужно также передать обязательные остальные параметры. Принцип их формирования можно посмотреть в самой конфигурации.
Вызвать процедура Печать нужно на сервере так
РеквизитФормыВЗначение("Объект").Печать(МассивОбъектов.....);
7. Dmitry888 41 18.12.20 10:06 Сейчас в теме
(5)Не получается, не смог найти изначально эти параметры.
10. SlavaKron 18.12.20 11:13 Сейчас в теме
Не понятно какова изначальная задача. Если необходимо сделать внешнюю печатную форму на основании типовой Т7 с какими-то доработками, то вы не в том направлении двигаетесь.
11. Dmitry888 41 18.12.20 11:37 Сейчас в теме
(10)Вот-вот. Изначально требуется, чтобы в печатной форме ГрафикОтпусков, формируемой из документа ГрафикОтпусков, сортировка была только по дате начала отпуска. Добиться такого результата я смог только если изменить настройки в группировке. Снимать с поддержки конфигурацию я не хотел и потому придумал для себя такой метод.

Также в разделе кадровые отчеты есть отчет ГрафикОтпусков , который я настроил под требования, но в этот отчет не подтягиваются данные из документа (Номер дата и так далее). Он просто формирует данные графика отпусков из регистра скорей всего, по всем документам.
Прикрепленные файлы:
12. SlavaKron 18.12.20 13:04 Сейчас в теме
(11) Возьмите функцию ПечатьТ7 из модуля менеджера документа, скопируйте ее себе в модуль ВПФ и программно меняйте настройки отчета, в частности Порядок и Структуру:
	// Начало Изменение настроек
	Настройки = ОтчетТ7.КомпоновщикНастроек.Настройки;
	Настройки.Порядок.Элементы.Очистить();
	НовыйПорядок = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
	НовыйПорядок.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
	
	Настройки.Структура.Очистить();	
	
	// Группировка Организация
	ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	
	ПолеГруппировки = ГруппировкаОрганизация.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация");
	
	ГруппировкаОрганизация.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	
	// Группировка ГодГрафика
	ГруппировкаГодГрафика = ГруппировкаОрганизация.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	
	ПолеГруппировки = ГруппировкаГодГрафика.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ГодГрафика");
	
	ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
	ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НомерДок");
	
	ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
	ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ДатаДок");	
	
	
	// Группировка ДатаНачала
	ГруппировкаДатаНачала = ГруппировкаГодГрафика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	
	ПолеГруппировки = ГруппировкаДатаНачала.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
	
	ГруппировкаДатаНачала.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	
	// Группировка Сотрудник
	ГруппировкаСотрудник = ГруппировкаДатаНачала.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	
	ПолеГруппировки = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");	
	
	ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	
	// Группировка Детальные записи
	ДетальныеЗаписи = ГруппировкаСотрудник.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));	
	ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));	
	
	// Конец изменение настроек
Показать
Прикрепленные файлы:
ВПФ_ГрафикОтпусков_Т7.epf
voneska7; AndKovalchuk; +2 Ответить
14. Dmitry888 41 18.12.20 14:57 Сейчас в теме
(12)Это то, что надо было. Интересно, как вы к такому пришли, как поняли, что проще в таком ключе все настраивать и не изобретать что-то сверх непонятное (через внешний отчет)...наверно большой опыта?
15. SlavaKron 18.12.20 15:06 Сейчас в теме
(14) Был опыт дописки типовых печатных форм для ЗУПа, когда их перевели на отчеты. Но не факт что это решение оптимальное, возможно, достаточно было настроить свой вариант настроек отчета загрузить их в типовую схему перед печатью, чтобы не мучаться с программной генерацией.
16. Dmitry888 41 18.01.21 15:15 Сейчас в теме
(15)Добрый день. Подскажите, пожалуйста, для релиза 2.5 данный алгоритм создания внешней печатной формы с сортировкой подойдет? Или там намного все сложнее и замудреннее?
17. SlavaKron 18.01.21 15:18 Сейчас в теме
(16) Речь про ЗУП 2.5 на обычных формах?
18. Dmitry888 41 18.01.21 15:19 Сейчас в теме
19. SlavaKron 18.01.21 15:22 Сейчас в теме
(18) Там другой механизм внешних печатных форм. Другая структура данных. По сути, это совершенно разные конфигурации, данная тема никак не может помочь в вопросе ВПФ для ЗУП 2.5.
20. Dmitry888 41 18.01.21 15:36 Сейчас в теме
(19)Ясно. Создам новую. Может быть из-за того, что в данном релизе 2.5 совсем все по другому, то и есть более легкий способ и меток получить желаемую сортировку в печати типовой печатной формы.
13. AndKovalchuk 192 18.12.20 13:25 Сейчас в теме
(11)вообще-то все это настраивается при настройке варианта отчета. Не очень понимаю, кто мешает создать еще один вариант отчета?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот