Здравствуйте! нужна помощь, недавно в 1с. Ситуация следующая: необходимо на основе имеющейся печатной формы УПД создать внешнюю форму упд. Я нашла обработку "ПечатьУПД", взяла оттуда макет, создала внешнюю обработку, заполнила "СведенияОВнешнейОбработке", но я не понимаю, где найти исходную (встроенную) УПД, чтобы на основе ее сделать внешнюю. Работаю в БП 3 управляемой, уточню что на учебной версии. Какие данные копировать из кода и где его брать - главный вопрос
---
Классический способ - найти функцию, которая возвращает табличный документ конкретной печатной формы и скопировать её в ВПФ. Далее нужно запустить печать ВПФ, получить ошибку метод объекта не обнаружен, найти этот метод, перенести в ВПФ и так далее, пока ВПФ не начнет формироваться без ошибок.

Как найти где формируется табличный документ - обычно в модуле менеджера документа есть экспортная процедура Печать(), в ней всё и происходит.

Конкретно для УПД в БП3 в модуле менеджера РТУ есть вот такой код:

```1c
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УниверсальныйПередаточныйДокументКомплект") Тогда
    ИменаФайлов = Неопределено;
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УниверсальныйПередаточныйДокумент", "УПД",
    УчетНДС.ПечатьКомплектаУПД(КоллекцияПечатныхФорм, МассивОбъектов, ОбъектыПечати, ИменаФайлов, ПараметрыПечати, ПараметрыВывода),,, ИменаФайлов);
    КонецЕсли;
```

Функция УчетНДС.ПечатьКомплектаУПД() возвращает объект с типом ТабличныйДокумент - это то, что тебе нужно.
---
Функция ПечатьКомплектаУПД() - это и есть СформироватьПечатнуюФорму(). Если скопировать её в ВФП и вызвать в экспортной процедуре Печать, то получишь табличный документ, который останется только вывести на экран:

```1c
    ТабличныйДокумент = ПечатьКомплектаУПД(...);
    ТабличныйДокумент.Показать();
```

Или можно сделать так, как это делается в модуле менеджера документа через УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(), тогда документ будет выведен в специальной форме, как при типовой печати
---
Администрирование - Печатные формы - Макеты печатных форм?
---
в конфигураторе, а не в пользовательском режиме нужно(
---
Главное правило 1с: Если что-то можно сделать в пользовательском режиме, нужно в нем и делать.
---
В конфигураторе при активной отладке нажми на паузу, затем в режиме предприятия нажми кнопку, которая запускает печать УПД. Таким образом ты встанешь на первую строку обработчика события нажатия этой кнопки. Откуда уже пошагово можно посмотреть, как работает механизм печати УПД, откуда берется макет и каким образом он заполняется.
---
я нашла, как это работает, спасибо) но (сразу извиняюсь за тупые вопросы, я не совсем разбираюсь еще), как понять, что именно мне нужно скопировать (какие функции процедуры) в свою внешнюю пф?....
---
Классический способ - найти функцию, которая возвращает табличный документ конкретной печатной формы и скопировать её в ВПФ. Далее нужно запустить печать ВПФ, получить ошибку метод объекта не обнаружен, найти этот метод, перенести в ВПФ и так далее, пока ВПФ не начнет формироваться без ошибок.

Как найти где формируется табличный документ - обычно в модуле менеджера документа есть экспортная процедура Печать(), в ней всё и происходит.

Конкретно для УПД в БП3 в модуле менеджера РТУ есть вот такой код:

```1c
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УниверсальныйПередаточныйДокументКомплект") Тогда
    ИменаФайлов = Неопределено;
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УниверсальныйПередаточныйДокумент", "УПД",
    УчетНДС.ПечатьКомплектаУПД(КоллекцияПечатныхФорм, МассивОбъектов, ОбъектыПечати, ИменаФайлов, ПараметрыПечати, ПараметрыВывода),,, ИменаФайлов);
    КонецЕсли;
```

Функция УчетНДС.ПечатьКомплектаУПД() возвращает объект с типом ТабличныйДокумент - это то, что тебе нужно.
---
УчетНДС.ПечатьКомплектаУПД Спасибо, вроде как разобралась (надеюсь): меня перебросило в общий модуль учет ндс, я копировала процедуры и функции, на которые ссылались ошибки, пока ошибки эти не ушли. осталось самое страшное - функция "СформироватьПечатнуюФорму" . Вот ее я не особо понимаю откуда тащить, не ссылает (вручную писать - боже упаси, да и задача состоит в том, чтобы найти и скопировать). подскажите еще, пожалуйста, правильно ли меня сослало на общий модуль?
---
Функция ПечатьКомплектаУПД() - это и есть СформироватьПечатнуюФорму(). Если скопировать её в ВФП и вызвать в экспортной процедуре Печать, то получишь табличный документ, который останется только вывести на экран:

```1c
    ТабличныйДокумент = ПечатьКомплектаУПД(...);
    ТабличныйДокумент.Показать();
```

Или можно сделать так, как это делается в модуле менеджера документа через УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(), тогда документ будет выведен в специальной форме, как при типовой печати
---
спасибо огромное за разъяснение!) буду пробовать, вы мне очень помогли!
---
доп вопрос.....извините....этот код, который вы в (10) показали, его нужно именно в процедуре печать передавать? или я путаю?....
---
Да
---
спасибо!)
---
на всякий случай прикрепляю файл
---
Создала впф для БП 3 управляемого приложения. Выходят ошибки именно при нажатии кнопки в пользовательском режиме, при проверке в конфигураторе ошибок нет. Не понимаю, в чем проблема, так как недавно начала изучать и это моя первая впф. Подскажите, как исправить, пожалуйста. И правильно ли вообще написано?