Пример создания внешней печатной форм.
После анализа статей представленных на данном сайте, я к сожалению не нашел информации, где подробно был представлен пример создания печатных форм. Поработав не много со своими отчетами, я выработал некоторую методику, которой и хочу поделиться.
Хочу поблагодарить автора за хорошую статью //infostart.ru/public/180159/, которая помогла мне в написании данной публикации.
Также автор с обработкой по отладке внешних печатных форм //infostart.ru/public/73691/
Вступление.
Пример будет базироваться на типовом отчете из документа "СчетНаОплатуПокупателю". Файл шаблона можно взять во вложении.
Первый этап: Поиск типового шаблона и модулей
1. Скачиваем ИСХОДНЫЙ ШАБЛОН приложенный к данной статье "Шаблон печатной формы (УП).epf".
2. Создаем копию ИСХОДНОГО ШАБЛОНА даем ему название на пример "СчетНаОплату.epf", далее открываем его в конфигураторе. Это будет наш ШАБЛОН, с которым мы будем далее работать.
3. В дереве конфигуратора находим документ, печатную форму которого мы планируем переделать. В нашем случае - это документ "СчетНаОплатуПокупателю"
4. Копируем в буфер макет
5. Помещаем скопированный макет в наш ШАБЛОН "СчетНаОплату"
6. Открываем модуль менеджера документа "СчетНаОплатуПокупателю"
Находим процедуре "Печать". Обратите внимание, что в данной процедуре находятся все функции печати документа.
Для примера я возьму одну из них:
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетЗаказСПечатью") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетЗаказСПечатью", "Счет на оплату",
ПечатьДокумента(МассивОбъектов, ОбъектыПечати, Истина),,"Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ");
КонецЕсли;
Итак, как вы можете видеть нам нужна Функция "ПечатьДокумента". Найдем ее в модуле менеджера и скопируем в наш Шаблон.
7. Нажимаем на кнопку "Проверка модуля" или сочетание клавиш (Ctl+F7)
Получаем сообщение со списком ошибок:
{ВнешняяОбработка.СчетНаОплатуПокупателя.МодульОбъекта(118,17)}: Процедура или функция с указанным именем не определена (ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю)
Запрос.Текст = <>ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю(); (Проверка: Сервер)
{ВнешняяОбработка.СчетНаОплатуПокупателя.МодульОбъекта(138,3)}: Процедура или функция с указанным именем не определена (ВывестиЗаголовокПредупреждение)
<>ВывестиЗаголовокПредупреждение(Шапка.Получатель, ТабличныйДокумент, Макет); (Проверка: Сервер)
Из текста предупреждения видно, что не хватает еще двух Функций/Процедур:
а. ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю()
б. ВывестиЗаголовокПредупреждение(Шапка.Получатель, ТабличныйДокумент, Макет)
Перенесем их из модуля менеджера документа СчетНаОплатуПокупателя в наш ШАБЛОН и повторно нажмем на кнопку "Проверка модуля".
8. Пункт 7 необходимо производить до тех пор, пока не появится сообщение:
Синтаксических ошибок не обнаружено!
9. Остался последний нюанс.
а. В ШАБЛОНЕ находим функцию ПечатьДокумента(), в ней находим строку где определяется переменная "Макет = " и комментируем ее.
в. Вместо закомментированной строки определим переменную "Макет = " указав путь к нашему макету см. п.4.
У вас должно получиться следующее:
//Макет = УправлениеПечатью.ПолучитьМакет("Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ");
Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_СчетЗаказ");
10. Заполним сведения о Печатной форме, которая находятся под Функция СведенияОВнешнейОбработке()
а. Идентификатор = "СчетНаОплатуПокупателя" //Идентификатор внешней печатной формы
б. Представление = "Счет"; //Имя команды в интерфейсе
в. ПрефиксВПФ = "Внешний"; //Префикс добавляемый к имени команды интерфейса, для отделения от встроенных команд (ХХХХХХХ)
г. МассивНазначений = Новый Массив; //Массив объектов метаданных, для которых будут определены печатная форма
МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю"); // в нашем случае - это документ СчетНаОплатуПокупателю. Название копируем из конфигуратора см. п.3. Может быть массив документов, если печатная форма работает с несколькими типами документов.
Всего за 10 пунктов мы смогли сделать внешнюю печатную форму, на основе типового СчетаНаОплату.
Далее вы дорабатываете его в соответствии с потребностями вашего предприятия.
И теперь самое приятное.
Данная обработка позволяет производить отладку в клиент-серверном режиме (в тонком клиенте).
Это был мой первый опыт написания подобных статей, прошу не судить строго.
Спасибо всем, кто дочитал до конца.