Система быстрых платежей (оплата по QR-коду) в «1С:Рознице»
В программе «1С:Розница» поддерживается прием оплат и формирование возвратов через Систему быстрых платежей (СБП).
Система быстрых платежей Банка России — это система, позволяющая переводить средства по идентификатору (QR-коду), даже если стороны перевода имеют счета в разных кредитных организациях.
Теперь кассиры программы «1С:Розница» могут принимать оплату, которую покупатели оформили через мобильные банковские приложения.
Также имеется возможность оплаты по кассовому QR-коду. Нужно один раз создать и распечатать QR-код, а затем разместить это изображение в кассовой зоне. Код содержит всю необходимую информацию для оплаты через СБП. Покупателю достаточно считать код и сумма покупки появится в банковском приложении (подробнее см. здесь).
Преимущества данной системы платежей.
- Низкая комиссия по сравнению с классическим эквайрингом. Подробности можно узнать у банков, поддерживающих систему быстрых платежей через программы 1С.
- Скорость зачисления денежных средств. Деньги поступают на расчетный счет организации в течение 15 секунд с момента выполнения платежа.
- Не требуется дополнительное оборудование (эквайринговый терминал) для проведения платежа.
- Доступность и надежность – система работает без выходных и праздников. Подключиться можно в любом регионе РФ.
Пользоваться СБП просто.
- Покупатель подключил в мобильном приложении СБП и сообщил кассиру о желании оплатить покупку таким способом.
- При оформлении продажи в программе «1С:Розница» создается QR-код на оплату чека.
- Кассир выводит его на экран или распечатывает для покупателя.
- Покупатель сканирует QR-код через мобильное приложение своего банка и производит оплату.
- Деньги зачисляются на счет продавца, а кассир получает уведомление об оплате.
- Завершается процесс печатью фискального чека и передачей товаров покупателю.
Особенностью оплаты через СБП является отсутствие отмены операции. Если оплата выполнена, то возможен только возврат. Поэтому в спорных случаях (ошибка в платежном сервисе или прерывание связи) можно использовать команду Отлож. чек. В таком случае после исправления ошибки можно повторить операцию подтверждения оплаты. В случае необходимости при наличии дополнительных прав отложенный чек можно пробить и без подтверждения системы.
Настройка в «1С:Рознице»
Со стороны продавца перед началом использования сервиса интеграции с платежными системами необходимо выполнить несколько предварительных действий. А для упрощения процесса настройки предназначен специализированный помощник.
Первоначально в информационной базе нужно подключить интернет-поддержку (Администрирование – Интернет-поддержка и сервисы – Настройки Интернет-поддержки).

Затем в разделе Интеграция с платежными системами (Администрирование – Интернет-поддержка и сервисы) необходимо по ссылке Настройка интеграции перейти на форму для создания новой настройки интеграции с платежными системами.

С помощью одноименной кнопки нужно создать новую интеграцию, выбрать вариант Система быстрых платежей и указать банк – участник СБП.
С помощью кнопки Далее необходимо перейти к настройке торговой точки.

Для подключения к Системе быстрых платежей необходимо заключить договор с банком. Отправить заявку на подключение в банк можно с помощью одноименной ссылки в открывшейся форме.
После подключения полученные от банка параметры необходимо указать в следующих полях: Merchant Ld, Логин и Пароль.
Затем следует указать Организацию, Магазин и Вид оплаты. Эти значения будут использоваться при подборе торговой точки в момент оплаты и для определения параметров интеграции.

После подтверждения согласия с условиями пользовательского соглашения необходимо нажать кнопку Далее для перехода к сохранению настройки.
На этом процесс настройки завершен. Программа готова к принятию платежей с помощью СБП.
Оплата чека посредством СБП
После подключения платежных систем можно выбрать новый способ оплаты — QR-код (Shift+F8) в верхней панели кнопок РМК.

Аналогичная возможность предоставлена в документе Чек.

Кассир выбирает этот вариант и при открытии формы оплаты чека выполняется автоматический запрос в платежный сервис для получения QR-кода оплаты. Сообщение об этом появляется на форме оплаты.

В зависимости от используемого оборудования и схемы работы магазина QR-код может быть выведен на дисплей, напечатан на фискальном устройстве или принтере чеков. После визуализации QR-кода запускается фоновое задание на получение статуса оплаты.
С помощью ссылки Как покупателю провести оплату? можно открыть краткую инструкцию-подсказку для клиента.

С помощью кнопки Пречек QR-код можно дополнительно распечатать на подключенном устройстве.

В случае успешного завершения оплаты на бумажном чеке сохраняется информация об операции СБП в виде QR-кода.
По окончании времени ожидания статуса платежа выводится предупреждение о том, что оплата не подтверждена.
Например, если покупатель не успел оплатить покупку, то кассир может с помощью кнопки Повтор (F6) продлить время ожидания еще на минуту. Будет выполнен запуск операции получения статуса оплаты.
Также есть возможность отложить чек на время исправления ошибки оплаты (с помощью кнопки Отлож. чек). Например, если действительно произошел сбой или покупатель, обнаружив, что остатка денежных средств недостаточно, отошел пополнить счет, не задерживая очередь. После его возвращения можно открыть отложенный чек и продолжить оформление оплаты.

Но если у пользователя (например, старшего кассира) установлено дополнительное право Разрешить оплату / возврат без подтверждения от платежной системы, появляется возможность подтвердить оплату (на форме оплаты чека). Если он уверен, что оплата прошла (несмотря на предупреждение сервиса), то с помощью кнопки Подтв. платеж можно завершить оформление продажи.

В случаях, когда ни один из предложенных вариантов не подходит (например, у покупателя оказалось недостаточно денежных средств на счете и он решил оплатить наличными), можно просто закрыть окошко и продолжить оформление продажи подходящим способом.
Возврат от покупателя
Особенностью оплаты через СБП является отсутствие отмены операции. Если оплата выполнена, то возможен только возврат.
Для осуществления возврата необходимо стандартным образом сформировать чек возврата (в РМК кнопка Возврат). Кроме того, если чек оплаты есть в базе, то его можно подобрать при помощи QR-кода бумажного чека.
Если оплата осуществлялась с помощью платежной системы, возврат можно оформить только с её помощью. Остальные способы оплаты не будут активны.

В случае если возврат выполняется не на основании документа продажи «1С:Розницы», необходимо отсканировать идентификатор продажи из бумажного чека в поле QR-код оплаты.
Также можно указать платежную систему, в которую необходимо перечислить денежные средства, указав ее в поле Банк клиента. Это удобно в случае, когда расчетный счет клиента заблокирован и СБП подключена к другому банку.

И если платежная система-акцептор отличается от исходной, то после указания банка клиента будет выведена страница с подтверждением данных клиента. Перед подтверждением продавец должен сверить данные покупателя с заявлением на возврат денежных средств.

При подтверждении возврата будет напечатан фискальный чек. Но если в течение минуты подтверждение не поступило от сервиса, будет выведено предупреждение с пояснением. С помощью кнопки Повторить кассир может выполнить повторный запуск операции получения статуса возврата.
QR код в 1С
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google. Вот сайт, который работает с ним. После того, как вы вводите все параметры кода и нажимаете кнопку генерировать, получаем что-то вроде такой ссылки. По сути эта ссылка нам и нужна. Создав необходимый url можно скачать картинку, которая генерируется с помощью api.
И так в чем заключается подход:
1. Генерируем текст, который надо прописать в qr-коде.
2. Используя ссылку «http://chart.apis.google.com/chart?cht=qr&chs=230?230&chl=» +»Наш текст» скачиваем картинку.
3. Размещаем картинку в нашем табличном документе.
Код реализации:
Код 1C v 8.2 УП
&НаСервере
Функция hex(Знач Значение)
Значение=Число(Значение);
Если Значение Результат="0";
Иначе
Значение=Цел(Значение);
Результат="";
Пока Значение>0 Цикл
Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%16 + 1,1)+Результат;
Значение=Цел(Значение/16) ;
КонецЦикла;
КонецЕсли;
Если СтрДлина(Результат) < 2 Тогда
Результат = "0" + Результат;
КонецЕсли;
Возврат "%" + Результат;
КонецФункции
&НаСервере
Функция EncodeURL(URL)
Рез = "";
Для Сч = 1 По СтрДлина(URL) Цикл
ch = Сред(URL,Сч,1);
vch = КодСимвола(ch);
Если ("A" Рез = Рез + ch;
ИначеЕсли ("a" Рез = Рез + ch;
ИначеЕсли ("0" Рез = Рез + ch;
ИначеЕсли (ch = " ") ИЛИ ( ch = "+") Тогда // space
Рез = Рез + "+";
ИначеЕсли (ch = "-" ) ИЛИ ( ch = "_") // unreserved
ИЛИ (ch = ".") ИЛИ (ch = "!")
ИЛИ (ch = "~") ИЛИ (ch = "*")
ИЛИ (ch = "") ИЛИ (ch = "(")
ИЛИ (ch = ")") Тогда
Рез = Рез + ch;
ИначеЕсли (vch Рез = Рез + hex(vch);
ИначеЕсли (vch Рез = Рез + hex(192 + Цел(vch / 64));
Рез = Рез + hex(128 + (vch % 64));
Иначе // 0x7FF < ch Рез = Рез + hex(224 + Цел(vch / 4096));
Рез = Рез + hex(128 + (Цел(vch / 64) % 64));
Рез = Рез + hex(128 + (vch % 64));
КонецЕсли;
КонецЦикла;
Возврат Рез;
КонецФункции // ()
&НаСервере
Функция СохранитьДвоичныйБуферВФайл(Буфер, ИмяФайла) Экспорт
Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1; //Бинарный
Поток.Mode = 3;
Поток.Open();
Поток.Write(Буфер);
Поток.SaveToFile(ИмяФайла);
Поток.Close();
КонецФункции
&НаСервере
Функция НапечататьКодСервер(ЗаказСсылка)
ТабДок = Новый ТабличныйДокумент;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
АдресНачало = "http://chart.apis.google.com/chart?cht=qr&chs=230x230&chl=";
АдресКонец = ЗаказСсылка.Номер + Символы.ПС + Заказссылка.Контрагент.Наименование;
АдресКонец = СтрЗаменить(АдресКонец, " ", "+");
АдресКонец = EncodeURL(АдресКонец);
Соединение = ПолучитьCOMОбъект("","Microsoft.XMLHTTP");
Соединение.open("GET", АдресНачало + АдресКонец,0,,);
Соединение.send(null);
СохранитьДвоичныйБуферВФайл(Соединение.responseBody, ИмяВременногоФайла);
//Печать
Макет = Документы.ЗаказПокупателя.ПолучитьМакет("МакетПечатиКода");
Область = Макет.ПолучитьОбласть("Код");
Область.Рисунки.КодРисунок.Картинка = Новый Картинка(ИмяВременногоФайла);
ТабДок.Вывести(Область);
Возврат ТабДок;
КонецФункции
Как оплатить через СБП по кассовому QR-коду в 1С:Рознице и 1С:УНФ

В программах 1С:Розница и 1С:УНФ появилась возможность оплаты по кассовому QR-коду. Создаем и распечатываем QR-код. Размещаем распечатанное изображение в кассовой зоне. Код содержит всю необходимую информацию для оплаты покупателем через СБП. Покупателю достаточно сканировать код и сумма покупки появится в банковском приложении. Такая технология позволяет малому бизнесу один раз создать и распечатать код. Не требуется при каждой покупке выводить ссылку в виде QR-кода на экран своего компьютера, дисплей покупателя или печатать на пречеке.

Что такое кассовый QR-код
Кассовый QR-код представляет собой сочетание динамического и статического QR-кода.
В один момент времени код имеет только один активный заказ.
Для приема оплат распечатываем QR-код и размещаем на кассе.
При создании чека в программе настраиваем ссылку на оплату заказа конкретного покупателя.
Платеж будет осуществляться через Систему быстрых платежей (СБП).
В статье рассмотрим, как настроить кассовый QR-код для приема оплат в 1С:Рознице 3.0 и 1С:Управление нашей фирмой.
Для настройки получения оплаты по кассовому QR-коду необходимо подключить Систему быстрых платежей (СБП). Узнать, как подключить СБП в 1С:Рознице и 1С:УНФ можно в статье на сайте ИТС «Как работать с СБП» (доступна по договору).
Создание и печать кассового QR-кода
Кассовый QR-код создается и распечатывается для каждой кассы ККМ.
Для этого открываем карточку кассы в справочнике «Кассы ККМ» и устанавливаем флажок «Использовать кассовый QR-код». Выбираем способ оплаты из настроек подключения СБП. По кнопке «Сформировать QR-код» создаем для конкретной кассы свой код для приема оплат. По кнопке «Печать QR-кода» распечатываем код.
Распечатанный QR-код размещаем рядом с кассой для свободного сканирования покупателями.

Прием оплаты по QR-коду
После настройки подключения к СБП и печати кассового QR-кода появляется кнопка «СБП» для оплаты.
Оформить продажу и прием оплаты можно на рабочем месте кассира.

Также можно оформить чек без использования РМК, создав Чек ККМ.

После нажатия на кнопку «СБП» кассир сообщает покупателю, что можно оплачивать. В этот момент времени QR-код содержит оплату товара конкретного покупателя. После сканирования QR-кода в приложении своего банка покупатель видит сумму покупки и ему достаточно просто оплатить.
Если покупатель не успел оплатить, то можно закрыть окно оплаты и сформировать новое. Для оплаченного чека доступна возможность «Отложить чек».
Использование NFC при оплате СБП для розничных продаж
Для повышения удобства оплаты на кассовом QR-коде можно разместить NFC метку.
Покупатель прикладывает смартфон к запрограммированной метке, которая передает платежную ссылку приложение СБПей с помощью NFC-технологии, и оплачивает покупку.
NFC-метка также, как и кассовый QR-код, позволяет экономить кассовую ленту, не требует печати QR-кода при каждой оплате СБП или вывода его на дисплей, сокращает время на оплату по сравнению с оплатой по QR-коду.
Дополнительным преимуществом NFC-метки является низкая стоимость.
В статье рассказали о новой возможности приема платежей по СБП с помощью кассового QR-кода и NFC-метки. Такой QR-код можно разместить один раз. Клиенты, сканируя его, оплачивают товары и услуги без ввода суммы своей покупки перед оплатой. А бизнесу не нужно для каждого покупателя выводить ссылку в виде QR-кода на экран своего компьютера, дисплей покупателя или печатать на пречеке.
Прием оплаты по кассовому QR-коду уже сейчас можно подключить через платежный агрегатор «Пэймастер». Далее список банков с поддержкой кассовых QR-кодов будет расширяться. Новая возможность удобна в использовании, позволяет сэкономить на эквайринговом оборудовании и бумаге.
Будет интересно:
Нужно подобрать программу 1С, оборудование для торговли или готовое решение? Проконсультироваться по автоматизации бизнеса?
Отправьте заявку на консультацию и партнёр 1С из вашего региона вам поможет.
Консультация полезная и бесплатная.
1С 8.3 Штрих-код (barcode), QRCod — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С

Штрих-код и QRCod в 1С 8.3 используется для печати ценников, маркировки товаров/материалов для учета и контроля, упрощения инвентаризации основных средств, идентификация прочих ТМЦ с помощью этикеток. В последних релизах различных типовых конфигураций штрих-код формируется с помощью общего макета метаданных КомпонентаПечатиШтрихкодов, а также вспомогательных функций и процедур: ПодключитьВнешнююКомпонентуПечатиШтрихкода, ОпределитьТипШтрихкода, ПолучитьКартинкуШтрихкода и т.п.. Скачать Пример печати QR-кода. epf
Файл установки компоненты доступен по подписке на сайте ИТС. При возникновении ошибки 1CBarCode: «Ошибка внешней компоненты» некорректное значение свойства «Шрифт» — необходимо обновить 1CBarCode.exe до последней версии. Работа с QR-кодом осуществляется с помощью функций в модуле объекта ПолучитьГенераторQRкода() и ПолучитьQRкод(). Типовая печать QR-кода в 1С 8.3 реализована на уровне Библиотеки стандартных подсистем, которая соответствует национальному стандарту штрихкодирования платежных реквизитов и доступен при подписке на ИТС.
Тех.характеристика QR-кода:
Самый маленький (версия №1 ) размер = 21×21 пиксель (без учёта полей)
. QR-код следующей версии всегда больше предыдущего
на 4 модуля( по горизонтали и по вертикали).
Самый большой (версия №40) размер = 177×177 пикселей (без учёта полей)
Важно! Для считывания некоторыми ТСД символы должны быть латинские
Оглавление:

Подключение внешней компоненты печати штрих-кода в 1С 8.3:
&НаКлиенте
Функция ПодключениеВнешнейКомпонентыПечатиШтрихКода ()
Подключено = ПодключитьВнешнююКомпоненту ( «ОбщийМакет.КомпонентаПечатиШтрихкодов» , «КартинкаШтрихкода» , ТипВнешнейКомпоненты . Native );
Если Подключено Тогда // Создание объекта внешней компоненты
Компонента_Barcode = Новый( «AddIn.КартинкаШтрихкода.Barcode» );
Иначе
Возврат Неопределено;
КонецЕсли;
Если НЕ Компонента_Barcode . ГрафикаУстановлена Тогда
// Картинка не может быть сформирована
Возврат Неопределено;
Иначе
// Установка параметров компоненты
Если Компонента_Barcode . НайтиШрифт ( «Tahoma» ) Тогда
Компонента_Barcode . Шрифт = «Tahoma» ; // Выбран шрифт для формирования картинки
Иначе
// Обход доступных компоненте шрифтов
Для Сч = 0 По Компонента_Barcode . КоличествоШрифтов — 1 Цикл
ТекущийШрифтШК = Компонента_Barcode . ШрифтПоИндексу ( Сч );
Если ТекущийШрифтШК <> Неопределено Тогда
Компонента_Barcode . Шрифт = ТекущийШрифтШК ; // Выбран шрифт для формирования картинки
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Компонента_Barcode . РазмерШрифта = 14 ;
Возврат Компонента_Barcode ;
КонецЕсли;
Определить тип штрих кода в 1С 8.3:
&НаКлиенте
Функция ОпределитьТипШтрихКода ( текШтрихКод )
Тип_ШтрихКода = «» ;
Длина_ШтрихКода = СтрДлина ( текШтрихКод );
СуммаШтрихКода = 0 ;
Если Длина_ШтрихКода = 0 Тогда
Возврат Тип_ШтрихКода ;
КонецЕсли;
Если Длина_ШтрихКода = 14 Тогда // ITF14
КоэффициентШК = 1 ;
Для Сч = 1 По 13 Цикл
// таблица символов 1С доступна тут: https://koder.by/tablica_simvolov_1s.php
ВремКодСимвола = КодСимвола ( текШтрихКод , Сч );
Если ВремКодСимвола < 48 Или ВремКодСимвола >57 Тогда
Прервать;
КонецЕсли;
СуммаШтрихКода = СуммаШтрихКода + КоэффициентШК * ( ВремКодСимвола — 48 );
КоэффициентШК = 4 — КоэффициентШК ;
КонецЦикла;
СуммаШтрихКода = ( 10 — СуммаШтрихКода % 10 ) % 10 ;
Если КодСимвола ( текШтрихКод , 14 ) = СуммаШтрихКода + 48 Тогда
Тип_ШтрихКода = «ITF14» ;
КонецЕсли;
ИначеЕсли Длина_ШтрихКода = 13 Тогда // EAN13
EAN 13 _Булево = Истина;
КоэффициентШК = 1 ;
Для Сч = 1 По 12 Цикл
ВремКодСимвола = КодСимвола ( текШтрихКод , Сч );
Если ВремКодСимвола < 48 Или ВремКодСимвола >57 Тогда
EAN 13 _Булево = Ложь;
Прервать;
КонецЕсли;
СуммаШтрихКода = СуммаШтрихКода + КоэффициентШК * ( ВремКодСимвола — 48 );
КоэффициентШК = 4 — КоэффициентШК ;
КонецЦикла;
СуммаШтрихКода = ( 10 — СуммаШтрихКода % 10 ) % 10 ;
ПроверочныйСимвол = Символ ( СуммаШтрихКода + 48 );
Если EAN 13 _Булево И ПроверочныйСимвол = Прав ( текШтрихКод , 1 ) Тогда
Тип_ШтрихКода = «EAN13» ;
КонецЕсли;
ИначеЕсли Длина_ШтрихКода = 8 Тогда // EAN8
EAN 8 _Булево = Истина;
КоэффициентШК = 3 ;
Для Сч = 1 По 7 Цикл
ВремКодСимвола = КодСимвола ( текШтрихКод , Сч );
Если ВремКодСимвола < 48 Или ВремКодСимвола >57 Тогда
EAN 8 _Булево = Ложь;
Прервать;
КонецЕсли;
СуммаШтрихКода = СуммаШтрихКода + КоэффициентШК * ( ВремКодСимвола — 48 );
КоэффициентШК = 4 — КоэффициентШК ;
КонецЦикла;
СуммаШтрихКода = ( 10 — СуммаШтрихКода % 10 ) % 10 ;
Если EAN 8 _Булево И ( КодСимвола ( текШтрихКод , 8 ) = СуммаШтрихКода + 48 ) Тогда
Тип_ШтрихКода = «EAN8» ;
КонецЕсли;
Если Тип_ШтрихКода = «» Тогда // CODE39
CODE 39 _Булево = Истина;
Для Сч = 1 По Длина_ШтрихКода Цикл
ВремКодСимвола = КодСимвола ( текШтрихКод , Сч );
Если ( ВремКодСимвола <> 32 )
И ( ВремКодСимвола < 36 Или ВремКодСимвола >37 )
И ( ВремКодСимвола <> 43 )
И ( ВремКодСимвола < 45 Или ВремКодСимвола >57 )
И ( ВремКодСимвола < 65 Или ВремКодСимвола >90 ) Тогда
CODE 39 _Булево = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если CODE 39 _Булево Тогда
Тип_ШтрихКода = «CODE39» ;
КонецЕсли
Если Тип_ШтрихКода = «» Тогда // CODE128
// CODE128 символы ASCII от 0 до 127
// (цифры от 0 до 9, буквы от A до Z и от a до z) и специальные символы
CODE 128 _Булево = Истина;
Для Сч = 1 По Длина_ШтрихКода Цикл
ВремКодСимвола = КодСимвола ( текШтрихКод , Сч );
Если ( ВремКодСимвола > 127 ) Тогда
CODE 128 _Булево = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если CODE 128 _Булево Тогда
Тип_ШтрихКода = «CODE128» ;
КонецЕсли
Если Тип_ШтрихКода = «CODE128» Тогда // EAN128
// В коде EAN128 регламентирован словарь CODE128
// но регламентированы группы кодов
Если КодСимвола ( текШтрихКод , 1 ) = 40 Тогда
Тип_ШтрихКода = «EAN128» ;
КонецЕсли;
КонецЕсли;
Справочно: Тип кода параметра штрих кода в 1С 8.3:
Получить картинку штрих-кода в 1С 8.3:
&НаКлиенте
Функция ПолучитьКартинкуШтрихкода ( ПараметрыШК )
Если КомпонентаШК = Неопределено Тогда
ВызватьИсключение НСтр ( «ru = ‘Ошибка подключения внешней компоненты печати штрихкода.'» );
КонецЕсли;
// Размер формируемой картинки
КомпонентаШК . Ширина = Окр ( ПараметрыШК . Ширина );
КомпонентаШК . Высота = Окр ( ПараметрыШК . Высота );
КомпонентаШК . АвтоТип = Ложь;
Если ПараметрыШК . ТипКода = 99 Тогда
ТипШК = ОпределитьТипШтрихкода ( ПараметрыШК . Штрихкод );
Если ТипШК = «EAN8» Тогда
КомпонентаШК . ТипКода = 0 ;
ИначеЕсли ТипШК = «EAN13» Тогда
КомпонентаШК . ТипКода = 1 ;
// Если код содержит контрольный символ, обязательно указываем.
КомпонентаШК . СодержитКС = СтрДлина ( ПараметрыШК . Штрихкод ) = 13 ;
ИначеЕсли ТипШК = «EAN128» Тогда
КомпонентаШК . ТипКода = 2 ;
ИначеЕсли ТипШК = «CODE39» Тогда
КомпонентаШК . ТипКода = 3 ;
ИначеЕсли ТипШК = «CODE128» Тогда
КомпонентаШК . ТипКода = 4 ;
ИначеЕсли ТипШК = «ITF14» Тогда
КомпонентаШК . ТипКода = 11 ;
ИначеЕсли ТипШК = «QR» Тогда
КомпонентаШК . ТипКода = 16 ;
ИначеЕсли ТипШК = «EAN13Addon2» Тогда
КомпонентаШК . ТипКода = 14 ;
ИначеЕсли ТипШК = «EAN13Addon5» Тогда
КомпонентаШК . ТипКода = 15 ;
ИначеЕсли ТипШК = «QR» Тогда
КомпонентаШК . ТипКода = 16 ;
ИначеЕсли ТипШК = «GS1DatabarExtendedStacked» Тогда
КомпонентаШК . ТипКода = 17 ;
ИначеЕсли ТипШК = «DataMatrixASCII» Тогда
КомпонентаШК . ТипКода = 18 ;
ИначеЕсли ТипШК = «DataMatrixBase256» Тогда
КомпонентаШК . ТипКода = 19 ;
ИначеЕсли ТипШК = «DataMatrixText» Тогда
КомпонентаШК . ТипКода = 20 ;
ИначеЕсли ТипШК = «DataMatrixC40» Тогда
КомпонентаШК . ТипКода = 21 ;
ИначеЕсли ТипШК = «DataMatrixX12» Тогда
КомпонентаШК . ТипКода = 22 ;
ИначеЕсли ТипШК = «DataMatrixEdifact» Тогда
КомпонентаШК . ТипКода = 23 ;
Иначе
КомпонентаШК . АвтоТип = Истина;
КонецЕсли;
Иначе
КомпонентаШК . ТипКода = ПараметрыШК . ТипКода ;
КомпонентаШК . АвтоТип = Ложь;
КонецЕсли;
Если ПараметрыШК . Свойство ( «ПрозрачныйФон» ) Тогда
КомпонентаШК . ПрозрачныйФон = ПараметрыШК . ПрозрачныйФон ;
КонецЕсли;
КомпонентаШК . ОтображатьТекст = ПараметрыШК . ОтображатьТекст ;
// Картинка штрихкода
КомпонентаШК . ЗначениеКода = ПараметрыШК . Штрихкод ;
// Угол поворота штрихкода
КомпонентаШК . УголПоворота = ?( ПараметрыШК . Свойство ( «УголПоворота» ), ПараметрыШК . УголПоворота , 0 );
// Уровень коррекции QR кода (L=0, M=1, Q=2, H=3)
КомпонентаШК . УровеньКоррекцииQR = ?( ПараметрыШК . Свойство ( «УровеньКоррекцииQR» ), ПараметрыШК . УровеньКоррекцииQR , 1 );
// Если установленная нами ширина меньше минимально допустимой для этого штрихкода
Если КомпонентаШК . Ширина КомпонентаШК . МинимальнаяШиринаКода Тогда
КомпонентаШК . Ширина = КомпонентаШК . МинимальнаяШиринаКода ;
КонецЕсли;
// Если установленная нами высота меньше минимально допустимой для этого штрихкода
Если КомпонентаШК . Высота КомпонентаШК . МинимальнаяВысотаКода Тогда
КомпонентаШК . Высота = КомпонентаШК . МинимальнаяВысотаКода ;
КонецЕсли;
Если ПараметрыШК . Свойство ( «РазмерШрифта» ) И ( ПараметрыШК . РазмерШрифта > 0 )
И ( ПараметрыШК . ОтображатьТекст ) И ( КомпонентаШК . РазмерШрифта <> ПараметрыШК . РазмерШрифта ) Тогда
КомпонентаШК . РазмерШрифта = ПараметрыШК . РазмерШрифта ;
КонецЕсли;
// Формирование картинки
ДвоичныеДанныеКартинки = КомпонентаШК . ПолучитьШтрихкод ();
Если ДвоичныеДанныеКартинки <> Неопределено Тогда
// Формируем из двоичных данных.
Возврат Новый Картинка ( ДвоичныеДанныеКартинки );
КонецЕсли;