1С: Кнопка печати на управляемой форме

Для того чтобы на форме автоматически появилась кнопка печати, достаточно:

1.Создать команду, с именем надписи которая будет в выпадающей кнопке печати

    2. В модуле команды разместить код вывода печатной формы. Примерно что-то в этом духе:

    Функция КомпонентаФормированияQRКода()
    	
    	QRCodeGenerator = Неопределено;
    	
    	Попытка
    		Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиQRКода24", "QR") Тогда
    			QRCodeGenerator = Новый("AddIn.QR.QRCodeExtension");
    		Иначе
    			Возврат Неопределено;
    		КонецЕсли;
    	Исключение
    		сообщить(ОписаниеОшибки());
    		Возврат Неопределено;
    	КонецПопытки;
    	
    	Возврат QRCodeGenerator;
    	
    КонецФункции
    
    
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    	СК_ЖурналДействийПользователей.ЗарегистрироватьДействие(
    		"ВызовКоманды",
    		ПараметрыВыполненияКоманды.НавигационнаяСсылка,
    		ПараметрКоманды
    	);
    	
    
    	ТабДок = ПолучитьТабДок(ПараметрКоманды);
    	ТабДок.Показать();
    	
    КонецПроцедуры
    
    &НаСервере
    Функция ПолучитьТабДок(ДокСсылка)
    	
    	ТабДок = Новый ТабличныйДокумент;
    	ТабДок.АвтоМасштаб			= Истина;
    	ТабДок.ОриентацияСтраницы	= ОриентацияСтраницы.Ландшафт;
    	ТабДок.КлючПараметровПечати	= "ПАРАМЕТРЫ_ПЕЧАТИ_СК_ГР_РеестрУведомленныхПотребителей";
    	
    	QRCodeGenerator = КомпонентаФормированияQRКода();
    	
    	Макет = Документы.СК_ГР_РеестрУведомленныхПотребителей.ПолучитьМакет("Квитанция");
    	КоличествоКвитанций=0;
    	для каждого стр из  ДокСсылка цикл
    		КоличествоКвитанций =КоличествоКвитанций + 1; 
    		ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");	
    		
    		ОбластьШапка.Параметры.Адрес 			= стр.АдресПотребителя;
    		если ТипЗнч(стр.лс)=Тип("Строка") тогда
    			лицсч=стр.лс;			
    		иначе	
    			лицсч=стр.лс.код;
    		конецесли;	
    		ОбластьШапка.Параметры.ЛС= "9" + Строка(лицсч);
    		ОбластьШапка.Параметры.ФИО 	= стр.ФИО_потребителя;
    		ОбластьШапка.Параметры.СуммаРуб 	=Цел(стр.ПолнаяОплатаЗадолженостиСумма);
    		ОбластьШапка.Параметры.СуммаКоп 	= Прав(Формат(стр.ПолнаяОплатаЗадолженостиСумма,"ЧДЦ=2"),2);
    	
    		ИмяQRКода = "ШтрихКод";
    		
    		Попытка
    			УровеньКоррекции = 0;
    			Размер = 120;
    			ДанныеВШК = "ST00012|Name=ООО Сукацукая|PersonalAcc=234к234к34к|BankName=ПАО СБЕРБАНК|BIC=044525225|CorrespAcc=епукепк|Category=екпукеп|PayeeINN=4543е345е|Purpose=ОТКЛЮЧЕНИЕ/ПОДКЛЮЧЕНИЕ|PersAcc="+"9" + Строка(лицсч)+"|PayerAddress="+стр.АдресПотребителя+"|Sum="+формат(Цел(стр.ПолнаяОплатаЗадолженостиСумма*100),"ЧГ=")+"";
    			ДанныеQRКода = QRCodeGenerator.GenerateQRCode(ДанныеВШК, УровеньКоррекции, Размер);
    		Исключение  
    		сообщить(описаниеОшибки());	
    		КонецПопытки;
    		
    		Если ДанныеQRКода <> Неопределено Тогда 
    			ОбластьШапка.Рисунки[ИмяQRКода].Картинка = Новый Картинка(ДанныеQRКода);
    		КонецЕсли;
    		Если КоличествоКвитанций = 2 Тогда
    			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    			КоличествоКвитанций = 0;
    		КонецЕСли;
    	
    	
    	ТабДок.Вывести(ОбластьШапка);
    	конеццикла;
    	
    	ТабДок.ТолькоПросмотр = истина;
    	ТабДок.АвтоМасштаб = истина;
    	
    	
    	Возврат ТабДок;
    	
    КонецФункции

    3. В модуле менеджера документа разместить функцию:

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

    И всё. Теперь на форме документа и форме списка появится кнопка «Печать» с выпадающим списком.

    Чтиво за последнее время

    Перешел с FBReader на AlreaderPro, по причине того, что разработчики напрочь сломали работу с OPDS. Пока еще привыкаю, тоже есть нюансы но в целом хорошо.

    Взрослое:

    Алекс и Алекс 1…5 Афанасьев Семен. Сюжет: Будущее. В мозг одного подростка в результате не понятных событий попадает разум из параллельной вселенной. Ну и он там начинает прокачиваться за счёт этого. Еще первые две части читабельно, далее всё хуже и хуже. Читабельность 3/5

    Смотритель Университета. Малютин Антон. Сюжет: настоящее. Рядом с нами параллельно существую люди обладающие знаниями об иных мирах. Мало того, Иномиряне всех видов и форм вполне себе живут вместе с нами. Дочитать не смог: 3 из 5

    Детское:

    Домовладелец среди зомби. Денис Симонов. Сюжет: Обстановка на земле всё хуже и хуже, и скоро грядет ядерная война. Для тогого чтобы попытаться её предотвратить, люди из паралельной вселенной присылают систему и зомби. Главный герой: аутист, которому претит общение с другими людьми. Но хочешь выжить — начнешь сотрудничать с кем захочешь. В общем выживание. Оценка 4 из 5.

    SolidWorks 2023: Задание единиц измерения по умолчанию

    Для меня лично большим неудобством является то, что при создании новой детали, необходимо каждый раз выставлять руками единицы измерения ММГС (миллиметры). Недолго, но с десяток секунд каждый раз теряется.

    Для того чтобы единицы измерения всегда были такими по умолчанию, достаточно открыть шаблон детали из например C:\ProgramData\SolidWorks\SolidWorks 2012\templates\ , установить там единицы измерения и сохранить затем шаблон.

    И собственно всё. В следующий раз при создании детали, единицы измерения будут ММГТ

    Подпись при помощи ЭЦП файла из консоли Linux

    Посмотреть сертификаты:

    /opt/cprocsp/bin/amd64/certmgr -list

    Подписать файл:

    /opt/cprocsp/bin/amd64/cryptcp -signf t.log -dn "L=ВОЛОГДА ГОРОД"

    Ключ -signf означает, что будет создан файл с подписью t.log.sig

    в параметре -dn нужно перечислить критерии поиска первого подходящего сертификата в хранилище. Критерии смотрим в строке «Субьект» в списке сертификатов

    Установка туннеля с ГИС ЖКХ под Linux

    Задача установить защищенный туннель с ГИС ЖКХ под Astra Linux.

    Решение:

    Сначала скопируем с токена сертификат в формате pfx. Для этого можно воспользоваться утилитой P12FromGostCSP (Windows). Под Linux тоже как-то можно, но как- нужно гуглить. Мне предоставили уже готовый файл.

    Далее нужно установить крипто-про CSP с пакетом stunnel. Зайдя в крипто про, во вкладке «сертификаты» необходимо установить корневые сертификаты с https://my.dom.gosuslugi.ru/ и установить сертификат из файла psk.

    Для настройки конфигурационного файла stunnel, нужно из файла формата pfx получить файлы key и crt

    crt и pem:

    openssl pkcs12 -in file.pfx -clcerts -nokeys -out public.crt
    openssl x509 -in public.crt -out public.pem -outform PEM

    key:

    openssl pkcs12 -in SSK_obezl_3.pfx -nocerts -out private.key

    Лично у меня на этом месте выскочила ошибка:

    Enter Import Password:
    Error outputting keys and certificates
    124867336299712:error:06074079:digital envelope routines:EVP_PBE_CipherInit:unknown pbe algorithm:../crypto/evp/evp_pbe.c:95:TYPE=1.2.840.113549.1.12.1.80
    124867336299712:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:../crypto/pkcs12/p12_decr.c:41:
    124867336299712:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:../crypto/pkcs12/p12_decr.c:94:

    Которую я так и не победил, но тем не менее файл сформировался.

    Далее необходимо настроить конфигурационный файл туннеля. У меня он получился вида:

    pid=/home/vasya/stunnel/stunnel_cli.pid
    output=/home/vasya/stunnel/t.log
    socket = l:TCP_NODELAY=1
    socket = r:TCP_NODELAY=1
    debug = 7
    [https]
    client = yes
    accept=localhost:8080
    connect = api.dom.gosuslugi.ru:443
    cert=/home/vasya/stunnel/public.pem
    CAFile=/home/vasya/stunnel/CA-PPAK_2023.pem
    key=/home/vasya/stunnel/private.key
    verify=0
    

    Файл CA-PPAK_2023.pem взял из архива «ГИС ЖКХ_Интеграция v.14.8.0.2.zip» с документацией скачанного с сайта https://my.dom.gosuslugi.ru/

    И пробуем запустить туннель:

    opt/cprocsp/sbin/amd64/stunnel_thread /home/vasya/stunnel/stunnel_run.conf

    Логи будут писаться в файл t.log. Если всё хорошо, и в логах ошибок нет, то можно попробовать выполнить в браузере запрос вида:

    http://127.0.0.1:8080/ext-bus-debt-service/services/DebtAsync

    От ГИС ЖКХ придет что-то вроде:

    <env:Envelope xmlns:ns6="http://dom.gosuslugi.ru/schema/integration/individual-registry-base/" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/account-base/" xmlns:ns8="http://dom.gosuslugi.ru/schema/integration/metering-device-base/" xmlns:ns7="http://dom.gosuslugi.ru/schema/integration/nsi-base/" xmlns:ns13="http://dom.gosuslugi.ru/schema/integration/debts/" xmlns:ns9="http://dom.gosuslugi.ru/schema/integration/organizations-registry-base/" xmlns:ns12="http://dom.gosuslugi.ru/schema/integration/bills-base/" xmlns:ns11="http://dom.gosuslugi.ru/schema/integration/payments-base/" xmlns:ns10="http://dom.gosuslugi.ru/schema/integration/organizations-base/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns4="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
       <env:Body>
          <env:Fault>
             <faultcode>env:Server</faultcode>
             <faultstring>AUT011000: Нет активной ИС с данным сертификатом</faultstring>
             <detail>
                <ns4:Fault>
                   <ns4:ErrorCode>AUT011000</ns4:ErrorCode>
                   <ns4:ErrorMessage>Нет активной ИС с данным сертификатом</ns4:ErrorMessage>
                </ns4:Fault>
             </detail>
          </env:Fault>
       </env:Body>
    </env:Envelope>

    Тут всё просто — открываем заявку на сайте ГИС ЖКХ и добавляем сертификат.

    P,S. Отладку запросов далее можно делать в утилите soapui, Как? Тема отдельной будущей статьи, когда буду разбираться с запросами

    1 11 12 13 14 15 300