Экономика

1С 8.3 Внешние печатные формы в управляемых формах

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

           
Доработка печатной формы документа — самая распространенная доработка системы 1С 8.3. Однако при разработке нового функционала приходится снимать конфигурации с поддержки поставщика, что влечет за собой сложности при дальнейшем сопровождении 1С.


Чтобы избежать таких проблем, фирмой 1С был придуман специальный функционал — подсистема «Дополнительных отчетов и обработок«, которая входит в БСП. Данный функционал позволяет без изменений в конфигурации добавить новую печатную форму или заменить старую.
Механизм заключается в разработке программистом внешней обработки, в которой описан программный код, формирующий нужную печатную форму. Данную обработку необходимо просто загрузить в пользовательском режиме (1С предприятие) в базу данных.
Этот функционал не новый, он достаточно давно используется в типовых конфигурациях. В настоящий момент актуальна версия библиотеки стандартных подсистем версии 2.х, в которой инструменты построены на механизме управляемых форм.
Рассмотрим методику разработки и настройки внешних печатных форм для 1С (8.2 или 8.3) именно в управляемом приложении, и ниже Вы можете скачать полученную внешнюю печатную форму.
Если у Вас нет времени читать, можете просмотреть наш видеоурок по созданию внешних печатных форм и подключению их на примере конфигурации 1С Бухгалтерии:
Смотреть

Пример создания внешней печатной формы в 1С 8.3

В нашем примере мы сделаем образец печатной формы «Счет» для документа «Реализация (акты, накладные)«.

Для начала создадим новую обработку и укажем в ней следующее:

1. Создадим экспортную функцию СведенияОВнешнейОбработке() в модуле объекта, укажем следующий код:

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

Формат возвращаемой структуры регламентирован, подробности можно узнать в разделах ИТС.

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


Они практически всегда одинаковы.

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

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

Процедура выглядит примерно следующим образом:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Экспорт УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"СчетНаОплатуВРТУ",
"Счет на оплату (шаблон)", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));
КонецПроцедуры
// Печать()

В ней формируется нужное количество табличных документов и готовится к печати. В нашем примере мы создадим функцию «СформироватьПечатнуюФорму()», которая будет возвращать табличный документ. Для примера мы предполагаем, что у нас всегда 1 печатная форма, поэтому передаём в функцию первый элемент массива (МассивОбъектов[0]).

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

Создание табличного документа

Подробно останавливаться на этом не будем, на эту тему есть большое количество материалов.

Представим лишь внешний вид макета нашего элементарного примера:

Макет счета на оплату

И листинг:

Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати) ТабличныйДокумент =
Новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати =
"ПАРАМЕТРЫ_ПЕЧАТИ_СчетНаОплатуВРТУ"; МакетОбработки = ПолучитьМакет("СчетНаОплатуВнешний");
//заполняем шапку ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер; ОбластьШапка.Параметры.ДатаДокумента = СсылкаНаДокумент.Дата; ОбластьШапка.Параметры.НазваниеОрганизации = СсылкаНаДокумент.Организация.Наименование;
//выводим шапку в табличный документ ТабличныйДокумент.Вывести(ОбластьШапка);
//заполняем строки ТЧ ОбластьСтроки = МакетОбработки.ПолучитьОбласть("СтрокаТЧ");
Для
Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл ЗаполнитьЗначенияСвойств(ОбластьСтроки.Параметры, ТекущаяСтрока); ТабличныйДокумент.Вывести(ОбластьСтроки);
КонецЦикла;
//заполняем подвал ОбластьПодвал = МакетОбработки.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.КоличествоИтог = СсылкаНаДокумент.Товары.Итог("Количество"); ОбластьПодвал.Параметры.СуммаИтог = СсылкаНаДокумент.Товары.Итог("Сумма"); ОбластьПодвал.Параметры.ИмяОтветственного = СсылкаНаДокумент.Менеджер.Наименование;
//выводим подвал в табличный документ ТабличныйДокумент.Вывести(ОбластьПодвал); ТабличныйДокумент.АвтоМасштаб =
Истина;
Возврат ТабличныйДокумент;
КонецФункции

Подключение и тестирование ВПФ в 1С

В нашем примере мы запускаем конфигурации 1С Управление торговлей версии 11.1. Для добавления новой обработки необходимо в разделе «Администрирование» выбрать пункт «Печатные формы, отчеты и обработки». В нужном меню нужно нажать гиперссылку «Дополнительные отчеты и обработки» (если ссылка не активна, включите использование данного функционала — флаг расположен немного левее).

Настройка использования дополнительных обработок

В открытом справочнике необходимо нажать на кнопку «добавить». Программа откроет диалоговое окно выбора файла, в котором необходимо указать файл разработанной нами ранее печатной формы. Если всё было сделано правильно, система автоматически заполнит все параметры, и останется только нажать кнопку «записать и закрыть»:

Добавление внешней печатной формы в 1С

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

Для того чтобы проверить работу обработки, необходимо в документе «Реализация товаров и услуг» открыть список печатных форм. В нём Вы уведите как «типовые» печатные формы, так и внешние, в том числе и наш добавленный:

Новый шаблон в списке выбора

При нажатии на команду система сформирует нужную нам форму:

Полученная печатная форма

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

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

Скачать получившийся пример внешней печатной формы можно по ссылке — ШаблонВнешнейПечатнойФормыБСП 2.0 (8.2).




Источник programmist1s.ru
Рекомендуем:
I.
Практика учета в 1С Проект Дарьи Мошкиной "Статьи, видеоуроки, курсы и мастер-группы по 1С"
Курс Учет производства в 1С Комплексной автоматизации 2 (1С УПП и Комплексной автоматизации 1.1)
Учет в 1C Управление производственным предприятием 8Настройки параметров учета в 1С УПП и Комплексной: Режим учета затрат

II.

1С УПП - что это такое? 1С: Управление производственным предприятием

Автор:? 
Общие сведения
Контроль данных в 1С УПП: что это такое?
Структура прикладного решения
Сфера применения
Преимущества системы

III.
1С:ERP и 1С:УПП: А в чем же разница? 
С декабря 2013 года на рынке РФ параллельно существуют 2 системы ERP-класса, разработанные на Платформе 1С: 1С:Предприятие 8. Управление производственным предприятием (1С:УПП) и 1С:ERP Управление предприятием 2 (1С:ERP). Причем оба решения широко используются в различных отраслях. шаблоны для dle 11.2
Теги

Похожие новости

Комментарии к новости

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

Написать свой комментарий:

Присоединяйтесь

Экспертиза выполненного проекта, как принято считать, упорядочивает пресс-клиппинг.

Журналисты

Цитата

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

Иван Дионтьев, редактор