Каталог решений - Отключаем сохранение файлов в общей форме «ПечатьДокументов» и делаем кнопку сохранения в PDF быстро и без СМС

Отключаем сохранение файлов в общей форме «ПечатьДокументов» и делаем кнопку сохранения в PDF быстро и без СМС

Отключаем сохранение файлов в общей форме «ПечатьДокументов» и делаем кнопку сохранения в PDF быстро и без СМС

В наличии

Иногда требуется ограничить сохранение печатных форм в редактируемые виды документов, поддерживаемые 1С.
Конечно, PDF при желании, так же возможно отредактировать, но это чуть сложнее, поэтому сохраним в PDF.
Прикрепляю процесс разработки расширения и описание решения

Категория:

Описание

По заданию пользователей выложил процесс разработки расширения "с нуля", так как не сильно уж оно и объемное. Прикрепляю видео без звука (прошу прощения, было шумно). Надеюсь, публикацию не удалят со временем, и хоть на одном ресурсе, но оно останется. 

В рамках разработки в конфигурации заказчика мы правим основную конфигурацию. В предлагаемом расширении я показал быстрый способ решить эту же задачу, но со следующим ограничением: для наглядности менял на форме доступность, видимость кнопок по умолчанию, добавил команду на форме. Так делать не надо, желательно всем управлять из модуля, программно. Создание расширения и статью я сделал в свой обед, так что сроки были сжатые  — 30 минут. 

Решение задачи: 

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

     

Спасибо за внимание и оценку работы. 

has been added to your cart:
Оформление заказа