Внешние обработки, печатные формы, обработки по заполнению табличных частей
В данном материале описываются особенности реализации механизма подключения «Внешние обработки, печатные формы, обработки по заполнению табличных частей» (далее ВПФО). Также перечисляются требования, предъявляемые к внешним обработкам, для возможности их использования данным механизмом.
Общее описание
Механизм предназначен для подключения (без изменения конфигурации):
Внешние печатные формы и обработки создаются разработчиком с соблюдением определенных условий. Условия обязательны для выполнения на этапе создания внешней обработки, для ее корректной работы в качестве подключаемой к конфигурации.
Для реализации механизма ВПФО используется справочник «Внешние обработки».
Для справочника предусмотрены специализированные реквизиты*:
ПРИМЕЧАНИЕ
Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»
Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту «Вид обработки», из подменю «Сервис».
Добавлять и изменять ВПФО в базе данных может пользователь, обладающий правом администрирования дополнительных форм и обработок. Это отдельная роль в конфигурации.
Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.
Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:
Описание видов справочника ВПФО и требования к подключаемым внешним обработкам
Рассмотрим каждый вид ВПФО по отдельности.
Произвольная обработка
Для включения произвольных обработок в базу данных, необходимо указывать только внешнюю обработку, которая находится на диске.
Открытие произвольных обработок в форме списка производится при выборе элемента ВПФО с видом «Произвольная обработка». При этом, производится сохранение двоичных данных из реквизита «Хранилище внешней обработки» на диск во временный файл. После этого, у сохраненной внешней обработки открывается основная форма.
Основная форма для произвольной обработки должна быть определена обязательно.
Обработка для заполнения ТЧ объектов
Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением epf), список объектов и их ТЧ, для которых необходимо использовать данную обработку.
В типовых конфигурациях объектами, использующими данный механизм, являются все документы, содержащие хоть одну табличную часть.
Перед открытием формы объекта в командных панелях табличных полей (источником данных для которых является табличная часть объекта), которым соответствуют определенные строки в справочнике ВПФО, программно добавляются пункты в подменю «Заполнить» (если подменю «Заполнить» отсутствует на командной панели, оно создается).
При нажатии на созданную перед открытием кнопку подменю «Заполнить» происходит сохранение соответствующей обработки на диск во временный файл, для сохраненной внешней обработки вызывается процедура:
Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)
Наличие экспортной процедуры «Инициализировать()» в модуле объекта обработки с видом «Заполнение табличных частей» обязательно. В теле данной процедуры должен располагаться программный код, заполняющий табличную часть в соответствии с назначением обработки.
Обработка так же может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки». Макет должен состоять из 2-х колонок – «полное имя объекта» и «имя табличной части».
Пример макета Параметры_Авторегистрации:
Внешняя печатная форма
Для подключаемых внешних печатных форм указывается:
Для каждого типа объекта дополнительно можно указать:
Вызов диалога настройка условий отбора осуществляется при начале выбора значения в колонке «отбор»:
В формах объектов, в командной панели формы (обычно это нижняя командная панель) формируется подменю кнопок печатных форм. Подменю формируется программно, при открытии формы и при записи объекта в форме (для обеспечения изменения пунктов меню в зависимости от данных объекта, и срабатыванию указанных в печатных формах условий отборов). В формируемом меню стандартные печатные формы отделяется от подключаемых разделителем.
Например:
Если находится подключаемая печатная форма, которой необходимо заменить стандартную, то она заменяется и показывается в списке стандартных печатных форм. В этом случае подключенная печатная форма отдельно в списке подключенных печатных форм не отображается.
При нажатии на любую из кнопок печати происходит определение, соответствует ли данная кнопка внешней печатной форме или встроенной в конфигурацию.
Для кнопок, соответствующих печатным формам встроенным в конфигурацию, вызывается встроенный механизм печати (данный механизм в рамках текущего проекта не рассматривается).
Для кнопок, соответствующих внешним печатным формам, происходит сохранение соответствующей обработки на диск во временный файл.
Для сохраненной внешней обработки:
Наличие реквизита «СсылкаНаОбъект» и экспортной функции «Печать()» в модуле объекта обработки с видом «Внешняя печатная форма» обязательно.
В теле функции «Печать()» должен располагаться программный код, который формирует и возвращает табличный документ, в соответствии со значением реквизита «СсылкаНаОбъект».
Обработка так же может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» состоящий из одной колонки – полное имя объекта для которого будет создаваться соответствующая кнопка печати.
Пример макета Параметры_Авторегистрации:
При соблюдении этих требований пользователю будет достаточно указать при регистрации дополнительной печатной формы файл внешней обработки, после чего все реквизиты формы заполнятся автоматически.
Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»
В базе данных внешние обработки, печатные формы, обработки по заполнению табличных частей хранятся в справочнике «Внешние обработки». Справочник имеет следующую структуру:
ТабличнаяЧасть.Принадлежность. Хранит типы объектов, для которых задается ВПФО и прочие описанные ниже параметры. Табличная часть используется для элементов с видом обработки: «Печатная форма» или «Заполнение табличных частей».
Реквизиты табличной части:
** Используется только для элементов с видом обработки: «Заполнение табличных частей»
*** Используется только для элементов с видом обработки: «печатная форма».
Подключение дополнительных печатных форм к формам объектов конфигурации
Механизм дополнительных печатных форм является расширением стандартного механизма печатных форм объекта. Добавление дополнительной формы в общий список форм выполняется в процедурах модуля формы объекта перед открытием, после записи и при нажатии на кнопку «Установить печать по умолчанию».
Подменю «Печать» и кнопка «Печать по умолчанию» в форме объекта не должны присутствовать в обязательном порядке. Они формируются программно, в том случае, если есть хоть одна печатная форма и задана печать по умолчанию.
Подключение обработок по заполнению табличных частей к формам объектов конфигурации
Для обеспечения подключения механизма в форме объекта должны присутствовать следующие процедуры и функции:
Внешние печатные формы в управляемых формах 1С 8.3
Доработка печатной формы документа — самая распространенная доработка системы 1С 8.3. Однако при разработке нового функционала приходится снимать конфигурации с поддержки поставщика, что влечет за собой сложности при дальнейшем сопровождении 1С.
Внимание! Если Вам необходима разработка печатных форм любой сложности, но Вы не технический специалист — просто обратитесь к профессионалам. Подробности на странице услуги 1С.
Чтобы избежать таких проблем, фирмой 1С был придуман специальный функционал — подсистема «Дополнительных отчетов и обработок«, которая входит в БСП. Данный функционал позволяет без изменений в конфигурации добавить новую печатную форму или заменить старую.
Механизм заключается в разработке программистом внешней обработки, в которой описан программный код, формирующий нужную печатную форму. Данную обработку необходимо просто загрузить в пользовательском режиме (1С предприятие) в базу данных.
Этот функционал не новый, он достаточно давно используется в типовых конфигурациях. В настоящий момент актуальна версия библиотеки стандартных подсистем версии 2.х, в которой инструменты построены на механизме управляемых форм.
Рассмотрим методику разработки и настройки внешних печатных форм для 1С (8.2 или 8.3) именно в управляемом приложении, и ниже Вы можете скачать полученную внешнюю печатную форму.
Если у Вас нет времени читать, можете просмотреть наш видеоурок по созданию внешних печатных форм и подключению их на примере конфигурации 1С Бухгалтерии:
Пример создания внешней печатной формы в 1С 8.3
В нашем примере мы сделаем образец печатной формы «Счет» для документа «Реализация (акты, накладные)«.
Для начала создадим новую обработку и укажем в ней следующее:
1. Создадим экспортную функцию СведенияОВнешнейОбработке() в модуле объекта, укажем следующий код:
Формат возвращаемой структуры регламентирован, подробности можно узнать в разделах ИТС.
Они практически всегда одинаковы.
2. Вторым шагом необходимо создать экспортную процедуру Печать(), с помощью которой подсистема будет инициировать запуск печати из общих модулей подсистемы. Процедура содержит 4 параметра:
Процедура выглядит примерно следующим образом:
В ней формируется нужное количество табличных документов и готовится к печати. В нашем примере мы создадим функцию «СформироватьПечатнуюФорму()», которая будет возвращать табличный документ. Для примера мы предполагаем, что у нас всегда 1 печатная форма, поэтому передаём в функцию первый элемент массива (МассивОбъектов[0]).
Вот и всё, подготовительная часть обработки для внешней печатной формы в 1С 8.3 готова, осталось сделать непосредственно саму печатную форму в виде табличного документа, которую будет возвращать нужная функция.
Создание табличного документа
Подробно останавливаться на этом не будем, на эту тему есть большое количество материалов.
Представим лишь внешний вид макета нашего элементарного примера:
Подключение и тестирование ВПФ в 1С
В нашем примере мы запускаем конфигурации 1С Управление торговлей версии 11.1. Для добавления новой обработки необходимо в разделе «Администрирование» выбрать пункт «Печатные формы, отчеты и обработки». В нужном меню нужно нажать гиперссылку «Дополнительные отчеты и обработки» (если ссылка не активна, включите использование данного функционала — флаг расположен немного левее).
В открытом справочнике необходимо нажать на кнопку «добавить». Программа откроет диалоговое окно выбора файла, в котором необходимо указать файл разработанной нами ранее печатной формы. Если всё было сделано правильно, система автоматически заполнит все параметры, и останется только нажать кнопку «записать и закрыть»:
Как видно, параметры скопированы из функции «СведенияОВнешнейОбработке()».
Для того чтобы проверить работу обработки, необходимо в документе «Реализация товаров и услуг» открыть список печатных форм. В нём Вы уведите как «типовые» печатные формы, так и внешние, в том числе и наш добавленный:
При нажатии на команду система сформирует нужную нам форму:
Возможно, она не самая красивая, но как учебный пример, демонстрирующий работу в программе, вполне подойдет :).
Если у вас что-то не получается, рекомендую воспользоваться механизмом отладки внешних печатных форм.
Скачать получившийся пример внешней печатной формы можно по ссылке — ШаблонВнешнейПечатнойФормыБСП 2.0 (8.2).
Если Вам необходима разработка печатных форм любой сложности, но Вы не технический специалист — просто обратитесь к профессионалам. Мы предлагаем свои услуги на взаимовыгодных условиях. Подробности на странице 1С услуги.
Другие статьи по 1С:
Если вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм
1. В форму документа добавить процедуры:
2. Добавить в события формы документа:
3. В модуль менеджера нового документа
4. В общий модуль УправлениеПечатьюПереопределяемый в процедуру ПриОпределенииОбъектовСКомандамиПечати добавить строчку.
5. В модуль дополнительной печатной формы добавить процедуры
6. В форму списка документа добавить процедуры:
Добавить в командную панель ПодменюПечать:
ПоложениеКоманднойПанели поставить Верх
В списке обязательно должна присутствовать Ссылка
1С:Предприятие 8.3 (8.3.13.1644)
1С:Комплексная автоматизация 2 (2.4.6.207)
Специальные предложения
(6) Вы забыли про код в форме при создание на сервере
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
и другие нюансы, про которые незнаете и надо внимательно читать на ИТС
Как для этого такие «Подсказки» помогают, когда ночью уже голова не соображает, то такие пошаговые выручают, так как зачем это все помнить
(7)На чем основана Ваша 100% уверенность? На собственном неумении читать документацию?
Обновление 24.12.20 10:52
См. также
Библиотека стандартных подсистем (Механизм БСП) Промо
Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но.
03.03.2017 81660 V.Stavinsky 22
Базовые приемы работы с кластером 1С при помощи БСП
В данной публикации я рассматриваю базовые приемы работы с кластером серверных баз 1С, используя типовые типовые возможности библиотеки стандартных подсистем (БСП).
26.10.2021 2720 quazare 6
Не выводятся подписи ответственных лиц в печатных формах. Как победить проблему [БП 3.0.44]
Проблема: ни в одной печатной форме (ПКО, РКО, кассовая книга, счет, накладные и пр.) не подставляется ФИО руководителя, ФИО главного бухгалтера, кассира.
19.10.2021 369 config 3
Подключение нового справочника к подсистемам БСП (дополнительные реквизиты, файлы, запрет редактирования)
В данной статье я привожу пример подключения нового справочника к подсистемам БСП. Статья будет применима как к самописным конфигурациям на базе БСП, так и к типовым УТ, ERP, БП и прочим конфигурациям на базе БСП.
17.08.2021 2082 maraty 9
Кубик-рубик для деклараций 11 и 12 по данным 1С.Розница, ЕГАИС и других программ и источников. (Сбор/разбор деклараций на части и их анализ) Промо
Рассмотрены самые сложные ситуации(даже когда все данные утеряны). Алкогольные декларации 11 и 12 по данным 1С.Розница и других программ и источников.(Сбор/разбор деклараций на части и их анализ). «Приготовление» деклараций с учетом заданных/требующихся входных/выходных параметров. Рассматриваем самые сложные(изначально кажущиеся безвыходными) ситуации. Подходит тем, кто окончательно запутался в связи с введением ЕГАИСа в розничное звено.
09.12.2016 23032 liginrambler 7
Запуск Wscript.Shell и Shell.Application. Заметки
Некоторые примечания по работе с запуском приложений.
10.08.2021 1688 Yashazz 0
Добавление нового вида доступа в конфигурациях, построенных на БСП
Прочитаете и решите: надо оно вам или лучше по старинке. Рассмотрен простой вариант без групп доступа.
05.08.2021 1275 xrrg 2
В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.
21.06.2021 4639 quazare 4
Как устроена регламентированная отчетность в 1С Промо
30.11.2015 78659 mrXoxot 30
Изменение функционала получения списка пользователей
В данной процедуре изменен механизм получения списка действующих пользователей.
16.06.2021 991 creatermc 0
Особенности online-обмена между старыми и новыми типовыми
01.06.2021 2968 echo77 7
Печать непроведенных документов в УТ 11
Печать непроведенных документов (в частности, из внешних печатных форм).
13.05.2021 888 atdonya 0
Сканируем без сканера или MXL to JPG Промо
Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.
24.05.2012 34724 shakmaev 47
Нулевой отчет 6-НДФЛ за 1 квартал 2021 в УПП
Как сохранить и выгрузить отчет из УПП в файл?
27.04.2021 2251 VAAngelov 14
Обзор полезных методов БСП 3.1.4. Часть 2
27.04.2021 15573 rayastar 7
Отчетность через СБИС в Xubuntu 20.04
Показан пример подготовки налоговой декларации через СБИС в Xubuntu 20.04 для сдачи в ФНС как в печатной, так и электронной форме.
26.04.2021 2329 compil7 3
Работа через сервис 1С-Отчетность нескольких пользователей
Организации, в которых количество сотрудников превышает установленное значение, обязаны отправлять отчетность по телекоммуникационным каналам связи. Это может быть Контур-Экстерн, Такском или любой другой провайдер. Все чаще пользователи 1С используют сервис 1С-отчетность. И все чаще сертификат оформляется на сотрудника отдела кадров или бухгалтерии. В случае, если нужно оформить несколько сертификатов, возникают трудности в версии ЗУП 3.1.14 и более поздних. О том, как с ними справиться, пойдет речь в данной публикации.
05.04.2021 1995 keat24 1
Подготовка отчетности за 2020 год в условиях ограничений на уровне записей RLS в УПП 1.3
Если предприятие использует ограничения на уровне записей RLS в УПП 1.3 и ограничение на доступ к организациям, бухгалтерскую отчетность за 2020 год (конкретно Пояснения. Раздел 5 «Дебиторская и кредиторская задолженность») сформировать невозможно пользователю, у которого нет прав на чтение всех платежных поручений и кассовых ордеров по всем организациям. Происходит ошибка «У пользователя недостаточно прав на исполнение операции над базой данных.». Данная статья предлагает решение этой проблемы.
29.03.2021 829 ksnik 0
Обзор полезных методов БСП 3.1.4
25.03.2021 39407 rayastar 51
Печать макета MS Word в любом документе с помощью БСП
В данной статье рассмотрим типовой функционал вывода на печать макетов печатных форм MS Word (*.docx) для любого документа конфигурации, основанной на библиотеке стандартных подсистем. Вариант клиент-серверный.
23.02.2021 6253 quazare 3
Использование отчета как печатной формы документа
20.02.2021 2944 ltfriend 6
Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП
В данной статье рассмотрим базовое применение методов вывода на печать макетов печатных форм с помощью БСП любых типовых или собственных документов.
v8.3: Как программно сформировать внешнюю печатную форму документа
у меня уже есть вот такая процедура:
СсылкаНаВПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВПФ);
Если СсылкаНаВПФ.Пустая() Тогда
Сообщить(«В справочнике ‘Внешние обработки’ не нашли внешнюю печатную форму с наименованием ‘»+ИмяВПФ+»‘»);
Возврат;
КонецЕсли;
Попытка
ИмяВременногоФайла = КаталогВременныхФайлов()+»тмп_впф.epf»;
Исключение
Сообщить («Невозможно создать файл обработке в каталоге временных файлов >. Возможно, не хватает прав доступа в Windows в папку для данного сеанса 1С «);
Возврат;
КонецПопытки;
ДвоичныеДанные = СсылкаНаВПФ.ХранилищеОбработки.Получить();
ДвоичныеДанные.Записать(ИмяВременногоФайла);
МассивОбъектовНазначения = Новый Массив;
МассивОбъектовНазначения.Добавить(Объект.ПрихНакл);
// Проба печати
Попытка
ТаблДок = ОбрОбъект.печать(МассивОбъектовНазначения, Новый СписокЗначений, Истина, Ложь);
ТаблДок.Вывести();
Исключение
А=1; // Точка останова для отладки!
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке() )); // ВНЕШНЮЮ печатную форму из справончика ВПФ можно спокойно поправить!
КонецПопытки;
но она не работает, вы дает вот такую ошибку:
<Форма.Форма.Форма(206)>: Обращение к процедуре объекта как к функции (печать)
ТаблДок = ОбрОбъект.печать(МассивОбъектовНазначения, Новый СписокЗначений, Истина, Ложь);