Как реализовать выгрузку данных и интеграцию 1С с ГИИС ДМДК для ломбардов

Программист Управленческий учет Финансы и профессиональные услуги
← На главную

Работа ломбардов с драгоценными металлами и камнями сегодня немыслима без тесного взаимодействия с Государственной интегрированной информационной системой в сфере контроля за оборотом драгоценных металлов и драгоценных камней (ГИИС ДМДК). Основная сложность заключается в том, что многие организации продолжают использовать платформу 1С 7.7 или ранние версии 1С 8.3, которые «из коробки» не обладают необходимыми механизмами для криптографической защиты данных и работы по протоколу MTLS. В этой статье мы подробно разберем, как наладить процесс выгрузки данных, какие инструменты использовать и на что обратить внимание при автоматизации учета в ломбарде.

Технические сложности интеграции и пути их решения

Проанализируем основные технические барьеры. Взаимодействие с ГИИС ДМДК требует не просто отправки файлов, а использования двустороннего TLS-соединения (MTLS). Это означает, что и сервер, и клиент (ваша 1С) должны обмениваться сертификатами безопасности. Для платформы 1С 7.7 это практически невыполнимая задача стандартными средствами. Выясним, какие существуют обходные пути:

  1. Использование внешних компонент: На официальном портале ГИИС ДМДК доступны компоненты, позволяющие шифровать подготовленные XML-файлы. Это решение универсально и подходит как для «семерки», так и для «восьмерки». Компонента берет на себя взаимодействие с КриптоПро CSP.
  2. Специализированное ПО «Аскорт»: Данный программный комплекс часто выступает в роли транспортного модуля. Ломбард выгружает данные из 1С в простом формате (XML или JSON), а «Аскорт» берет на себя подписание и доставку сообщений в ГИИС, возвращая обратно полученные УИНы (Уникальные идентификационные номера).
  3. Веб-сервисы и REST API: Для современных конфигураций 1С 8.3 оптимальным является прямое использование HTTP-запросов. Рассмотрим, как это реализовать через внешние библиотеки на .NET, которые могут выступать в роли прослойки (wrapper) для 1С.

Реализация обмена в 1С 7.7 через внешние объекты

Поскольку встроенный язык 1С 7.7 не поддерживает сложные веб-протоколы, мы вынуждены использовать COM-объекты. Разберем пример логики взаимодействия, где 1С формирует файл, а внешняя утилита его подписывает и отправляет. Для работы с запросами часто применяется объект WinHttp.WinHttpRequest.5.1.

Посмотрим на примерный алгоритм формирования запроса в коде:


// Пример инициализации HTTP-запроса в 1С 7.7
Попытка
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Open("POST", "https://dmdk.gov.ru/api/endpoint", 0);
    // Установка сертификата клиента для MTLS
    WinHttp.SetClientCertificate("LOCAL_MACHINE\My\ИмяСертификатаЛомбарда");
    WinHttp.Send(ТекстЗапросаXML);
Исключение
    Сообщить("Ошибка соединения: " + ОписаниеОшибки());
КонецПопытки;

Важный момент: Прямая отправка из 7.7 часто натыкается на несовместимость протоколов шифрования в старых версиях Windows. Поэтому мы рекомендуем использовать консольные утилиты от разработчиков крипто-программ (например, csptest из состава КриптоПро) для предварительного подписания файлов.

Специфика работы ломбарда: жизненный цикл изделия

Рассмотрим подробнее, какие именно события в жизни ювелирного изделия должны отражаться в системе ГИИС ДМДК. Это критически важно для корректной настройки выгрузки:

Работа с остатками и инвентаризация

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

Пример структуры данных для выгрузки остатков может выглядеть следующим образом:


// Структура формирования узла XML для изделия
ЗаписьXML.ЗаписатьНачалоЭлемента("JewelryItem");
ЗаписьXML.ЗаписатьАтрибут("Weight", Строка(Объект.Вес));
ЗаписьXML.ЗаписатьАтрибут("MetalCode", "AU"); // Золото
ЗаписьXML.ЗаписатьАтрибут("Hallmark", "585"); // Проба
ЗаписьXML.ЗаписатьКонецЭлемента();

После отправки такого пакета ГИИС возвращает идентификаторы, которые необходимо записать обратно в базу 1С в соответствующие реквизиты справочников Номенклатура или ЗалоговыеБилеты.

Печать маркировки и принтеры этикеток

Выясним, как обеспечить физическую маркировку. Получение УИН — это только половина дела. Согласно требованиям, ломбард обязан нанести DataMatrix код на ярлык изделия. Размер кода должен быть не менее 5х5 мм.

Для реализации печати в 1С 7.7 или 8.3 вам потребуется:

  1. Поддержка шрифта или компоненты: Для формирования DataMatrix в 1С 7.7 обычно используется внешняя DLL (например, Barcode.dll) или специализированные шрифты.
  2. Настройка принтера: Оптимально использовать термотрансферные принтеры этикеток с разрешением не менее 300 dpi, так как коды очень мелкие, и обычные принтеры (203 dpi) могут выдавать нечитаемый результат.
  3. Связь УИН и штрихкода: В печатной форме этикетки УИН должен быть преобразован в формат, понятный сканеру, чтобы при реализации изделия можно было мгновенно найти его в системе.

Готовые решения для 1С 8.3

Если вы планируете переход с устаревшей системы, разберем вариант использования типовых решений. Программный продукт 1С:Розница 8. Ювелирный магазин уже содержит встроенные механизмы интеграции с ГИИС ДМДК. В нем реализованы:

Важное предостережение: Регуляторные нормы (например, постановление Правительства №270) регулярно обновляются. Поэтому при использовании самописных решений на 1С 7.7 или 1С 8.3 программисту необходимо постоянно отслеживать изменения XSD-схем, публикуемых на сайте ГИИС ДМДК, и оперативно вносить правки в программный код выгрузки.

Подводя итог, можно сказать, что наиболее стабильным вариантом для ломбардов на старых платформах является связка «1С 7.7 + Промежуточный транспортный модуль (например, Аскорт)». Это позволяет избежать глубокой переработки ядра «семерки» и обеспечивает гарантированную доставку сообщений в соответствии со всеми требованиями криптографии.

← На главную