Добрый день.
Есть такой вопрос. Можно ли сделать внешний отчет, и формировать его на основании данных документа?

Такой вопрос возник потому, что в ЗУП 3.1 Есть документ, у которого есть печатная форма, но данная печатная форма формируется из отчета, который я не хочу править чтобы не снимать конфигурацию с поддержки и сохранил этот типовой отчет как внешний. И когда я формирую этот отчет, то в нем не заполняются некоторые данные документа, например дата и номер.
Можно ли что-то придумать в моем случае?
---
Возьмите функцию ПечатьТ7 из модуля менеджера документа, скопируйте ее себе в модуль ВПФ и программно меняйте настройки отчета, в частности Порядок и Структуру:
```1c
    // Начало Изменение настроек
    Настройки = ОтчетТ7.КомпоновщикНастроек.Настройки;
    Настройки.Порядок.Элементы.Очистить();
    НовыйПорядок = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
    НовыйПорядок.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");

    Настройки.Структура.Очистить();

    // Группировка Организация
    ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаОрганизация.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация");

    ГруппировкаОрганизация.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Группировка ГодГрафика
    ГруппировкаГодГрафика = ГруппировкаОрганизация.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаГодГрафика.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ГодГрафика");

    ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НомерДок");

    ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ДатаДок");

    // Группировка ДатаНачала
    ГруппировкаДатаНачала = ГруппировкаГодГрафика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаДатаНачала.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");

    ГруппировкаДатаНачала.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Группировка Сотрудник
    ГруппировкаСотрудник = ГруппировкаДатаНачала.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");

    ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Группировка Детальные записи
    ДетальныеЗаписи = ГруппировкаСотрудник.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Конец изменение настроек
```
---
Можно, почему нет)

Я так понимаю форма Т-1, Т-5 или типа того? Можно присмотреться к полю СсылкаНаОбъект, оттуда много чего можно вытянуть
---
Пытался все это провернуть в отчете ГрафикОтпусков, но ничего не получилось.
А что я сделал: я сохранил типовой отчет как внешний, добавил в модуль объекта немного кода, для того чтобы его можно было привязать как внешний отчет в базу. А вот дальше возник ступор. Я добавил реквизит СсылкаНаОбъект и не знаю как его в этот отчете использовать, чтобы данные из этого документа ГрафикОтпусков заполнял данные отчета.
Пытался разобраться с типовым решением, но там уж сильно все замудрено. Добавлял во внешний отчет свой типовые функции печати из документа "ГрафикОтпусков" но ничего не получилось. Сможете подсказать или помочь каким образом можно настроить СсылкуНаОбъект, чтобы отчет показывал желаемый результат?
Во вложении я прикрепляю тот внешний отчет который у меня получился.
---
У тебя внешний отчет ГрафикОтпусков по факту ничего не формирует, он лишь служит оберткой для вызова типового отчета ГрафикОтпусков. В процедуре ПечатьТ7

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

Попробуй поменять на

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

Потом дебажь процедуру ПриКомпоновкеРезультата своего отчета, там весь вывод в таб.док идет.
---
ОтчетТ7 убрал, но результат не изменился. Думаю, то что я задумал это мне не под силам.
---
Ну, не всё сразу) Отладчик в зубы, и вперед!)
---
Форма Т-7.
---
Нужно передать СсылкуНаОбъект в процедуру Печать в массиве. Важно что кроме этого первого параметра массивобъектов, нужно также передать обязательные остальные параметры. Принцип их формирования можно посмотреть в самой конфигурации.
Вызвать процедура Печать нужно на сервере так
РеквизитФормыВЗначение("Объект").Печать(МассивОбъектов.....);
---
Не получается, не смог найти изначально эти параметры.
---
Не понятно какова изначальная задача. Если необходимо сделать внешнюю печатную форму на основании типовой Т7 с какими-то доработками, то вы не в том направлении двигаетесь.
---
Вот-вот. Изначально требуется, чтобы в печатной форме ГрафикОтпусков, формируемой из документа ГрафикОтпусков, сортировка была только по дате начала отпуска. Добиться такого результата я смог только если изменить настройки в группировке. Снимать с поддержки конфигурацию я не хотел и потому придумал для себя такой метод.

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

    Настройки.Структура.Очистить();

    // Группировка Организация
    ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаОрганизация.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация");

    ГруппировкаОрганизация.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Группировка ГодГрафика
    ГруппировкаГодГрафика = ГруппировкаОрганизация.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаГодГрафика.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ГодГрафика");

    ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НомерДок");

    ПолеВыбора = ГруппировкаГодГрафика.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ДатаДок");

    // Группировка ДатаНачала
    ГруппировкаДатаНачала = ГруппировкаГодГрафика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаДатаНачала.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");

    ГруппировкаДатаНачала.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Группировка Сотрудник
    ГруппировкаСотрудник = ГруппировкаДатаНачала.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

    ПолеГруппировки = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");

    ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Группировка Детальные записи
    ДетальныеЗаписи = ГруппировкаСотрудник.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Конец изменение настроек
```
---
Это то, что надо было. Интересно, как вы к такому пришли, как поняли, что проще в таком ключе все настраивать и не изобретать что-то сверх непонятное (через внешний отчет)...наверно большой опыта?
---
Был опыт дописки типовых печатных форм для ЗУПа, когда их перевели на отчеты. Но не факт что это решение оптимальное, возможно, достаточно было настроить свой вариант настроек отчета загрузить их в типовую схему перед печатью, чтобы не мучаться с программной генерацией.
---
Добрый день. Подскажите, пожалуйста, для релиза 2.5 данный алгоритм создания внешней печатной формы с сортировкой подойдет? Или там намного все сложнее и замудреннее?
---
Речь про ЗУП 2.5 на обычных формах?
---
Да все верно.
---
Там другой механизм внешних печатных форм. Другая структура данных. По сути, это совершенно разные конфигурации, данная тема никак не может помочь в вопросе ВПФ для ЗУП 2.5.
---
Ясно. Создам новую. Может быть из-за того, что в данном релизе 2.5 совсем все по другому, то и есть более легкий способ и меток получить желаемую сортировку в печати типовой печатной формы.
---
вообще-то все это настраивается при настройке варианта отчета. Не очень понимаю, кто мешает создать еще один вариант отчета?