Шаблон для внешней печатной формы на тонком клиенте с возможностью отладки


Предлагаю Вашему вниманию (а заодно и обсуждению) шаблон для внешней печатной формы на тонком клиенте под библиотеку стандартных подсистем с возможностью отладки без изменения конфигурации…

В связи с прекращением поддержки Бухгалтерии 2.0 многие встретились с дилеммой переноса всего того «что нажито непосильным трудом», а именно множеством внешних печатных форм, отчетов и обработок. Пришлось разбираться и мне. Человек я  ленивый, люблю комфорт и поэтому делаю так, чтоб можно потом было что-то делать с меньшими трудозатратами для себя.

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

И вот, не желая отказываться от комфортной жизни и на тонком клиенте, села за перенос печатной формы (первая ласточка так сказать) с твердой уверенностью сделать себе похожий на предыдущий шаблон. Сначала меня порадовало вид публикации «Режим отладки». Впрочем, радость быстро прошла. Это всего лишь
 » Режим отладки – обработка доступна для использования только с установленной ролью Добавление и изменение дополнительных обработок или Полные права
Чем дальше я углублялась в логику всего происходящего, тем больше понимала, что «предельно просто» тут не прокатит. Но «лучше день потерять, потом за 5 минут долететь». И вот после трудов я получила себе нечто похожее, чего я так желала. Шаблон готов, печатная форма заработала.

Далее пойдет детальное повествование, как пользоваться этим «чудом». Итак……..

Основные процедуры и функции лежат в модуле формы.

Первая функция, предназначенная для создания структуры регистрации обработки в информационной базе

Функция СведенияОВнешнейОбработке() Экспорт

Все подробности можно прочитать в комментариях внутри функции, здесь я приведу только пример как ее заполнить (комментарии убрала для компактности):

Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = Новый Структура;
  
    ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»);
   
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить(«Документ.ПоступлениеТоваровУслуг»);
    МассивНазначений.Добавить(«Документ.РеализацияТоваровУслуг»);
    ПараметрыРегистрации.Вставить(«Назначение», МассивНазначений);
   
    ПараметрыРегистрации.Вставить(«Наименование», НСтр(«ru = ‘ПСА'»));
    ПараметрыРегистрации.Вставить(«Версия», «2.0»);
    ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина);
    ПараметрыРегистрации.Вставить(«Информация», НСтр(«ru = ‘Печать приемосдаточного акта.'»));
    ПараметрыРегистрации.Вставить(«ВерсияБСП», «1.2.1.4»);
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = НСтр(«ru = ‘ПСА'»);         
    НоваяКоманда.Идентификатор = «ПСА»;
    НоваяКоманда.Использование = «ВызовСерверногоМетода»;
    НоваяКоманда.ПоказыватьОповещение = Истина;                        
    НоваяКоманда.Модификатор = «ПечатьMXL»;
            
    ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Далее идет функция создания таблицы команд, ее не надо редактировать, оставляем как есть

Функция ПолучитьТаблицуКоманд()

А вот процедуру печати уже заполняем как нам нужно, она отвечает за вызов процедур создания нужных нам печатных форм и характерна только для обработок типа «ПечатнаяФорма»

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

Привожу пример заполнения данной процедуры, естественно эта процедура может существенно отличаться. У меня пример с печатью одной формы под два объекта. Но основной смысл будет понятен:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
 
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «ПСА») Тогда
        Если ТипЗнч(МассивОбъектов) = Тип(«ДокументСсылка.РеализацияТоваровУслуг») Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «ПСА», НСтр(«ru = ‘ПСА'»),
                                                                Печать_ПСА_Реализация(МассивОбъектов, ОбъектыПечати));
        ИначеЕсли ТипЗнч(МассивОбъектов) = Тип(«ДокументСсылка.ПоступлениеТоваровУслуг») Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «ПСА», НСтр(«ru = ‘ПСА'»),
                                                                Печать_ПСА_Поступление(МассивОбъектов, ОбъектыПечати));
        Иначе
            МассивРеализация = Новый Массив; МассивПоступление = Новый Массив;
            Для каждого Элем Из МассивОбъектов Цикл
                Если ТипЗнч(Элем) = Тип(«ДокументСсылка.РеализацияТоваровУслуг») Тогда
                    МассивРеализация.Добавить(Элем);
                ИначеЕсли ТипЗнч(Элем) = Тип(«ДокументСсылка.ПоступлениеТоваровУслуг») Тогда
                    МассивПоступление.Добавить(Элем);
                КонецЕсли;
                
                Если МассивРеализация.Количество() > 0 Тогда
                    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «ПСА», НСтр(«ru = ‘ПСА'»),
 Печать_ПСА_Реализация(МассивОбъектов, ОбъектыПечати));
                КонецЕсли;
                Если МассивПоступление.Количество() > 0 Тогда
                    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «ПСА», НСтр(«ru = ‘ПСА'»),
 Печать_ПСА_Поступление(МассивОбъектов, ОбъектыПечати));
                КонецЕсли;
            КонецЦикла;
                                                                
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Ну принципе и все. С этого момента можете приступать уже непосредственно к созданию самой печатной формы.
Ах, да… Исправьте реквизит обработки СсылкаНаОбъект на нужную Вам ссылку для удобства тестирования. Формы, которые в обработке, трогать не нужно.

Так в чем же «фишка»? А вот теперь именно про нее. Обработку можно тестировать как простую обработку через меню Файл -> Открыть…
Появляется форма обработки, которая позволяет выбрать ссылку на объект для созданной печатной формы.

Если у Вас все благополучно закодировано, то Вы увидите здесь результат своей работы:

 

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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *