По заданию пользователей выложил процесс разработки расширения "с нуля", так как не сильно уж оно и объемное. Прикрепляю видео без звука (прошу прощения, было шумно). Надеюсь, публикацию не удалят со временем, и хоть на одном ресурсе, но оно останется.
- Видео на канале Ютуб Отключаем сохранение файлов в общей форме "ПечатьДокументов" и делаем кнопку сохранения в PDF быстро
- Видео на канале ВК Отключаем сохранение файлов в общей форме "ПечатьДокументов" и делаем кнопку сохранения в PDF быстро
В рамках разработки в конфигурации заказчика мы правим основную конфигурацию. В предлагаемом расширении я показал быстрый способ решить эту же задачу, но со следующим ограничением: для наглядности менял на форме доступность, видимость кнопок по умолчанию, добавил команду на форме. Так делать не надо, желательно всем управлять из модуля, программно. Создание расширения и статью я сделал в свой обед, так что сроки были сжатые - 30 минут.
Решение задачи:
- Получить общую форму "ПечатьДокументов" в расширение
- Ввести дополнительную роль на возможность использования типового функционала (Администратор, Полные права в связи с используемым методом БСП подтягиваются по умолчанию);
- Сделать сохранения всех печатных форм, которые находятся в Объекте - общая форма "ПечатьДокумента" в момент нажатия кнопки печать. Небольшую часть кода взял тут же, на форме, в методе перехода между различными таблицами в списке, остальное из головы;
- Ввести ограничения на доступ к типовым кнопкам;
- Самое интересное, на мой взгляд - от доступности кнопки "Печать" отклонять сохранение табличного документа, который видит пользователь. На форме он называется "ТекущаяПечатнаяФорма", в процедуру "ПередЗаписью" вносим одну строчку, для расширения будет актуально использовать вызов "Перед" стандартной процедурой;
- Обновление вечера после написания статьи (в видео этого нет): выяснил, что имя файла не собиралось только по шаблону, добавил кусок кода из этой же формы, который сопоставляет печатаемый объект шаблону в серверную функцию:
&НаСервере Функция СохранитьВPDFНаСервере(НастройкаПечатнойФормы) ФормыИмена = Новый Массив; ПечатныеФормыПоОбъектам = УправлениеПечатью.ПечатныеФормыПоОбъектам(ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита], ОбъектыПечати); Для Каждого СоответствиеОбъектаПечатнойФорме Из ПечатныеФормыПоОбъектам Цикл ОбъектПечати = СоответствиеОбъектаПечатнойФорме.Ключ; ПечатнаяФорма = СоответствиеОбъектаПечатнойФорме.Значение; ЗаданныеИменаПечатныхФорм = ОбщегоНазначения.ЗначениеИзСтрокиXML(НастройкаПечатнойФормы.ИмяФайлаПечатнойФормы); ИмяФайла = УправлениеПечатью.ИмяФайлаПечатнойФормыОбъекта(ОбъектПечати, ЗаданныеИменаПечатныхФорм, НастройкаПечатнойФормы.Название); ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла); ФормыИмена.Добавить(Новый Структура("ПечатнаяФорма, ИмяФайла",ПечатнаяФорма, ИмяФайла)); КонецЦикла; Возврат ФормыИмена; КонецФункции
Спасибо за внимание и оценку работы.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.2.1.100
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.9.4
- Управление торговлей, редакция 11, релизы 11.0.4.5
- 1С:Комплексная автоматизация 2, релизы 2.0.2.90