Внешняя печатная форма на основании внешнего отчета Или Внешний отчет на основании документа
Добрый день.
Есть такой вопрос. Можно ли сделать внешний отчет, и формировать его на основании данных документа?
Такой вопрос возник потому, что в ЗУП 3.1 Есть документ, у которого есть печатная форма, но данная печатная форма формируется из отчета, который я не хочу править чтобы не снимать конфигурацию с поддержки и сохранил этот типовой отчет как внешний. И когда я формирую этот отчет, то в нем не заполняются некоторые данные документа, например дата и номер.
Можно ли что-то придумать в моем случае?
Есть такой вопрос. Можно ли сделать внешний отчет, и формировать его на основании данных документа?
Такой вопрос возник потому, что в ЗУП 3.1 Есть документ, у которого есть печатная форма, но данная печатная форма формируется из отчета, который я не хочу править чтобы не снимать конфигурацию с поддержки и сохранил этот типовой отчет как внешний. И когда я формирую этот отчет, то в нем не заполняются некоторые данные документа, например дата и номер.
Можно ли что-то придумать в моем случае?
По теме из базы знаний
- Разбираемся с механизмом Дополнительные отчеты и обработки в БСП
- Несколько команд печати у одной внешней печатной формы для разных вариантов отчета для документа Поступление товаров конфигурации Розница 2.2
- Акты на списание материалов (стандартный, с выбором комиссии, произвольный с выбором комиссии и доп. информацией) для требования-накладной для БП 3.0
- Инвентаризация расчетов с персоналом по заработной плате (форма ИНВ-17). КА 1.1
- Путевой лист автобуса необщего пользования по форме № 6 спец для Управления автотранспортом (УАТ)
Найденные решения
(11) Возьмите функцию ПечатьТ7 из модуля менеджера документа, скопируйте ее себе в модуль ВПФ и программно меняйте настройки отчета, в частности Порядок и Структуру:
// Начало Изменение настроек
Настройки = ОтчетТ7.КомпоновщикНастроек.Настройки;
Настройки.Порядок.Элементы.Очистить();
НовыйПорядок = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
НовыйПорядок.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
Настройки.Структура.Очистить();
// Группировка Организация
ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаОрганизация.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация");
ГруппировкаОрганизация.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Группировка ГодГрафика
ГруппировкаГодГрафика = ГруппировкаОрганизация.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаГодГрафика.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ГодГрафика");
ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НомерДок");
ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ДатаДок");
// Группировка ДатаНачала
ГруппировкаДатаНачала = ГруппировкаГодГрафика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаДатаНачала.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
ГруппировкаДатаНачала.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Группировка Сотрудник
ГруппировкаСотрудник = ГруппировкаДатаНачала.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");
ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Группировка Детальные записи
ДетальныеЗаписи = ГруппировкаСотрудник.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Конец изменение настроек
ПоказатьПрикрепленные файлы:
ВПФ_ГрафикОтпусков_Т7.epf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Пытался все это провернуть в отчете ГрафикОтпусков, но ничего не получилось.
А что я сделал: я сохранил типовой отчет как внешний, добавил в модуль объекта немного кода, для того чтобы его можно было привязать как внешний отчет в базу. А вот дальше возник ступор. Я добавил реквизит СсылкаНаОбъект и не знаю как его в этот отчете использовать, чтобы данные из этого документа ГрафикОтпусков заполнял данные отчета.
Пытался разобраться с типовым решением, но там уж сильно все замудрено. Добавлял во внешний отчет свой типовые функции печати из документа "ГрафикОтпусков" но ничего не получилось. Сможете подсказать или помочь каким образом можно настроить СсылкуНаОбъект, чтобы отчет показывал желаемый результат?
Во вложении я прикрепляю тот внешний отчет который у меня получился.
А что я сделал: я сохранил типовой отчет как внешний, добавил в модуль объекта немного кода, для того чтобы его можно было привязать как внешний отчет в базу. А вот дальше возник ступор. Я добавил реквизит СсылкаНаОбъект и не знаю как его в этот отчете использовать, чтобы данные из этого документа ГрафикОтпусков заполнял данные отчета.
Пытался разобраться с типовым решением, но там уж сильно все замудрено. Добавлял во внешний отчет свой типовые функции печати из документа "ГрафикОтпусков" но ничего не получилось. Сможете подсказать или помочь каким образом можно настроить СсылкуНаОбъект, чтобы отчет показывал желаемый результат?
Во вложении я прикрепляю тот внешний отчет который у меня получился.
Прикрепленные файлы:
ГрафикОтпусков.erf
(3) У тебя внешний отчет ГрафикОтпусков по факту ничего не формирует, он лишь служит оберткой для вызова типового отчета ГрафикОтпусков. В процедуре ПечатьТ7
Ну и все вхождения ОтчетТ7 убери ниже по тексту процедуры.
Попробуй поменять на
Потом дебажь процедуру ПриКомпоновкеРезультата своего отчета, там весь вывод в таб.док идет.
ОтчетТ7 = Отчеты.ГрафикОтпусков.Создать();
ОтчетТ7.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетТ7.СхемаКомпоновкиДанных.ВариантыНастроек.Т7.Настройки);
ОтчетТ7.ИнициализироватьОтчет();
ОтчетТ7.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", "Т7");
...............
ОтчетТ7.СкомпоноватьРезультат(ДокументРезультат);
Попробуй поменять на
//ОтчетТ7 = Отчеты.ГрафикОтпусков.Создать();
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Т7.Настройки);
ИнициализироватьОтчет();
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", "Т7");
//+
Поле = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Поле.Поле = Новый ПолеКомпоновкиДанных("ИмяТвоегоПоляИзСхемыКомпоновки");
Потом дебажь процедуру ПриКомпоновкеРезультата своего отчета, там весь вывод в таб.док идет.
Нужно передать СсылкуНаОбъект в процедуру Печать в массиве. Важно что кроме этого первого параметра массивобъектов, нужно также передать обязательные остальные параметры. Принцип их формирования можно посмотреть в самой конфигурации.
Вызвать процедура Печать нужно на сервере так
РеквизитФормыВЗначение("Объект").Печать(МассивОбъектов.....);
Вызвать процедура Печать нужно на сервере так
РеквизитФормыВЗначение("Объект").Печать(МассивОбъектов.....);
(10)Вот-вот. Изначально требуется, чтобы в печатной форме ГрафикОтпусков, формируемой из документа ГрафикОтпусков, сортировка была только по дате начала отпуска. Добиться такого результата я смог только если изменить настройки в группировке. Снимать с поддержки конфигурацию я не хотел и потому придумал для себя такой метод.
Также в разделе кадровые отчеты есть отчет ГрафикОтпусков , который я настроил под требования, но в этот отчет не подтягиваются данные из документа (Номер дата и так далее). Он просто формирует данные графика отпусков из регистра скорей всего, по всем документам.
Также в разделе кадровые отчеты есть отчет ГрафикОтпусков , который я настроил под требования, но в этот отчет не подтягиваются данные из документа (Номер дата и так далее). Он просто формирует данные графика отпусков из регистра скорей всего, по всем документам.
Прикрепленные файлы:

(11) Возьмите функцию ПечатьТ7 из модуля менеджера документа, скопируйте ее себе в модуль ВПФ и программно меняйте настройки отчета, в частности Порядок и Структуру:
// Начало Изменение настроек
Настройки = ОтчетТ7.КомпоновщикНастроек.Настройки;
Настройки.Порядок.Элементы.Очистить();
НовыйПорядок = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
НовыйПорядок.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
Настройки.Структура.Очистить();
// Группировка Организация
ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаОрганизация.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация");
ГруппировкаОрганизация.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Группировка ГодГрафика
ГруппировкаГодГрафика = ГруппировкаОрганизация.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаГодГрафика.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ГодГрафика");
ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НомерДок");
ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ДатаДок");
// Группировка ДатаНачала
ГруппировкаДатаНачала = ГруппировкаГодГрафика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаДатаНачала.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");
ГруппировкаДатаНачала.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Группировка Сотрудник
ГруппировкаСотрудник = ГруппировкаДатаНачала.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");
ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Группировка Детальные записи
ДетальныеЗаписи = ГруппировкаСотрудник.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Конец изменение настроек
ПоказатьПрикрепленные файлы:
ВПФ_ГрафикОтпусков_Т7.epf
(14) Был опыт дописки типовых печатных форм для ЗУПа, когда их перевели на отчеты. Но не факт что это решение оптимальное, возможно, достаточно было настроить свой вариант настроек отчета загрузить их в типовую схему перед печатью, чтобы не мучаться с программной генерацией.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот