INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Баданов Владимир | Старший программист | 1С-Коннект

«Роль платформы 1С:Предприятие в сервисе 1С-Коннект»

- Сервис 1С-Коннект использует почти вся партнерская сеть 1С: 500 тыс. пользователей, 120+ тыс. ежедневно, рост трафика 2+ раза ежегодно. - Используемые продукты и технологии: xmpp, erlang, go, python, rabbitMQ, телефония, туннелирование, 4 СУБД: 1С: Предприятие (PostgreSQL+MSSQL), PostgreSQL, REDIS, MongoDB, описание ролей. - Администрирование сервиса осуществляется через конфигурацию 1С: написана с нуля, эксплуатация как SaaS, на одном сервере, без использования БСП, регламентные задания, PUSH-Sync, PartnerAPI, рассылки, отчёты. - Нагрузка, размер БД, способы оптимизации запросов: используем отбор по индексам, виртуальные таблицы, СКД в динамических списках, регистры сведений, разделение ИБ не используем. - RLS пережил два поколения. Система доступа оперирует сотней микро-ролей и назначает только нужные. - Интеграция: взаимодействие с другими частями инфраструктуры, API, проблемы первой версии, найденные решения - журналирование, ограничения на вызовы, гибкие входные параметры, пакетные вызовы. - Цикл производства: параллельная разработка выпусков. Ручное тестирование и автотесты (сценарные + API), обновление через механизм поставок, EDT+GIT. Трекер.

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

Печать - Универсальные печатные формы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

8

Скачать файлы

Наименование Файл Версия Размер
Шаблоны внешней печатной формы
.zip 29,07Kb
25.10.13
61
.zip 1.0.0 29,07Kb 61 Скачать

См. также

Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение