1с как обратиться к макету внешней обработки

Обновлено: 04.07.2024

В типовых конфигурациях на управляемых формах «1С Бухгалтерия предприятия 8», «1С Зарплата и управление персоналом 8», «1С Управление Торговлей 8» и т.д., которые реализованы с использованием БСП (библиотека стандартных подсистем) – есть такая замечательная вещь, как регистр сведений «Пользовательские макеты печати». Помимо своего прямого предназначения - дать пользователю возможность самостоятельно редактировать печатные формы (конечно в разумных пределах), его можно использовать и по другому назначению. А именно - хранить в нём некоторую информацию. Бывают ситуации, когда поставленная задача казалось бы не даёт возможности её выполнить, не внеся изменений в типовую конфигурацию. А менять типовую без крайней необходимости – ой, как не хочется. На мой взгляд - с помощью регистра сведений "Пользовательские макеты" - можно решать некоторые задачи. Регистр сведений "ПользовательскиеМакетыПечати" - имеет два измерения: "Объект" и "ИмяМакета", которые имеют тип "Строка" и один ресурс "Макет" с типом "ХранилищеЗначений", где можно хранить что угодно. Почему бы этим не воспользоваться. Ниже примеры из моей практики, где применял.

Пример для «1С Зарплата и управление персоналом 8»:

Необходимо из внешней торговой системы загружать данные о продажах и на основании этих данных рассчитывать премии продавцам. Продавцы имеют процент в зависимости от должности («стажер», «консультант» и т.д) и от места расположения магазина. Никакой линейной зависимости нет: одна и та же должность в разных магазинах имеет разный процент. В прежней редакции Зарплаты 2.5 был заведен «регистр сведений» в разрезе должность/подразделение со ставкой процента. При переходе на 3.1 – было решено использовать макет. Это позволило оставить конфигурацию полностью типовой. Использовать дополнительные реквизиты не получалось, т.к. тогда пришлось бы прописывать для каждого магазина должности и ставки процентов. Оставался бы открытым вопрос с хранением истории изменения ставок, да и забивать форму кучей дополнительных реквизитов тоже не хотелось.

Пример использования при печати:

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

Конечно использование макетов - регистр сведений никогда не заменит, но в каких-то случаях очень даже полезен.

Ниже пример реализации по примеру с записью ставок процентов продаж:

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

С записью всё просто:

«ИмяВладельца» и «ИмяМакета» - большой роли не играют. Главное чтобы потом при считывании макета они были такими же.

Считываем макет и выводим на печать:

Для вывода на печать, чтобы использовать общую форму "Печать документов", нужно будет ещё в реквизиты формы добавить Таблицу значений с колонками произвольного типа "ИмяМакета", "ТабличныйДокумент", "ИмяВРЕГ", "СинонимМакета", "Экземпляров", "ПолныйПутьКМакету", "ИмяФайлаПечатнойФормы", "ОфисныеДокументы".

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

Пример с обработкой прилагаю: работает и "1С Зарплатой 8" и с "1СБухгалтерией 8". В "1С Управлении торговлей 8" не сработает по причине отсутствия справочников "Должности" и "Подразделения", но сам принцип рабочий.

Обработка тестировалась на релизах "1С Зарплата 8" 3.1.7.144, 3.1.8.216; "1С Бухгалтерия 8" 3.0.67.54.

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

Релизацию задачи можно разделить на три шага перехвата и модернизации механизмов:

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

Разберем каждый из шагов подробнее.

1. Перехват и модернизации механизма заполнения типового списка макетов

Механизм находится в процедуре формы РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.ЗаполнитьТаблицуМакетовПечатныхФорм().

Добавляем форму МакетыПечатныхФорм в расширение, в модуле формы прописываем следующий код:

Схематично вышеприведенный код работает следующим образом:



2. Перехват и модернизации механизма получения макета по имени объекта метаданных

Механизм находится в функции ОбщийМодуль.УправлениеПечатью.МакетПечатнойФормы(ПутьКМакету)

Добавляем общий модуль УправлениеПечатью в расширение. В модуле расширения пишем следующий код:

Схематично вышеприведенный код работает следующим образом:


3. Перехват и модернизации механизма записи модернизированного пользовательского макета

Механизм находится в функции ОбщийМодуль.УправлениеПечатью.ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище).

Общий модуль УправлениеПечатью мы уже добавили в наше расширение, поэтому сразу добавляем в модуль УравлениеПечатью следующий код:

Схема работы кода выглядит аналогично п.2.

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

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

Вот, собственно, и все. Буду раз вашим комментариям.

Системные требования

Платформа: не ниже v8.3.11

БСП: v2.4.4.145 - v3.0.1.355

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Спасибо! Помогло решить проблему редактирования внешней печ.формы WORD/

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

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

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

  • Главная
  • Программирование 1С
  • 1С. Печать из формы внешней обработки, вывод табличного документа в общую форму "Печать документов" посредством БСП.

1С. Печать из формы внешней обработки, вывод табличного документа в общую форму "Печать документов" посредством БСП.

Изменение существующих или создание новых печатных форм – задача довольно распространённая. Как правило, в таких случаях создаётся внешняя печатная форма и подключается через стандартную подсистему дополнительных отчётов и обработок. Однако, иногда возникают задачи, в которых печатная форма должна формироваться с учётом данных, вводимых пользователями непосредственно перед печатью. То есть, сначала должна открыться форма, в которую пользователь вводит данные, и только потом выполняется команда "Печать".

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

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

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

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

В итоге функция будет выглядеть так:

Создаём макет печатной формы.

Далее создаём основную форму обработки и необходимые реквизиты формы. Создаём и размещаем на форме команду "Печать". Формировать табличный документ для печати будем в обработчике этой команды. В зависимости от того, какие данные требуются для печатной формы, организовываем заполнение табличного документа либо на клиенте, либо на сервере. В данном примере заполняем на сервере и затем возвращаем табличный документ на клиент.

Итак, в модуле формы:

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

Дополним обработчик команды "Печать":

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

1. В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл->Новый->Внешняя обработка), задаем имя.

2. В модуле обработки пишем код. Постараюсь его максимально комментировать. Главное должно быть:

  • функция ПечатьВнешнейПечатнойФормы табличного документа - которая выведет данные в макет
  • функция Печать - вызывается из конфигурации! в нее передается массив печатаемых объектов
  • и функция СведенияОВнешнейОбработке(). Она необходима для регистрации печатной формы в справочнике ДополнительныеОтчетыИОбработки, в ней собирается структура с данными для подключения формы. Эта функция, а также ряд сопутствующих ей, практически одинаковы для всех печатных форм, поэтому их можно просто копировать в новую печатную форму ничего не меняя.

3. Добавляем макет вывода печатной формы:


4. Сохраняем и добавляем в конфигурацию:

Подключается через Администрирование - Печатные формы, отчеты и обработки:


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

Разместил: all4cf  Версии: | 8.2 УП | 8.3 |  Дата: 15.09.2015   Прочитано: 124740

Распечатать

Похожие FAQ

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps  20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools  50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это?  11
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих

Еще в этой же категории

Ключевые слова и Изображения

Слова упорядочены по частоте использования в тексте

Изображения

Пример создания внешней печатной формы для управляемого приложения
Пример создания внешней печатной формы для управляемого приложения

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

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

Читайте также: