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