полныйпутькмакету внешняя печатная форма

Внешние печатные формы в 1С 8.2 и 8.3

Изменение встроенных в типовые конфигурации печатных форм — это, вероятно, одна из наиболее распространенных доработок типовых конфигураций. Чтобы каждый раз не изменять саму конфигурацию, компания «1С» создала механизм внешних печатных форм.

Внешняя печатная форма — это обычная внешняя обработка, соответствующая определенным требованиям. Такую обработку можно подключить к какой-либо типовой конфигурации и тем самым добавить новую печатную форму и/или заменить существующую.

Кроме этого, нужно отметить, что создание внешних печатных форм различается для обычного приложения (Бухгалтерия 2.0.*, ЗиУП 2.5.*, УТ 10.3.*) и управляемого приложения (Бухгалтерия 3.0.*, ЗиУП 3.*, УТ 11.*). В статье будут рассмотрены оба варианта.

Также нужно сказать, что вопросы отладки внешних печатных форм и для управляемого и для обычного приложения рассматриваются в отдельной статье.

Внешняя печатная форма в управляемом приложении

Начнем с того, что в настоящее время встречается чаще — с управляемого приложения. В тексте ниже будет приведен пример создания и подключения внешней печатной формы для документа «Приходный кассовый ордер» (Бухгалтерия предприятия, редакция 3.0).

Создание

Как уже было сказано выше, внешняя печатная форма — это просто-напросто внешняя обработка соответствующая некоторым требованиям. Первым требованием является реализация в модуле печатной формы экспортной функции СведенияОВнешнейОбработке().

Итак, создаем новую внешнюю обработку и в модуле объекта этой обработки размещаем примерно такой код:

Код в основном прокомментирован, но некоторые моменты нужно обговорить отдельно. Функция СведенияОВнешнейОбработке() является общей для всех внешних объектов. Вид внешнего объекта указывается в параметре «Вид» (у нас указана «ПечатнаяФорма»).

Большинство параметров не являются обязательными для заполнения. В нашем случае обязательно указать параметры «Вид», «Версия» и «Команды» — это обязательные параметры для всех видов внешних объектов («Команды» необязательны для отчетов). Кроме этого будет полезно указать параметры «Назначение». Но вообще, желательно указывать как можно больше информации — это поможет не запутаться как Вашим клиентам так и Вам самим.

Параметр «БезопасныйРежим» со значением «Истина» накладывает следующие ограничения:

Параметру «БезопасныйРежим» рекомендуется присваивать значение «Истина». Если необходима какая-либо функциональность, запрещаемая безопасным режимом, то можно получить дополнительное разрешения на эту функциональность (как в примере выше).

Кроме функции СведенияОВнешнейОбработке() необходимо реализовать еще одну экспортную функцию — Печать(). Эта функция должна иметь следующие параметры:

Пример реализации функции Печать():

Источник

Внешние обработки, печатные формы, обработки по заполнению табличных частей

В данном материале описываются особенности реализации механизма подключения «Внешние обработки, печатные формы, обработки по заполнению табличных частей» (далее ВПФО). Также перечисляются требования, предъявляемые к внешним обработкам, для возможности их использования данным механизмом.

Общее описание

Механизм предназначен для подключения (без изменения конфигурации):

Внешние печатные формы и обработки создаются разработчиком с соблюдением определенных условий. Условия обязательны для выполнения на этапе создания внешней обработки, для ее корректной работы в качестве подключаемой к конфигурации.

Для реализации механизма ВПФО используется справочник «Внешние обработки».

Для справочника предусмотрены специализированные реквизиты*:

ПРИМЕЧАНИЕ
Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»

Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту «Вид обработки», из подменю «Сервис».

Добавлять и изменять ВПФО в базе данных может пользователь, обладающий правом администрирования дополнительных форм и обработок. Это отдельная роль в конфигурации.

Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.

Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:

Описание видов справочника ВПФО и требования к подключаемым внешним обработкам

Рассмотрим каждый вид ВПФО по отдельности.

Произвольная обработка

Для включения произвольных обработок в базу данных, необходимо указывать только внешнюю обработку, которая находится на диске.

Открытие произвольных обработок в форме списка производится при выборе элемента ВПФО с видом «Произвольная обработка». При этом, производится сохранение двоичных данных из реквизита «Хранилище внешней обработки» на диск во временный файл. После этого, у сохраненной внешней обработки открывается основная форма.

Основная форма для произвольной обработки должна быть определена обязательно.

Обработка для заполнения ТЧ объектов

Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением epf), список объектов и их ТЧ, для которых необходимо использовать данную обработку.

В типовых конфигурациях объектами, использующими данный механизм, являются все документы, содержащие хоть одну табличную часть.

Перед открытием формы объекта в командных панелях табличных полей (источником данных для которых является табличная часть объекта), которым соответствуют определенные строки в справочнике ВПФО, программно добавляются пункты в подменю «Заполнить» (если подменю «Заполнить» отсутствует на командной панели, оно создается).

При нажатии на созданную перед открытием кнопку подменю «Заполнить» происходит сохранение соответствующей обработки на диск во временный файл, для сохраненной внешней обработки вызывается процедура:

Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)

Наличие экспортной процедуры «Инициализировать()» в модуле объекта обработки с видом «Заполнение табличных частей» обязательно. В теле данной процедуры должен располагаться программный код, заполняющий табличную часть в соответствии с назначением обработки.

Обработка так же может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки». Макет должен состоять из 2-х колонок – «полное имя объекта» и «имя табличной части».

Пример макета Параметры_Авторегистрации:

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Внешняя печатная форма

Для подключаемых внешних печатных форм указывается:

Для каждого типа объекта дополнительно можно указать:

Вызов диалога настройка условий отбора осуществляется при начале выбора значения в колонке «отбор»:

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

В формах объектов, в командной панели формы (обычно это нижняя командная панель) формируется подменю кнопок печатных форм. Подменю формируется программно, при открытии формы и при записи объекта в форме (для обеспечения изменения пунктов меню в зависимости от данных объекта, и срабатыванию указанных в печатных формах условий отборов). В формируемом меню стандартные печатные формы отделяется от подключаемых разделителем.
Например:

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Если находится подключаемая печатная форма, которой необходимо заменить стандартную, то она заменяется и показывается в списке стандартных печатных форм. В этом случае подключенная печатная форма отдельно в списке подключенных печатных форм не отображается.

При нажатии на любую из кнопок печати происходит определение, соответствует ли данная кнопка внешней печатной форме или встроенной в конфигурацию.
Для кнопок, соответствующих печатным формам встроенным в конфигурацию, вызывается встроенный механизм печати (данный механизм в рамках текущего проекта не рассматривается).
Для кнопок, соответствующих внешним печатным формам, происходит сохранение соответствующей обработки на диск во временный файл.

Для сохраненной внешней обработки:

Наличие реквизита «СсылкаНаОбъект» и экспортной функции «Печать()» в модуле объекта обработки с видом «Внешняя печатная форма» обязательно.

В теле функции «Печать()» должен располагаться программный код, который формирует и возвращает табличный документ, в соответствии со значением реквизита «СсылкаНаОбъект».

Обработка так же может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» состоящий из одной колонки – полное имя объекта для которого будет создаваться соответствующая кнопка печати.

Пример макета Параметры_Авторегистрации:

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

При соблюдении этих требований пользователю будет достаточно указать при регистрации дополнительной печатной формы файл внешней обработки, после чего все реквизиты формы заполнятся автоматически.

Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»

В базе данных внешние обработки, печатные формы, обработки по заполнению табличных частей хранятся в справочнике «Внешние обработки». Справочник имеет следующую структуру:

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

ТабличнаяЧасть.Принадлежность. Хранит типы объектов, для которых задается ВПФО и прочие описанные ниже параметры. Табличная часть используется для элементов с видом обработки: «Печатная форма» или «Заполнение табличных частей».

Реквизиты табличной части:

** Используется только для элементов с видом обработки: «Заполнение табличных частей»
*** Используется только для элементов с видом обработки: «печатная форма».

Подключение дополнительных печатных форм к формам объектов конфигурации

Механизм дополнительных печатных форм является расширением стандартного механизма печатных форм объекта. Добавление дополнительной формы в общий список форм выполняется в процедурах модуля формы объекта перед открытием, после записи и при нажатии на кнопку «Установить печать по умолчанию».
Подменю «Печать» и кнопка «Печать по умолчанию» в форме объекта не должны присутствовать в обязательном порядке. Они формируются программно, в том случае, если есть хоть одна печатная форма и задана печать по умолчанию.

Подключение обработок по заполнению табличных частей к формам объектов конфигурации

Для обеспечения подключения механизма в форме объекта должны присутствовать следующие процедуры и функции:

Источник

Пользовательские макеты для внешних печатных форм в УПП 1.3

Как обычно, сначала поискал готовое решение. Максимально близко решение данной задачи описано в этой публикации: //infostart.ru/public/92500/. С той лишь разницей, что там данная задача решалась для конфигурации УТ 11.

Тем не менее, именно эта публикация была взята за основу, и часть работающего кода заимствована оттуда.

РС (регистр сведений) «Пользовательские макеты печати», в котором собственно хранятся макеты, измененные пользователем, является частью подсистемы Печать из БСП (библиотеки стандартных подсистем). И поначалу я думал, что придётся внедрять в УПП версию БСП 2.1. Однако оказалось, что в УПП 1.3 последних версий данный регистр уже включен и даже используется в паре объектов конфигурации. Например, в документе «Выпуск продукции». Это существенно сокращает количество изменений, которые придется внести в конфигурацию, но давайте по порядку.

1. Чтобы дополнить перечень объектов, которые мы видим в форме РС ПользовательскиеМакетыПечати и для которых мы можем редактировать пользовательский макет, надо внести изменения в форму МакетыПечатныхФорм. Также надо не забыть увеличить длину измерения Объект в этом РС, на случай слишком длинного наименования ВПФ (внешней печатной формы). Я указал длину 250.

2. Чтобы появилась возможность получить для редактирования макет из ВПФ и сохранить его в наш регистр, надо доработать общий модуль УправлениеПечатью.

3. Также понадобится передавать во внешнюю обработку параметр со ссылкой на элемент справочника «Внешние обработки», чтобы ВПФ могла найти свой пользовательский макет в регистре. Для этого правим общий модуль УниверсальныеМеханизмы.

На этом изменения в конфигураторе завершены. Остальные изменения можно делать непосредственно в файлах ВПФ.

4. Во-первых, понадобится добавить реквизит ДополнительныеПараметры с типом Произвольный.

5. В названии макетов должно быть одно из сочетаний: ПФ_MXL, ПФ_DOC или ПФ_ODT. Это проверяется встроенной подсистемой.

6. Когда получаем макет, вместо стандартного ПолучитьМакет вызываем функцию МСК_ПолучитьМакет. Нужный код приведен ниже.

Вы можете скачать готовый пример обработки и подключить её к любому документу в конфигурации, чтобы проверить, как всё работает.

Источник

Создание внешней печатной формы под УП с возможностью передачи параметров (для конфигураций на БСП)

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

Видеоверсию данной статьи можете посмотреть тут: http://youtu.be/9JlR-2rNW6o

Поставим задачу: вывести счет на оплату покупателя внешний с дополнительным комментарием.

Первый метод.Вывод табличного документа.

Данный метод можно назвать довольно топорным, но зато быстрым и не требующим каких-то особых дополнительных движений. Мы просто получаем табличный документ счета, и выводим его на экран.

Для описания этого метода возьмем обработку СчетНаОплатуПокупателюВнешний.e pf из предыдущей моей статьи. Добавим реквизит обработки: Комментарий, тип строка(100).

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Добавим форму обработки, на которой разместим данный реквизит, разместим кнопку «Печать» и создадим команду формы «Печать»

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Также у формы создадим параметр «ОбъектыНазначения» тип«Произвольный» (сделайте его ключевым)

Поясню, при открытии формы, в этот параметр будут записаны все объекты, для которых открывается данная печатная форма.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

&НаСервере
Функция ПечатьСерверная ()

КонецФункции
&НаКлиенте
Процедура Печать ( Команда )

Получим объект обработки.

ЭтотОбъектОбработка = РеквизитФормыВЗначение («Объект»);

Теперь перейдем в модуль обработки. И внесем кое какие изменения в уже написанный код.

Теперь перейдем в процедуру Печать, сделаем функцией, и оставим только первый параметр МассивОбъектов

Смотрим на тело функции, тот код который там написан в нашем случае не применим. Поэтому мы вычистим ее, оставив только код, с помощью которого можно получить табличный документ это функция ПолучитьТаблицуСведенийСчетаНаОплатуи функция ПечатьСчетаНаОплату, функция ПечатьСчетаНаОплату возвращает табличный документ.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Должен получиться следующий код:

Функция Печать ( МассивОбъектов ) Экспорт

ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату ( МассивОбъектов );

Поскольку параметр объекты печати является списком значений,содержащим распечатываемые документ(справочники), то создадим данный список, и заполним его объектами из массива и возвратим табличный документ.

Функция Печать ( МассивОбъектов ) Экспорт

ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату ( МассивОбъектов );

Теперь изменим макет, добавив комментарий в подвал счета.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Осталось в функции ПечатьСчетаНаОплату у соответствующей области макета соответствующему параметру присвоить реквизит обработки Комментарий .

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Обращаю ваше внимание, у других конфигураций и других объектов могу быть иные процедуры формирования табличного документа, чем те которые приведены в примере, в данной статья показан общий механизм.

Заканчиваем работу с модулем обработки и переходим в модуль формы. В функцию ПечатьСерверная()

Вызовем функцию ПечатьСерверная на клиенте, и покажем сформированный табличный документ.

Сохраняем печатную форму и добавляем в дополнительные отчеты и обработки конфигурации.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Перейдем в документ, выберем данную печатную форму.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Выйдет форма, в которой мы заполним поле комментарий.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Нажимаем печать и выходит табличный документ.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Возможно многих и устроит подобный вариант выхода печатной формы. Кто же хочет, что бы выходила типовая форма.

То изучайте вторую и третью часть этой статьи.

Второй метод. Использованиедополнительных сведений документа.

Для этого заходим в список счетов на оплату покупателю инажимаем кнопку дополнительные сведения

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Откроется форма Дополнительных сведений, пока она пустая,т.к. нет ни каких сведений привязанных к данному документу.

Что бы создать их заходим в Все действия – Изменить составдополнительных сведений.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Пишем наименование КомментарийДополнительный, тип значениявыбираем строка. И записываем новое дополнительное сведение.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Все оно создано, и появится в списке дополнительных сведений документа Счет наоплату покупателю. Запишем в него какой-нибудь комментарий, и сохраним.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Теперь нам осталось узнать под каким именем данноедополнительное сведение сохранилось в плане видов характеристик « Дополнительные реквизиты и сведения ».

Зайдем в него через меню «Все функции».

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Все. Все необходимые приготовления мы сделали, теперьперейдем к написанию обработки, которая будет подставлять в комментарийзначение данного дополнительного сведенья.

Как и в предыдущей части, за основу мы будем брать обработкуиз моей предыдущей статьи.

Исправим в процедуре сведения СведенияОВнешнейОбработке() наименование параметра регистрации и представление команды, что бы можно былоотличить нашу новую обработку.

Функция СведенияОВнешнейОбработке () экспорт

Теперь создадим функцию, которая получает по ссылке надокумент, и по ссылке на доп сведение значения. Кто не знает, поясню, чтозначения доп сведений в БСП хранятся в регистре сведений «ДополнительныеСведения»

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Где в измерении Объект хранится ссылка на документ, визмерении Свойство – ссылка на план видов характеристик Дополнительные сведенияи реквизиты, а в ресурсе Значение – значение данного сведения для данногодокумента.

Посмотрите на состав регистра в нашем случае.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Поэтому создадим функцию в которую будем передавать массивдокументов и массив дополнительных сведений, а возвращать она будетсоответствующую выгрузку запроса.

МассивДопСведений = Новый Массив ;

Теперь добавим в макет новый параметр «Комментарий»

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Первым делом нам необходимо извлечь из таблицы значений ТаблицаДопСвойств значение для распечатываемого документа и нужного дополнительного свойства. Дляэтого получим ссылку на доп. свойства используя наименование, которое мы ужезнаем.

//Получимзначение доп свойства для данного документа

После этого создаем структуру с полями Документ иДопСведение, в которую вставим ссылку на наш документ и ссылку на найденноедополнительное сведение.

Ищем в таблице значений ТаблицаДопСвойств строки по данномуотбору.

Проверим, есть ли в полученном массиве записи, и если естьто возьмем первый элемент массива, который будет являться строкой таблицы значений, и получим содержимоеколонки «Значение». Запишем этосодержимое в параметр.

ЗначениеДопСведения = МассивЗначения [0]. Значение ;

Осталось сохранить обработку, добавить ее в дополнительныепечатные формы и посмотреть как выйдет наш счет.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Данным способом можно решить большинство задач где необходимо ввести дополнительные параметры во внешнюю печатную форму. Но если он вас чем-то не устраивает, остается третий способ интерактивным вызовом формы ПечатьДокументов и передачей в нее параметров. Он приведен в комментариях к моей предыдущей статье.

Источник

Программирование в 1С для всех

В этой статье мы научимся создавать внешнюю печатную форму для управляемого приложения 1С 8.3, которое написано на БСП («1С: Бухгалтерия предприятия 3.0», «1С: Управление торговлей 11»). Причем создавать с нуля, не используя так называемые шаблоны. Вы сами научитесь создавать шаблоны внешних печатных форм.

Все это делается довольно просто))

И так, создадим новую обработку 1С.

Мы будем создавать внешний счет на оплату покупателю, поэтому обработку так и назовем: «СчетНаОплатуВнешний».

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Сохраним ее на жесткий диск.

Регистрация внешней обработки или отчета в базе 1С осуществляется на основании сведений, которые поставляет сама обработка. Поэтому эти сведения должны быть описаны в обработке. Осуществляется это с помощью структуры, которая имеет определенный набор полей, и которая возвращается экспортной функций СведенияОВнешнейОбработке.

Зайдем в модуль обработки, и создадим экспортную функцию СведенияОВнешнейОбработке.

Внутри этой функции создадим структуру ПараметрыРегистрации, которая будет содержать определенный список полей. Каждое поле мы разберем в отдельности.

Создадим первый элемент структуры, он будет иметь ключ с название «Вид».

Значением данной связки КлючИЗначение идет одна из строк:

В нашем случае должна быть строка «ПечатнаяФорма».

Следующий элемент структуры должен иметь ключ с названием Назначение.

В качестве значения данного элемента должен выступать массив, где перечислены будут все документы или справочники, в которых будет выходить данная печатная форма.

Они должны иметь тип строка, и быть в следующем формате:

Документ.»НазваниеДокумента»

Справочник.»НазваниеСправочника»

У нас этот массив будет возвращать отдельная функция ПолучитьНазначениеОбработки.

Допишем созданный последним элемент структуры.

Создадим новый элемент структуры, ключ которого будет называться «Наименование», а в значении будет содержаться наименование обработки, которое будет отображаться в справочнике «Дополнительные внешние печатные формы».

Следующий элемент структуры будет иметь название «Версия», значением данного элемента будет версия обработки. Задается программистом на его усмотрение.

Следующий элемент имеет название «Информация», который содержит краткую информацию по обработке.

Следующий элемент имеет название «БезопасныйРежим», его необходим устанавливать в значение истина или ложь, в зависимости от того необходимо устанавливать или отключать безопасный режим во время выполнения обработки. Мы установим значение Истина.

И в последнем параметре необходимо добавить команды, которые будут поставляться обработкой. Для этого нам необходимо создать и заполнить таблицу команд. Разработаем функцию, которая создает и возвращает таблицу с определенным набором полей. Делать это будем в функции ПолучитьТаблицуКоманд.

Создадим функцию и таблицу значений внутри нее.

Теперь создадим пять колонок этой таблицы.

И первая колонка – Представление (тип строка).

Эта колонка – представление команды в пользовательском интерфейсе, т.е. то, что пользователь увидит при нажатии меню»Печать» в документе или справочнике.

Вторая колонка – Идентификатор.

Это может быть любая текстовая строка, уникальная в пределах данной обработки.

Третья колонка – Использование.

Параметр данной колонки типа строка, должен принимать одно из четырех значений –

Конкретно мы будем использовать вызов серверного метода.

Следующая колонка – показывать оповещение. Принимает значение истина или ложь, в зависимости от того надо показывать оповещение или нет.

И последняя колонка – модификатор. Это дополнительный модификатор команды. В нашем случае будет иметь название ПечатьMXL.

Теперь создадим процедуру, которая будет заполнять данную таблицу значений.

В данном коде все понятно.

В функции СведенияОВнешнейОбработке создадим команду и заполним ее.

Создаем таблицу значений:

Теперь заполним ее.

Еще раз пройдемся по параметрам.

Теперь передадим вновь созданную таблицу команд в структуру ПараметрыРегистрации.

И пусть наша функция СведенияОВнешнейОбработке возвращает данную структуру.

Все теперь наша обработка будет передавать нужные параметры регистрации, которые будут необходимы при создании элемента справочника дополнительные печатные формы и обработки. Обращаю ваше внимание, что название всех полей в структуре Параметры регистрации, а также название и типы всех колонок в таблице команд, должны быть те которые приведены в примере, иначе Ваша обработка не зарегистрируется.

Теперь в модуле объекта создадим процедуру Печать. Это процедура с четырьмя параметрами: МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода.

И вот начинается самое интересное, теперь вам необходимо войти в аналогичную процедуру в менеджере объекта счет на оплату покупателю, или в обработке, которая, по сути, является менеджером печати.

Как узнать, где находится нужная нам функция?

Откроем модуль менеджера документа Счет на оплату покупателю.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

В этой процедуре найдем код, где добавляется команда для нужной нам печатной формы (список команд добавляется в таблицу значений КомандыПечати). И обратим внимание на свойство МенеджерПечати. Если этому свойству присваивается какое-нибудь значение — это путь к объекту метаданных, как правило к обработке, то значит при выводе нужной печатной формы будет отработан код в процедуре Печать, которая находится в модуле менеджере этого объекта (в обработке). А если это свойство в принципе не фигурирует при заполнении команды печати, то значит будет отработан код в процедуре Печать, которая находится в модуле менеджера нашего основного объекта (в нашем случае это документ СчетНаОплатуПокупателю)

Посмотрим на процедуру ДобавитьКомандыПечати в модуле менеджера документа «Счет на оплату покупателя».

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

оскольку мы делаем внешнюю печатную форму счета на оплату, то нас интересует первое добавление в таблицу значений (см. свойство Представление), и мы видим, что в этом случае заполнено свойство МенеджерПечати, где указан объект Обработка.ПечатьСчетаНаОплату. Это значит, что нам нужно найти процедуру Печать в модуле менеджера обработки ПечатьСчетаНаОплату.

А если бы мы решили сделать внешнюю печатную форму договора счета на оплату (второе добавление в таблицу значений КомандыПечати), то нам нужно было бы найти процедуру Печать в модуле менеджера документа СчетНаОплатуПокупателя.

Откроем модуль менеджера обработки ПечатьСчетаНаОплату.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

И раскроем процедуру Печать.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Нас интересует второе условие (где фигурирует строка «СчетЗаказ», см. идентификатор нужной команды в процедуре ДобавитьКомандыПечати модуля менеджера документа), скопируем это условие в процедуру Печать нашей внешней обработки.

Внимание! Копировать напрямую процедуру Печать из модуля менеджера (без разницы обработка это, документ или справочник) не следует. Поскольку у них отличается количество параметров, в последствие это приводит к ошибкам при работе.

Так же из модуля менеджера обработки скопируем процедуру СформироватьПечатнуюФорм

В этом коде есть строка, где заполняется таблица сведений счета на оплату.

Эта таблица получается при помощи процедуры модуля менеджера объекта (в нашем случае это документ СчетНаОплатуПокупателю). Найдем эту процедуру в модуле менеджера документа СчетНаОплатуПокупателю.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

И скопируем её в модель нашей внешней обработки.

А сам код процедуры СформироватьПечатнуюФорму в модуле внешней обработки исправим, убрав все не нужное от туда.

Если мы сейчас сделаем проверку модуля внешней обработки, то выйдет две ошибки. Первая, что не определена переменная ПараметрыПечати в процедуре Печать, и, что не найдена функция ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату в функции ПолучитьТаблицуСведенийСчетаНаОплату.

Создадим переменную ПараметрыПечати в процедуре Печать. Это будет простая структура.

А потом найдем функцию ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату в модуле менеджера документа СчетНаОплатуПокупателю и скопируем её в модуль внешней обработки.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Должен получится следующий состав процедур и функций модуля внешней обработки (для удобства я разделил их на две области).

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Еще раз делаем проверку модуля. Ошибок не обнаружено.

Продолжаем, теперь нам необходимо, что бы брался наш макет, и печатался по нашей команде.

Нас интересует процедура СформироватьПечатнуюФорму, а в ней мы уделим внимание методу ПечатьСчетаНаОплату общего модуля ПечатьТорговыхДокументов.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Очевидно, она непосредственно формирует табличный документ. Перейдем в этот общий модуль, и скопируем функцию ПечатьСчетаНаОплату в модуль нашей внешней обработки.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная формаДелаем проверку модуля внешней обработки. Ругается на несуществующие методы ВывестиЗаголовокПредупреждение и НомерСчетаНаОплату.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

А функция НомерСчетаНаОплату в общем модуле ПечатьТорговыхДокументов экспортная, поэтому мы просто исправим код в процедуре ПечатьСчетаНаОплату, где используется проблемная функция, сделав вызов этой функции из вышеупомянутого общего модуля.

Проверяем еще раз ошибки. Все нормально.

Не забудем в процедуре СформироватьПечатнуюФорму убрать вызов метода ПечатьСчетаНаОплату из общего модуля.

Теперь зайдем в скопированную функцию ПечатьСчетаНаОплату, и посмотрим, где в ней подтягивается макет.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная формаНаходим данный макет в общих макетах и копируем его в макеты нашей обработки.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная формаИсправляем выделенный код, где подтягивается макет, следующий образом.

Теперь зайдем в наш скопированный макет, и сделаем какое-нибудь изменение, чтобы вы видели, что команда подтянула именно макет из внешней обработки.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Вернемся обратно в процедуру Печать нашей внешней обработки.

И теперь осталась одна небольшая хитрость, без которой ваш внешний отчет не будет работать. Необходимо текст «СчетЗаказ» (это идентификатор типовой печатной формы).полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Заменить на название идентификатора команды («СчетНаОплатуВнешний»).

Все, сохраняем данную обработку. И запускаем «1С: Предприятие» из конфигуратора 1С.

Идем в администрирование. В дополнительные отчеты и обработки.

Нажимаем на кнопку «Добавить из файла» и выбираем нашу созданную обработку.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Записываем. И смотрим, как выходит наша печатная форма.

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

полныйпутькмакету внешняя печатная форма. Смотреть фото полныйпутькмакету внешняя печатная форма. Смотреть картинку полныйпутькмакету внешняя печатная форма. Картинка про полныйпутькмакету внешняя печатная форма. Фото полныйпутькмакету внешняя печатная форма

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

2 thoughts on “ Создание внешней печатной формы в типовых конфигурациях 1С 8.3 ”

программирование не для всех.
то ПечатьXML, то ПечатьMXL, потом опять ПечатьXML. где правильно?
открыть модуль менеджера документа Счет на оплату покупателю — у меня там пусто. приехали, конечная. вот и поучились программированию.

Не суть так важно. Такая задача вероятно не так часто бывает. Но в любом случае внешние формы и т.п. наверное надо научиться делать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *