Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
Шаблон разработки печатных форм и подключения к конфигурациям на БСП 2.х и БСП 3.0
Шаблон я заготовил еще на БСП 2.х, сейчас актуальна БСП 3.0.х – шаблон менял с развитием БСП. Сравнивая шаблоны получилось очень наглядно как «1С» реализует концепцию «вести разработку как бы сбоку, оставляя типовые объекты на поддержке, а в идеале на замке». Для этого развивает программный интерфейс подсистем БСП, что позволяет свести к минимуму количество объектов в расширении конфигурации.
Для БСП 2.х и БСП 3.0 макет табличного документа и алгоритм формирования печатной формы располагаю в объекте обработка, расширения конфигурации. «Обычно макет печатной формы располагается при объекте, но если макет является общим для двух и более объектов, то либо его следует располагать в обработке, либо это должен быть общий макет.» [ИТС, БСП гл. 3.38 Печать]. Для меня важно оставить конфигурацию «девственной» и минимум объектов заимствовать в расширение конфигурации, поэтому в обработке.
Если на БСП 2.х укладываемся в 7 шагов:
После этого в командной панели формы объекта (например, документа) и формы журнала, в меню «Печать» появится созданная команда.
Рис. 1 Расширение конфигурации на БСП 2.х
то на БСП 3.0 получаем желаемое за 4-е шага
Благодаря развившемуся программному интерфейсу подсистемы «Печать» в расширении конфигурации ничего заимствовать более не нужно.
Рис. 2 Расширение конфигурации на БСП 3.0
Повинуясь ИТС, подсистему «ПодключаемыеОтчетыИОбработки» заимствуем и в нее включаем созданную обработку.
Вот тот программный интерфейс БСП 3.0, благодаря которому нет более надобности заимствовать «Группу команд», «Документ» и создавать команды у обработки. Следующие процедуры, располагаем в модуле менеджера обработки.
Процедуру формирования печатной формы располагаем в ММ обработки
До процедуры с кодом формирования конкретного табличного документа, я заворачиваю в метод «обертку» ПечатнаяФорма(), в который вынес общие действия характерные для формирования любого табличного документа и обработки массива ссылок, которые нужно распечатать.
В самой процедуре формирования печатной формы я придерживаюсь следующей структуры:
Такой прием позволяет в дальнейшем передвигать параметры по областям макета, не меняя код в процедуре и выглядит элегантно.
//тол+ Обновление публикации от 20.02.2020 г.
З арекся, не добавлять клиентский контекст, если не наберет +100, но статья набрала.
«В отдельных случаях для формирования некоторых печатных форм может потребоваться клиентский контекст. Например, для запроса дополнительных параметров печатной формы у пользователя непосредственно перед печатью» [ИТС, БСП гл. 3.38 Печать]
Как (было) на БСП 2.х?
В старых (и не очень) конфигурациях я не задумывался о модальности и смело шел любым путем.
Форму(ы) для клиентского контекста, располагаем в той же обработке в расширении. Нужные типы для реквизитов формы, заимствуем из основной конфигурации. Например, справочник «ВидыЦен».
Последовательность действий такая:
Рис. 3 Заход в клиентский контекст на БСП 2.0
Далее вендор объявил «священную войну» модальности, и я стал под эти знамена. Вроде ничего сложного, но в меня плохо зашел «отказ от модальности», может потому, что это «костыль» от самой 1С что бы подружиться с браузерами.
Отказ от модальности заставил усложнить код реализующий заход в клиентский контекст:
Рис. 4 Заход в клиентский контекст на БСП 2.0 + отказ от модальности
Как теперь можно на БСП 3.х?
Рис. 5 Заход в клиентский контекст на БСП 3.х
Реквизит формы в расширении определяем кодом, ну что бы уже «ваще не гадить»
Рис. 6 Программное создание реквизита формы.
П.С. Попытался сложить окна в EDT вертикально, что бы нарезать скрины … и не смог:( Конфигуратор forever!
Внешние обработки, печатные формы, обработки по заполнению табличных частей
В данном материале описываются особенности реализации механизма подключения «Внешние обработки, печатные формы, обработки по заполнению табличных частей» (далее ВПФО). Также перечисляются требования, предъявляемые к внешним обработкам, для возможности их использования данным механизмом.
Общее описание
Механизм предназначен для подключения (без изменения конфигурации):
Внешние печатные формы и обработки создаются разработчиком с соблюдением определенных условий. Условия обязательны для выполнения на этапе создания внешней обработки, для ее корректной работы в качестве подключаемой к конфигурации.
Для реализации механизма ВПФО используется справочник «Внешние обработки».
Для справочника предусмотрены специализированные реквизиты*:
ПРИМЕЧАНИЕ
Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»
Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту «Вид обработки», из подменю «Сервис».
Добавлять и изменять ВПФО в базе данных может пользователь, обладающий правом администрирования дополнительных форм и обработок. Это отдельная роль в конфигурации.
Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.
Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:
Описание видов справочника ВПФО и требования к подключаемым внешним обработкам
Рассмотрим каждый вид ВПФО по отдельности.
Произвольная обработка
Для включения произвольных обработок в базу данных, необходимо указывать только внешнюю обработку, которая находится на диске.
Открытие произвольных обработок в форме списка производится при выборе элемента ВПФО с видом «Произвольная обработка». При этом, производится сохранение двоичных данных из реквизита «Хранилище внешней обработки» на диск во временный файл. После этого, у сохраненной внешней обработки открывается основная форма.
Основная форма для произвольной обработки должна быть определена обязательно.
Обработка для заполнения ТЧ объектов
Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением 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. Мы работаем в Москве и области.
Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП
Введение
Для кого-то этот материал не новшество, но отмечу, что данная статья будет полезна специалистам, желающим использовать последние возможности библиотеки стандартных подсистем в методах вывода на печать. Хорошо известно, что подсистема БСП постоянно меняется и усовершенствуется, и я могу сказать определенно, что старые методы и алгоритмы вывода на печать макетов печатных форм документов и справочников уже будут вряд ли применимы в современных конфигурациях на последних БСП.
Подготовка и настройка собственного документа конфигурации для использования в подсистеме печати в системе БСП.
Начнем с простого создания документа ТестоваяПечатьДокументов в конфигурации на БСП. В качестве конфигурации я беру чистую библиотеку стандартных подсистем версии 3.1.4.148. Разработка ведется на Платформе 1с 8.3.18.1208.
выглядит это вот так:
выглядит она вот так:
Далее, для «формы списка» добавляем внутренние БСП подключаемые процедуры:
А для «формы документа» добавляем вот такие внутренние БСП подключаемые процедуры:
Далее, заполним модуль менеджера нашего документа. Напишем в нем такой код:
Тут нет ничего сложного, но особое внимание хочу обратить на вот эту процедуру добавления команд
Заключение и выводы
В данной статье мы рассмотрели основной алгоритм БСП для размещения команд печати на любых документах конфигурации, в основе которой лежит современная библиотека стандартных подсистем. Напомню, что разработка примера велась на «чистой» библиотеке стандартных подсистем версии 3.1.4.148 и Платформе 1с 8.3.18.1208.
Другие мои материалы по БСП
Так же прошу ознакомиться с другими моими статьями по функционалу библиотеки стандартных подсистем и типовым конфигурациям: