Как сформировать QR-код для автоматического добавления информационной базы в мобильном клиенте 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При развертывании типового мобильного клиента «1С:Предприятие» (устанавливаемого из официальных магазинов приложений без индивидуальной сборки собственного мобильного приложения) системные администраторы и разработчики часто сталкиваются с необходимостью массового подключения смартфонов и планшетов сотрудников к рабочей информационной базе. Ручной ввод длинного веб-адреса публикации, имени базы и сопутствующих параметров запуска на экранной клавиатуре мобильного устройства неизбежно приводит к опечаткам, блокировкам учетных записей и повышенной нагрузке на службу технической поддержки.

В мобильном клиенте 1С предусмотрен штатный механизм считывания параметров подключения через камеру устройства при помощи кнопки добавления базы по QR-коду. Однако простая кодировка прямого интернет-адреса публикации (например, https://example.com/base/) не решает задачу: мобильный клиент распознает такую строку как произвольный текст и открывает стандартную карточку подключения с незаполненными полями. Чтобы приложение автоматически подставило наименование базы, адрес веб-сервера и параметры запуска, в QR-коде должен содержаться специализированный структурированный блок настроек.

Структура данных и синтаксис строки подключения для QR-кода

Формат описания информационной базы для мобильного клиента основан на стандартном синтаксисе списка баз платформы «1С:Предприятие» (аналогично файлу ibases.v8i). Для корректного парсинга строка, зашиваемая в QR-код, должна представлять собой многострочный текст со строго определенными параметрами:


[ИмяИнформационнойБазы]
Connect=ws="https://example.com/base/";
AdditionalParameters=?O=Normal&N=ИмяПользователя;

Каждая строка несет конкретное функциональное назначение:

Автоматическое сохранение базы и управление диалоговыми окнами

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

Если QR-код сканируется непосредственно из уже запущенного интерфейса мобильного клиента (через пункт меню «Добавить по QR-коду»), приложение ожидает именно блок параметров с секцией [ИмяБазы] и строкой Connect=ws="...";. Встраивание команд запуска операционной системы внутрь самого текстового блока структуры базы не требуется и может нарушить парсинг секции.

Программная генерация QR-кода на встроенном языке 1С

Для создания QR-кода на стороне центральной информационной базы (например, в рамках типовых конфигураций ERP, УТ или в самописной подсистеме администратора) используется встроенный язык 1С. Текст формируется с учетом корректного экранирования кавычек и разделителей строк.


// Формирование строки подключения для мобильного клиента
ТекстQR = Новый ТекстовыйДокумент;

// Первая строка: отображаемое имя
ТекстQR.ДобавитьСтроку("[" + СокрЛП(НаименованиеБазы) + "]");

// Вторая строка: адрес подключения с префиксом ws
АдресПодключения = "Connect=ws=""" + СокрЛП(ВебАдресБазы) + """;";
ТекстQR.ДобавитьСтроку(АдресПодключения);

// Третья строка: дополнительные параметры запуска
ДопПараметры = "?O=Normal";
Если ЗначениеЗаполнено(ЛогинПользователя) Тогда
    ДопПараметры = ДопПараметры + "&N=" + СокрЛП(ЛогинПользователя);
КонецЕсли;

ТекстQR.ДобавитьСтроку("AdditionalParameters=" + ДопПараметры + ";");

СтрокаДляКодирования = ТекстQR.ПолучитьТекст();

// Генерация графического изображения QR-кода
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("ТипКода", 16); // Тип 16 соответствует QR-коду в БСП
ПараметрыШтрихкода.Вставить("Текст", СтрокаДляКодирования);
ПараметрыШтрихкода.Вставить("УровеньКоррекцииПогрешностей", 1); // Уровень M

// Использование функции БСП для получения двоичных данных картинки
// ДвоичныеДанныеКартинки = ГенерацияШтрихкода.СформироватьШтрихкод(ПараметрыШтрихкода);

При формировании строки важно следить, чтобы между строками использовался стандартный перевод строки (CRLF или LF). Использование объекта ТекстовыйДокумент гарантирует корректную расстановку переводов строк независимо от платформы сервера.

Безопасность и правила передачи учетных данных

Технически параметр AdditionalParameters позволяет передавать имя пользователя и пароль (через связку параметров &N=Имя&P=Пароль или /N "Имя" /P "Пароль"). Однако передача пароля в открытом QR-коде несет серьезные риски информационной безопасности:

  1. Открытый вид данных: QR-код не является средством шифрования. Любой пользователь со стандартным приложением камеры может считать изображение с экрана или распечатанного листа и получить пароль в незашифрованном виде.
  2. Рекомендуемый подход к авторизации: в QR-коде следует передавать только имя пользователя (N) либо оставлять параметры авторизации пустыми. Ввод пароля должен выполняться пользователем однократно при первом входе, после чего мобильный клиент может сохранить данные аутентификации в защищенное системное хранилище устройства (Keychain / KeyStore).
  3. Требования к сетевому протоколу: мобильные операционные системы жестко блокируют работу по незащищенному протоколу HTTP. Публикация базы 1С должна быть обязательно переведена на HTTPS с установленным доверенным SSL/TLS-сертификатом от аккредитованного центра сертификации. Самоподписанные сертификаты без предварительной установки корневого профиля на устройство приведут к ошибке защищенного соединения.

Типичные ошибки при сканировании и методы их устранения

Если мобильный клиент ведет себя не так, как ожидается, рекомендуется выполнить последовательную проверку по следующим пунктам:

← На главную