Обработка для создания печатных форм 1с. Публикации. Инициализация основных переменных

В данной статье описано как подключить внешнюю печатную форму в базу 1С на примере конфигурации «Управление торговлей 10.3»

Конфигурация «Управление торговлей 10.3» — это конфигурация на, так называемых, «ОБЫЧНЫХ» формах, а не на «УПРАВЛЯЕМЫХ» как «Управление торговлей 11.2», для «УПРАВЛЯЕМЫХ» форм рекомендуем прочитать .

Наша инструкция «показывает» как подключить внешнюю печатную форму в 1С с конфигурацией на «ОБЫЧНЫХ» формах а именно:

  • «Бухгалтерия 2.0»
  • «Управление торговлей 10.3»
  • «Зарплата и управление персоналом 2.5»
  • «Комплексная автоматизация 1.1»
  • «Управление производственным предприятием 1.3»
  • «Розница 1.0»
  • и другие подобные конфигурации.

Для того чтобы подключить внешнюю печатную форму в 1С нам понадобится пройти 11 шагов.

1 — Меню «Сервис». 2 — Выбираем «Внешние печатные формы и обработки». 3 — Далее — «Внешние печатные формы» (см. рис. ниже ↓)

Для того чтобы убедить вас в том, что данная инструкция подходит и для других конфигураций на «ОБЫЧНЫХ» формах — представим те же начальные 1-2-3 шага, но уже не в «Управление торговлей 10.3», а в «Бухгалтерия 2.0» там всё также за исключением чуть-чуть измененных слов в подпунктах, а именно…

1 — Меню «Сервис»(так же как и в «УТ 10.3», да и в других).
2 — Здесь «Дополнительные отчеты и обработки», а не «Внешние печатные формы и обработки» как в «УТ 10.3»,
но все-равно смысл тот-же и находится там же в меню «Сервис».
3 — И затем — «Дополнительные внешние печатные формы», т.е. лишнее слово «Дополнительные», если сравнивать с «УТ 10.3» (см. рис. ниже ↓)

Далее продолжим все-таки на примере «Управление торговлей 10.3» без лишних сравнений.
4 — Нажимаем на кнопку «+« т.е. «Добавить». 5 — Кнопка где нарисована папка (при наведении появится подсказка: «Заменить файл внешней обработки»).

В новых версиях 1С (начиная с августа 2016 года) в программу встроен механизм предупреждения об опасности использования неизвестных внешних обработок, которые могут содержать «вирусы», в более ранних версиях программы предупреждение возникать не будет! Если оно возникло, то для подключения внешней обработки будет необходимо - 6 - нажать кнопку «Продолжить». (см. рис. ниже ↓)

7 — Выбираем каталог, в котором размещен нужный нам файл внешней печатной формы. 8 — Выделяем наш файл. 9 — Нажимаем «Открыть» (см. рис. ниже ↓)

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

Вот и все, у нас заполнилась таблица «Принадлежность печатной формы», благодаря параметрам авторегистрации, мы видим наименование подключаемой внешней печатной формы, возможно у вас заполнится поле «Комментарий» и т.п. Вы можете добавлять свои объекты в таблицу «Принадлежность печатной формы», например, для наших обработок «Универсальная печатная форма договора», которая поддерживает печать многих документов и справочников, но параметры авторегистрации установлены только для основных: 10* — Нажимаете на зеленую кнопку «Добавить» и выбираете в какие объекты так же разместить в обработку. Теперь остается только — 11 — нажать на кнопку «ОК» и (см. рис. ниже ↓)

Сейчас стоит проверить — все ли мы сделали правильно?
Для этого выберем, объект для проверки, например документ «Реализация товаров и услуг», который указан в таблице «Принадлежность печатной формы», это значит что подключенную печатную форму можно использовать в данном документе! Проверим… (см. рис. ниже ↓)

Для проверки возможности печати открываем любой документ вида: «Реализация товаров и услуг». 13 — Нажимаем кнопку «Печать».
Видим — появилось окно выбора печатных форм, среди них присутствует — 14 — подключенная нами внешняя печатная форма (см. рис. ниже ↓)

Как добавить (зарегистрировать) внешнюю печатную форму (или обработку) в 1С Бухгалтерия 8.3 (редакция 3.0)

2019-05-15T13:40:54+00:00

Часто у бухгалтера возникает необходимость в дополнительной печатной форме к какому-нибудь из стандартных документов 1С:Бухгалтерия 8.3 (редакция 3.0). Или нужна дополнительная обработка, например, чтобы автоматически заполнить документ или ввести новый на основании. Обычно такая возможность уже кем-нибудь разработана и её можно найти или заказать у программиста. И вот доработка получена, осталось только добавить её в бухгалтерию. Как это сделать? Об этом ниже по шагам.

1. Откройте 1С Бухгалтерия 3.0 и выберите в левой панели раздел "Администрирование"->"Печатные формы, отчеты и обработки" ():

2. Здесь найдите и выберите пункт "Дополнительные отчеты и обработки", предварительно установив галку "Дополнительные отчеты и обработки" слева:

3. Нажмите кнопку "Добавить из файла...".

4. И выберите файл с внешней печатной формой или обработкой (расширение epf).

5. В новом окне нажмите кнопку "Записать и закрыть".

6. Откройте нужный документ и убедитесь, что в кнопке печать появился ещё один вариант печатной формы или пункт в меню "Создать на основании" или новая кнопка на панели инструментов формы. Готово!

С уважением, Владимир Милькин (преподаватель и разработчик ).

В данной статье описано как подключить внешнюю печатную форму в базу 1С на примере конфигурации «Управление торговлей 11.2»

Конфигурация «Управление торговлей 11.2» — это конфигурация на «УПРАВЛЯЕМЫХ» формах!

Наша инструкция «показывает» как подключить внешнюю печатную форму в информационной базе 1С с конфигурацией на «УПРАВЛЯЕМЫХ» формах а именно:

  • «Бухгалтерия 3.0»
  • «Управление торговлей 11.2»
  • «Зарплата и управление персоналом 3.1»
  • «Комплексная автоматизация 2.0»
  • «Управление небольшой фирмой 1.6»
  • «Розница 2.2»
  • и другие подобные конфигурации.

Для того чтобы подключить внешнюю печатную форму в 1С нам понадобится пройти 11 шагов.

1 — Меню «НСИ и администрирование» (В других конфигурациях, как например в Бухгалтерии предприятия 3.0, может называться просто — «Администрирование»). 2 — Выбираем «Печатные формы, отчеты и обработки» (см. рис. ниже ↓)

3 — Раскрываем подменю «Отчеты и обработки» (В других конфигурациях, как например в Бухгалтерии предприятия 3.0, такого подменю может не оказаться, поэтому сразу переходим к следующему действию). 4 — Ставим «галочку» Использование дополнительных отчетов и обработок. 5 — Переходим в раздел: Дополнительные отчеты и обработки. (см. рис. ниже ↓) ()

6 — Нажимаем кнопку «Создать». (см. рис. ниже ↓)

В новых версиях 1С (начиная с августа 2016 года) в программу встроен механизм предупреждения об опасности использования неизвестных внешних обработок, которые могут содержать «вирусы», в более ранних версиях программы предупреждение возникать не будет! Если оно возникло, то для подключения внешней печатной формы будет необходимо — 7 — нажать кнопку «Продолжить». (см. рис. ниже ↓)

8 — Выбираем каталог в котором находится обработка. 9 — Выделяем ее (нужную нам обработку). 10 — Нажимаем кнопку «Открыть». Либо вместо действий 9 и 10 можно просто дважды кликнуть по нужной нам внешней печатной форме в окне выбора. (см. рис. ниже ↓)

Если нам необходимо добавить размещение для добавляемой обработки (Например, это Универсальная форма договора с нашего сайта и нам надо, чтобы команда печати этой формы выводилась в каком-то объекте, в котором изначально не выводится) — 11 — нажимаем на строку размещения («Разместить в:», может быть «Размещение:») и выбираем необходимые справочники и документы. 12 — Завершаем действия по подключению внешней печатной формы нажатием кнопки «Записать и закрыть». (см. рис. ниже ↓)

Вот и все! Поздравляем! Внешняя печатная форма подключена! А все ли мы сделали правильно? Проверим…

Перед Записью и закрытием мы обратили внимание что данная внешняя печатная форма размещена в документе Реализация товаров и услуг, а значит возможности печати открываем любой документ вида: «Реализация товаров и услуг». нажимаем кнопку «Печать» и видим — появилось окно выбора печатных форм, среди них присутствует — 13 — подключенная нами внешняя печатная форма (см. рис. ниже ↓)

Теперь точно — всё. Мы надеемся что данная статья была вам полезна.

Заходим в Сервис ->Дополнительные отчеты и обработки ->Дополнительные внешние печатные формы .

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

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

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

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

Для БП 3.0, ЗУП 3.0, УТ 11, КА 2.0, ERP 2.0.

Для демонстрации добавления печатной формы в управляемом интерфейсе покажу добавление внешней формы счета на оплату к одноименному документу в Бухгалтерии 3.0.

Заходим в соответствующий раздел программы:


Необходимо, чтобы был включен признак использования внешних отчетов и обработок, переходим по гиперссылке в список внешних объектов:

В открывшемся списке нажимаем Создать :


В диалоговом окне выбираем нужный файл:


Заполнилась карточка внешнего объекта: в размещении видим тип объекта базы, к которому будет привязана форма и чуть ниже ее название:


Запишем и закроем форму созданного внешнего объекта.

Теперь зайдем в любой документ Счет на оплату покупателю и выведем меню печати:


Как создать внешнюю печатную форму на основе готовой? 1С 8.0/8.1
_______________________________________________________

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

Итак: нам потребовалось немного изменить макет счёта на оплату покупателю (работать будем с конфигигурацией Бухгалтерия 1.6):
- убрать заголовок в макете счета на оплату (текст "Внимание! Оплата данного счета..., при наличии доверенности и паспорта.")
- изменить представление поставщика (т.е. нас) по требованию банка
(задача из реальной жизни с временем работы на 15-20 минут)

Создание обработки будет состоять их двух этапов:
1 - создание полного аналога исходной печатной формы
2 - доработка под собственные нужды

Этап первый

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

И пишем такой код:

Функция Печать() Экспорт //... тут мы что-нибудь напишем потом КонецФункции

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

Что бы не изобретать велосипед - посмотрим, как происходит формирование табличного документа в основной конфигурации: для этого мы зайдём
в модуль документа СчтНаОплатуПокупателю Найдём в модуле функцию Печать , которая выглядит примерно вот так:

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

В нашем случае получается, что для печати счёта в эту функцию передается параметр ИмяМакета равный строковой переменной "счет" ,
если посмотреть на код, мы увидим, что для формирование стандартного счета используется функция ПечатьСчетаЗаказа(...) , которую теперь
нам и требуется найти в коде модуля документа. Обвчно она расположена чуть выше функции печать(...)
Итак, вот сокращенный текст этой функции:

// Функция формирует табличный документ с печатной формой заказа или счета, // разработанного методистами // // Возвращаемое значение: // Табличный документ - сформированная печатная форма // Функция ПечатьСчетаЗаказа(Тип) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка); // ...код программы... ОбластьМакета.Параметры.Заполнить(Шапка); ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецФункции // ПечатьСчетаЗаказа()

Как мы видим, в конце работы этой функции возвращается сформированный табличный документ - нам остается только полностью скопировать текст
этой функции (начиная со строки "Запрос = Новый Запрос;" и заканчивая строкой "Возрат ТабДокумент;") и вставить его в тело подготовленой функции
Печать в модуле нашей обработки.

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

{ВнешняяОбработка.ВнешняяОбработка1(102,7)}: Переменная не определена (Тип) Если <>Тип = "Счет" Тогда {ВнешняяОбработка.ВнешняяОбработка1(224,7)}: Переменная не определена (Тип) Если <>Тип = "Счет" Тогда {ВнешняяОбработка.ВнешняяОбработка1(107,15)}: Переменная не определена (СтруктурнаяЕдиница) Если ТипЗнч(<>СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда {ВнешняяОбработка.ВнешняяОбработка1(108,40)}: Переменная не определена (СтруктурнаяЕдиница) Банк = ?(НЕ ЗначениеЗаполнено(<>СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов); {ВнешняяОбработка.ВнешняяОбработка1(108,77)}: Переменная не определена (СтруктурнаяЕдиница) Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), <>СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов); {ВнешняяОбработка.ВнешняяОбработка1(108,102)}: Переменная не определена (СтруктурнаяЕдиница) Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, <>СтруктурнаяЕдиница.БанкДляРасчетов); {ВнешняяОбработка.ВнешняяОбработка1(112,38)}: Переменная не определена (СтруктурнаяЕдиница) НомерСчета = ВернутьРасчетныйСчет(<>СтруктурнаяЕдиница); {ВнешняяОбработка.ВнешняяОбработка1(123,21)}: Переменная не определена (СтруктурнаяЕдиница) Если ПустаяСтрока(<>СтруктурнаяЕдиница.ТекстКорреспондента) Тогда {ВнешняяОбработка.ВнешняяОбработка1(125,27)}: Переменная не определена (СтруктурнаяЕдиница) Если ЗначениеЗаполнено(<>СтруктурнаяЕдиница.БанкДляРасчетов) Тогда {ВнешняяОбработка.ВнешняяОбработка1(126,59)}: Переменная не определена (СтруктурнаяЕдиница) ТекстКорреспондента = ТекстКорреспондента + " р/с " + <>СтруктурнаяЕдиница.НомерСчета {ВнешняяОбработка.ВнешняяОбработка1(127,15)}: Переменная не определена (СтруктурнаяЕдиница) + " в " + <>СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город; {ВнешняяОбработка.ВнешняяОбработка1(127,47)}: Переменная не определена (СтруктурнаяЕдиница) + " в " + СтруктурнаяЕдиница.Банк + " " + <>СтруктурнаяЕдиница.Банк.Город; {ВнешняяОбработка.ВнешняяОбработка1(130,26)}: Переменная не определена (СтруктурнаяЕдиница) ТекстКорреспондента = <>СтруктурнаяЕдиница.ТекстКорреспондента; {ВнешняяОбработка.ВнешняяОбработка1(112,17)}: Процедура или функция с указанным именем не определена (ВернутьРасчетныйСчет) НомерСчета = <>ВернутьРасчетныйСчет(СтруктурнаяЕдиница);

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

Функция Печать(Тип = "Счет")

Что означает такая запись: она означает, что если в функцию небыл передан параметр, то параметр Тип примет значение
по умолчанию "Счет" , что нам и требуется для работы.

*** 2. Переменная не определена (СтруктурнаяЕдиница) - данная переменная является реквизитом документа СчетНаОплатуПокупателю , т.к.
в модуле внешней печатной формы мы этот реквизит не видим (мы не находимся в теле объекта документ), то получим эту переменную через
ссылку на документ, т.е. через реквизит обработки СсылкаНаОбъект , в который програама передат ссылку на текущий документ.
Добавим в начало функции следующую строку:

*** 3. Процедура или функция с указанным именем не определена (ВернутьРасчетныйСчет) - данная функция определена (т.е. описана) в модуле
документа, соответственно - нам достаточно полностью перенести код этой функции в нашу обработку.

Итак, теперь модуль обработки выглядит примерно следующим образом:

Функция ВернутьРасчетныйСчет(СчетКонтрагента) БанкДляРасчетов = СчетКонтрагента.БанкДляРасчетов; Результат = ?(БанкДляРасчетов.Пустая(), СчетКонтрагента.НомерСчета, СчетКонтрагента.Банк.КоррСчет); Возврат Результат; КонецФункции // ВернутьРасчетныйСчет() // Функция формирует табличный документ с печатной формой заказа или счета, // разработанного методистами // // Возвращаемое значение: // Табличный документ - сформированная печатная форма // Функция Печать(Тип = "Счет") Экспорт СтруктурнаяЕдиница = СсылкаНаОбъект.СтруктурнаяЕдиница; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка); // ...текст программы... ОбластьМакета.Параметры.Заполнить(Шапка); ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецФункции // ПечатьСчетаЗаказа()

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

Этап второй

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

Как мы видим по коду программы, текст получателя заполняется в этом месте:

Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда ТекстКорреспондента = СведенияОПоставщике.ПолноеНаименование; Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета + " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город; КонецЕсли; Иначе ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента; КонецЕсли; ОбластьМакета.Параметры.ПредставлениеПоставщика = ТекстКорреспондента;

Закзазчик поставил условие, что бы текст для данной ячеки брался из наименования плательщика в платежных поручениях на
перечисление налогов. Этот текст храниться в реквизите элемента справочника Организации - нам осталось только
получить к нему доступ. Если посмотреть на реквизиты документа, то мы уидим что в них храниться данные об организации,
по которой выписывался документ, а нужный нам текст храниться в реквизите организации - теперь мы знаем, как получить доступ:

ОбластьМакета.Параметры.ПредставлениеПоставщика = СсылкаНаОбъект.Организация.НаименованиеПлательщикаПриПеречисленииНалогов;

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

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

PS. Обсуждения, вопросы, предложения - всё в теме.