Общие сведения
ГИИС ДМДК - государственная интегрированная информационная система в сфере контроля за оборотом драгоценных металлов и драгоценных камней. Является единой информационной платформой для взаимодействия участников рынка ДМ и ДК.
С 1 сентября 2021 года Федеральная пробирная палата (ФПП) утрачивает полномочия по ведению реестра специального учета на "бумажных носителях" и соответственно начинает работать только через систему ГИИС ДМДК. C 2022 года многие операции по учету ДМ и ДК придется обязательно отражать в этой системе. У многих пользователей сейчас возникает вопрос как автоматизировать учет в этой системе, т.к. дублирование ввода информации увеличит время ввода и нагрузку на ответственных сотрудников. На примере одного из проектов ВЦ "Раздолье" рассмотрим, что требуется для настройки подключения к системе ГИИС ДМДК из "1С:Предприятия 8.3".
Перед началом работы по интеграции необходимо ознакомиться с инструкциями на сайте. Обязательно к прочтению "ОПИСАНИЕ ИНТЕГРАЦИОННОГО СЕРВИСА ГИИС ДМДК".
В первую очередь необходимо отметить, что для работы в ГИИС ДМДК есть два сервера:
- Рабочий https://dmdk.ru
- Тестовый https://dmdk.gosznak.ru
Сервера работают по защищенному соединению по ГОСТ. Поэтому для работы с ними потребуется соответствующий браузер с поддержкой ГОСТ. Например, Chromium-GOST, Яндекс браузер, Спутник. Как подключиться и настроить компьютер описано здесь.
Обмен сообщениями с серверами производится по протоколу SOAP (протокол обмена структурированными сообщениями в распределённой вычислительной среде). Это фактически xml структура завернутая в http запрос.
Для работы с интеграционным сервисом (ИС) ДМДК потребуется:
- Квалифицированный сертификат на пользователя организации сроком на 10 лет.
- Квалифицированный обезличенный сертификат на организацию.
- Криптопро + stunnel (Используется для обеспечения безопасных зашифрованных соединений для клиентов или серверов, которые не поддерживают TLS или SSL. Идет в комплекте с КриптоПро).
Содержимое файла stunnel.conf
Краткое описание наиболее часто используемых параметров конфигурацииoutput=c:\stunnel\stunnel.log
socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1
debug=7
[https]
client=yes
accept=127.0.0.1:1500
connect=195.209.130.19:443
cert=64 a0 7a 8a d3 8d 7e 83 76 9e fe 1f 14 52 23 3c 57 16 84 f9
verify=0
Опция | Описание |
---|---|
output | Путь к лог файлу |
socket | Опции для конфигурирования принимающих, локальных, удалённых сокетов |
debug | Уровень протоколирования ( для экономии места на диске рекомендуется устанавливать значение 1 ) |
client | Работа в режиме клиента |
accept | Адрес и порт для приёма незашифрованного трафика |
connect | Адрес и порт сервера, на который передаётся зашифрованный трафик |
cert |
Путь к файлу сертификата клиента или отпечаток сертификата |
verify |
Возможные варианты проверки сертификата удалённого сервера
|
pincode | PINкод контейнера |
- Загрузить и установить программу SOAP UI
- Создать новый проект SOAP
- Указать имя проекта и Initial WSDL: http://127.0.0.1:[порт]/ws/v1/exchange.wsdl (порт – это номер порта, который был указан в настройках Stunnel).
- После нажатия кнопки «Ok» в главном окне в разделе Projects отобразятся доступные методы (это говорит о том, что вы «достучались» до сервиса).
- Развернуть метод Health, выбрать Request1, в окне редактирования запроса удалить блок, связанный с подписью:
<ns:CallerSignature>
<!--You may enter ANY elements at this point-->
</ns:CallerSignature>
и указать любые значения в тегах <ns:TestMessage> </ns:TestMessage> и <ns:DataForTest> </ns:DataForTest>.
Внимание! Если в любом пакете указать тег <ns:TestMessage>?</ns:TestMessage> с произвольным содержимым то весь пакет будет считаться тестовым.
Предварительно начинаем настройку на тестовом сервере. После успешной отладки на тестовом сервере можно будет переходить на рабочий сервер. Даже просто попробовать работать в личном кабинете в режиме пользователя лучше на тестовом сервере, поскольку логика работы с сервисом не очевидна и есть определенные ограничения.
Настройка личного кабинета
Переходим на сайт тестового или рабочего сервера ДМДК.
- Регистрируем организацию, используя квалифицированный сертификат пользователя, указывая все реальные данные. Подробнее можно ознакомиться с видеоинструкциями.
- В личном кабинете (ЛК) на сайте формируем заявление о постановке на спецучет и если это тестовый сервер, то звоним в техподдержку, чтобы в тестовом сервере приняли заявление о постановке на спецучет для настройки интеграционной системы (ИС). После того как вас поставили на спецучет на тестовом сервере вам открывается полный функционал. На рабочем сервере постановкой на спецучет занимается территориальная ФПП.
- Для работы с ИС требуется загрузить в профилях обмена обезличенный сертификат на организацию (в котором нет информации о руководителе и ФИО). Через верхнее меню переходим в "Профили организации" далее на вкладку "Профили информационного обмена".
Библиотека стандартных подсистем
Для формирования пакета SOAP над подписываемым xml-узелом RequestData необходимо осуществить преобразования:
- http://www.w3.org/2001/10/xml-exc-c14n#
- urn://smev-gov-ru/xmldsig/transform. (описание)
Для формирования пакета SOAP будем использовать БСП 3.1.5
… для работы с государственными и муниципальными сервисами такими как, ГИИС ДМДК и аналогичными, предусмотрен алгоритм канонизации Единой системы межведомственного электронного взаимодействия (СМЭВ) urn://smev-gov-ru/xmldsig/transform
Из БСП потребуются следующие общие модуля "ЭлектроннаяПодписьСлужебный..." и внешняя компонента XMLDSig из макета справочника "СертификатыКлючейЭлектроннойПодписиИШифрования"
PS. в компоненте xmldsig на релизе 3.1.5.171 есть ошибка в методе канонизации, которая не позволяет подписать сообщение. Строки начинающиеся на числа потом через пробел написаны любые буквы трансформируются в строку без пробела.
Например: "1 аbc" превращается в "1аbc". Как вариант решения первый пробел заменяем на подчеркивание.
Подпись сообщения ЭЦП
Для того, чтобы сервера успешно приняли наши сообщения в них должна содержаться подпись XML документов (XML Digital Signature). Подписываемый xml узел RequestData. Чтобы подписать формируемый SOAP пакет (xml) необходимо совершить несколько шагов:
Подписание сообщения необходимо делать при помощи обезличенного сертификата!
Отправка в ГИИС ДМДК
Как правило на формирование одного действия в ГИИС ДМДК необходимо отправить две команды:
- Send…. возвращает идентификатор запроса
- Check…. содержит результат выполнения запроса.
Рассмотрим взаимодействие на примере команды регистрации партий в ГИИС ДМДК:
- SendBatch - Метод отправляет пакет партий для регистрации;
- CheckBatch - Метод возвращает результат обработки запроса на регистрацию партий;
Примечание. По команде Send… выдается id, который мы отправляем следующей командой check… и как правило сервера принимают этот id не сразу. Опытным путем выяснено что время регистрации партий команды send составляет до 20 сек. Поэтому архитектура работы с командами рекомендую следующую: Сначала отправляем все команды Send... а потом с попыткой не чаще чем в 10 сек. (и не более 2-3 запросов) отправляем check. При большем количестве запросов скорей всего проблемы со связью.
Опрашивание более часто вызовет перегрузку серверов ДМДК. Как правило аналогичные сервисы блокируют пользователей которые "флудят".
При вводе остатков при помощи SendBatch можно указать сразу всю номенклатуру в одном пакете, используя индексы.
Отправка сообщений реализуется при помощи HTTP запроса:
ЗаголовокHTTP = Новый Соответствие;
ЗаголовокHTTP.Вставить("Content-type", "text/xml; charset=UTF-8");
HTTPЗапрос = Новый HTTPЗапрос("/ws/v1/" + Метод, ЗаголовокHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрXML, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Попытка
Соединение = Новый HTTPСоединение(ПараметрыОбмена.АдресСервера, ПараметрыОбмена.Порт);
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Исключение
ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
рздОбменДаннымиГИИСДМДКСервер.ЗаписьЖурналаРегистрацииОшибка(
"Ошибка отправки POST-запроса к серверу ГИИС ДМДК" + Символы.ПС +
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВозвращаемоеЗначение.ТекстОшибки = ТекстОшибки;
Возврат ВозвращаемоеЗначение;
КонецПопытки;
Защищенное соединение из 1С по ГОСТ 34.11-2012 пока не поддерживается. Поэтому необходимо использовать stunnel, который поставляется вместе с программой КриптоПро. 1С обещает, что на релизе 8.3.21 реализуют поддержку защищенных соединений по ГОСТ.
Для отладки работы пакетов я рекомендую использовать программу SOAP UI.
Доработки в 1С
В этом разделе приведу часть доработок в "1С:ERP Управление предприятием" для реализации обмена с ГИИС ДМДК. Эти доработки будут актуальны и на других продуктах 1С.
Для ведения прослеживаемости необходимо включить посерийный учет номенклатуры. Серия будет означать партию. Для серий добавляем допреквизит “Партия ДМДК” (тип Справочник.ПартииДМДК), чтобы понимать какие серии выгружены в систему а какие нет, а также для дальнейшего учета прослеживаемости.
Партии
Справочник “Партии ДМДК” содержит основные сведения из системы ГИИС ДМДК
Передача на апробирование и клеймение в ФПП
Операция по апробированию и клеймению в системе 1С ЕРП выполняется при помощи документа "Передача сырья переработчику". Для формирования квитанции в ГИИС ДМДК в 1С не хватает информации о проведении условий работ. Для этого создадим соответствующий справочник и добавим его в табличную часть документа.
Выгрузка остатков
Под остатками в ГИИС ДМДК считается партия. Чтобы ввести остатки номенклатуры требуется просто создать партию с признаком "Ввод Остатков". В приложении 14 документа "Описание интеграционного сервиса" (в редакции 3.1.1 на момент написании статьи) написаны возможные значения реквизитов, которые можно указывать для партий при вводе остатков.
Мы сделали обработку, которая отображает остатки по номенклатуре по выбранному складу и по ним формируются партии для ГИИС ДМДК, которые затем будут прописываться в справочнике "Серии номенклатуры"
Для удобства и контроля обмена в обработке фиксируется лог обмена.