Каталог решений - Печать QR кодов для 1С:Бухгалтерия 2.0 для платежек Сбербанка

Печать QR кодов для 1С:Бухгалтерия 2.0 для платежек Сбербанка

Печать QR кодов для 1С:Бухгалтерия 2.0 для платежек Сбербанка

В наличии

Печать QR кодов оффлайн в 1С:Бухгалтерия 2.0 с помощью бесплатной ActiveX компоненты для платежек Сбербанка

Категория:

Описание

Понадобилось выводить на печатную форму QR-код в 1С:Бухгалтерии 2.0 для квитанций, чтобы люди могли в Сбербанке эти квитанции оплачивать.

В Сбербанке формат строки, закодированной в QR, взяли не с потолка, формат данной строки регламентируется «Стандартами финансовых операций» — ГОСТ Р 56042-2014. Почитать можно тут.

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

Гугление дало следующие варианты:

  1. с помощью компоненты «1С Печать Штрих-кодов» QR коды выводить нельзя, как и с помощью ActiveBarcode v3.5 — к тому же она не free 🙁
  2. есть вариант (подсказан на infostart) с помощью API товарищей из Google, но: во-первых, зачем себе создавать зависимость от интернета для печати штрих-кодов, а, во-вторых, некрасиво это как-то. Я уж молчу про то, что в один прекрасный момент Google может изменить свой API. Плюс нужно морочиться с сохранением картинки в файл, что мне тоже не нравится;
  3. есть платные варианты. Не хочу;
  4. есть предложения поднять свой веб-сервер. Веб-сервер, для печати штрихкодов? Неужели, настолько всё сложно?
  5. использовать библиотеку zint для генерации файла с QR кодом. Не совсем удобно, хотя как вариант;
  6. наконец-то, нашел Ocvita Barcode ActiveX!!! Справедливости рад, стоит сказать о том, что эта компонента создана на основе библиотеки zint, но ребята вне всякого сомнения молодцы!

Скачиваем, устанавливаем.

Вставляем в макет «Таблица» — «Рисунки» — «Вставить объект» — «Элемент управления» — «Ocvita Barcode». Называем этот объект именем Штрихкод.

Процедура Печать()
    Т = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Макет.Рисунки.Штрихкод.Объект.symbology = 58; // тип = QR
    Макет.Рисунки.Штрихкод.Объект.barcode = ВернутьСтрокуДляКодирования(); 
    Т.Вывести(Макет); 
    Т.ТолькоПросмотр = Истина; 
    Т.Показать();

КонецПроцедуры

// Опишем вспомогательную функцию для преобразования в UTF8

Функция UTF8(Ст)
    НоваяСт = "";
    Для i=1 по СтрДлина(Ст) Цикл
        Символ = Сред(Ст,i,1);
        КодСимвола = КодСимвола(Символ);
        Если (КодСимвола > 191) и (КодСимвола < 224) Тогда// А - Я
 
            НоваяСт = НоваяСт + Символ(208)+Символ(КодСимвола-48);
        ИначеЕсли (КодСимвола > 223) и (КодСимвола < 240) Тогда// а - п
 
            НоваяСт = НоваяСт + Символ(208)+Символ(КодСимвола-48);
        ИначеЕсли (КодСимвола > 239) и (КодСимвола < 256) Тогда// р - я
 
            НоваяСт = НоваяСт + Символ(209)+Символ(КодСимвола-112);
        ИначеЕсли (Символ = "ё") или (Символ = "Ё") Тогда
            НоваяСт = НоваяСт + Символ(208)+Символ(КодСимвола-39);
        ИначеЕсли (Символ = "№") Тогда
            НоваяСт = НоваяСт + Символ(226)+Символ(132)+Символ(150);
        Иначе
            НоваяСт = НоваяСт + Символ;
        КонецЕсли;
    КонецЦикла;
    Возврат НоваяСт;
КонецФункции

//Текст для кодирования выглядит примерно так

Функция ВернутьСтрокуДляКодирования()
	SFormat = "ST";
	CodeVersion = "0001";
	Символ_ = "|";
	
	CodePage = 2; //UTF
	
	Name = "Name=" + НашаФирма;
	PersonalAcc ="PersonalAcc=" + НашРасчетныйСчет;
	BankName = "BankName=" + НазваниеНашегоБанка;
	BIC = "BIC=" + БИК;
	CorrespAcc = "CorrespAcc=" + КорСчет;
	Sum = "Sum=" + СуммаВКопейках; //в копейках, т.е не 100,52, а 10052
	PayeeINN = "PayeeINN=" + НашИНН;
	LastName = "LastName=" + ФамилияПлательшика;
	FirstName = "FirstName=" + ИмяПлательщика;
	MiddleName = "MiddleName=" + ОтчествоПлательщика;
	payerAddress ="payerAddress=" + АдресПлательщика;
	PersAcc = "PersAcc="+ НомерДоговораСПлательщиком;
	PaymPeriod = "PaymPeriod="+РасчПериод // расчетный период вида ММГГ;
	
	Рез = SFormat + CodeVersion + CodePage + Символ_ +
		  Name + Символ_ +
		  PersonalAcc + Символ_ +
		  BankName + Символ_ +
		  BIC + Символ_ +
		  CorrespAcc + Символ_ +
		  Sum + Символ_ +
		  PayeeINN + Символ_ +
		  LastName +  Символ_ +
		  FirstName +  Символ_ +
		  MiddleName +  Символ_ +
		  payerAddress +  Символ_ +
		  PersAcc +  Символ_ +
		  PaymPeriod;

	
	Возврат UTF8(Рез);
КонецФункции

Кстати, можно будет проверить QR-код для квитанции Сбербанка — правильно или нет он сгенерирован — с помощью сайта http://sbqr.ru/validator/index.html

P.S.: Если кто-то знает способ проще — прошу в комменты!

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