Интеграция 1С 7.7 и МДЛП Маркировка
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Присоединяюсь к вопросу.
Интересует интеграция с оптовым складом.
Каким способом можно выгрузить из 1С торговли xml для передачи в МДЛП при поступлении и реализации ЛП?
Интересует интеграция с оптовым складом.
Каким способом можно выгрузить из 1С торговли xml для передачи в МДЛП при поступлении и реализации ЛП?
Каким образом можно связываться из 1с 7.7 с мдлп, хоть какой то пример, не понятно... с чеками всё понятно, а вот как передовать из 1с инфо о приходе и перемещении или расходной накладной? Есть кто то кому что то хоть понятно? Поделитесь!!!
Начал этой темой заниматься.
Всё что в этой инструкции:
https://честныйзнак.рф/upload/iblock/f7a/Kratkaya-instruktsiya-po-bystromu-startu-dlya-izucheniya-API.pdf
успешно запрограммировал на 7.7. Дальше надо разбираться с xml схемами. Пока читаю документацию.
Всё что в этой инструкции:
https://честныйзнак.рф/upload/iblock/f7a/Kratkaya-instruktsiya-po-bystromu-startu-dlya-izucheniya-API.pdf
успешно запрограммировал на 7.7. Дальше надо разбираться с xml схемами. Пока читаю документацию.
Начал этой темой заниматься.
Всё что в инструкции "Краткая инструкция по быстрому старту" из раздела "Разработчикам" успешно запрограммировал на 7.7.
Дальше надо разбираться с xml схемами. Пока читаю документацию. Готов скооперироваться. Пишите
Всё что в инструкции "Краткая инструкция по быстрому старту" из раздела "Разработчикам" успешно запрограммировал на 7.7.
Дальше надо разбираться с xml схемами. Пока читаю документацию. Готов скооперироваться. Пишите
Прикрепленные файлы:
Kratkaya-instruktsiya-po-bystromu-startu-dlya-izucheniya-API.pdf
А можно пример кода для авторизации, я сделал так:
Соответственно в стр сам запрос JSON
Возвращается ошибка 401
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("POST", "http://api.mdlp.crpt.ru/api/v1/auth HTTP/1.1",0);
WinHttp.Option(2, "utf-8");
WinHttp.setRequestHeader("Content-type", "application/json; charset=utf-8");
WinHttp.SetRequestHeader("Cache-Control", "no-cache");
Стрим = СоздатьОбъект("ADODB.Stream");
Стрим.Type=2;
Стрим.Mode = 3;
Стрим.charset="windows-1251";
Стрим.open();
Стрим.loadFromFile("D:\777\01234.txt");
Стрим.charset="utf-8";
Стр=Лев(Стрим.ReadText(),10000);
Сообщить(Стр);
Попытка
WinHttp.Send(Стр);
лпОтвет = WinHttp.ResponseText();
тк=СоздатьОбъект("Текст");
тк.ДобавитьСтроку(лпответ);
тк.Записать("D:\777\123.html");
Статус = СокрЛП(WinHttp.Status);
Описание = СокрЛП(WinHttp.StatusText);
Исключение
Статус = "0";
Описание = СокрЛП(ОписаниеОшибки());
КонецПопытки;
Сообщить(Статус);
Сообщить(Описание);
WinHttp.Open("POST", "http://api.mdlp.crpt.ru/api/v1/auth HTTP/1.1", 0);
WinHttp.Send(Стр);
Стр = WinHttp.ResponseText();
Текст = СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(Стр );
Текст.Записать("D:\777\0123.html");
КонецПроцедуры
ПоказатьСоответственно в стр сам запрос JSON
Возвращается ошибка 401
401 - требуется авторизация.
А что в 01234.txt?
Сначала надо зарегистрироваться на тестовом стенде и экспериментировать с ним. Потом писать письмо, чтобы перевели на песочницу, а уже потом на промышленный стенд.
api.stage.mdlp.crpt.ru - Тестовый стенд API
api.sb.mdlp.crpt.ru - Тестовая система МДЛП ("Песочница")
api.mdlp.crpt.ru - Промышленная система.
Если ты в самом начале, то я думаю не стоит сразу пытаться авторизоваться на промышленном системе, тем более там для доступа нужна электронная подпись.
А что в 01234.txt?
Сначала надо зарегистрироваться на тестовом стенде и экспериментировать с ним. Потом писать письмо, чтобы перевели на песочницу, а уже потом на промышленный стенд.
api.stage.mdlp.crpt.ru - Тестовый стенд API
api.sb.mdlp.crpt.ru - Тестовая система МДЛП ("Песочница")
api.mdlp.crpt.ru - Промышленная система.
Если ты в самом начале, то я думаю не стоит сразу пытаться авторизоваться на промышленном системе, тем более там для доступа нужна электронная подпись.
Зарегился и в песочнице и в промышленном стенде, просто через сайт, а потом вот хочу подсоедениться использую код выше, 01234.txt имеет вид:
{
"client_secret": "40c1c2f0-1538-4fdb-a876-ec5eb85b9c5a",
"client_id": "a9a88262-c690-4606-8882-6tgbee786a3dd",
"user_id": "5504c6fa79fb874c42dfae85a066cca41d77dd3f8",
"auth_type": "SIGNED_CODE"
}
{
"client_secret": "40c1c2f0-1538-4fdb-a876-ec5eb85b9c5a",
"client_id": "a9a88262-c690-4606-8882-6tgbee786a3dd",
"user_id": "5504c6fa79fb874c42dfae85a066cca41d77dd3f8",
"auth_type": "SIGNED_CODE"
}
При регистрации на тестовом стенде необходимо указать в том числе ip-адрес, с которого будешь работать, поэтому скорее всего обычной регистрации на сайте для работы через API не достаточно.
Проверять код на ошибки времени нет, но в целом похоже на то как сделано у меня.
Проверять код на ошибки времени нет, но в целом похоже на то как сделано у меня.
Функция ПолучитьКодАутентификации(ОрганизацияМДЛП,ПользовательМДЛП,СтрОшибка="")
Url = "https://"+СокрЛП(АдресСервисаМДЛП)+ПрефиксВерсии+"auth";
Если ОрганизацияМДЛП.ТипАутентификации <> Перечисление.ТипыАутентификацииМДЛП.ЭП Тогда
ТипАутентификации="PASSWORD";
Иначе
ТипАутентификации="SIGNED_CODE";
КонецЕсли;
сзJSONЗапрос = СоздатьОбъект("СписокЗначений");
сзJSONЗапрос.Установить("client_id" ,ОрганизацияМДЛП.ИдентификаторКлиента);
сзJSONЗапрос.Установить("client_secret",ОрганизацияМДЛП.СекретКлиента);
Если ОрганизацияМДЛП.ТипАутентификации <> Перечисление.ТипыАутентификацииМДЛП.ЭП Тогда
Если ПользовательМДЛП.Выбран() = 0 Тогда
СтрОшибка = "Не указан пользователь МДЛП";
Возврат "";
Иначе
сзJSONЗапрос.Установить("user_id",ПользовательМДЛП.ИдентификаторПользователя);
КонецЕсли;
Иначе
сзJSONЗапрос.Установить("user_id",ПользовательМДЛП.Сертификат.Отпечаток);
КонецЕсли;
сзJSONЗапрос.Установить("auth_type" ,ТипАутентификации);
сзОтвет = ВыполнитьЗапрос("POST",Url,сзJSONЗапрос,,,СтрОшибка);
Если ПустоеЗначение(сзОтвет) = 1 Тогда
Возврат "";
КонецЕсли;
Возврат сзОтвет.Получить("code");
КонецФункции // ПолучитьКодАутентификации()
ПоказатьФункция ВыполнитьЗапрос(ТипЗапроса="POST",Url,сзJSONЗапрос,КлючСессии="",сзЗаголовки="",СтрОшибка="")
ЗапросJSON = ЗначениеВJSON(сзJSONЗапрос);
//ЗапросJSON = глUTF8(ЗапросJSON);
wHTTP.Open(ТипЗапроса,Url,1);
wHTTP.SetRequestHeader ("Content-Type", "application/json;charset=UTF-8");
Если ПустоеЗначение(КлючСессии) = 0 Тогда
wHTTP.SetRequestHeader ("Authorization", "token "+КлючСессии);
КонецЕсли;
Если ПустоеЗначение(сзЗаголовки) = 0 Тогда
СчЦикла = 0;
Для СчЦикла = 1 По сзЗаголовки.РазмерСписка() Цикл
ИмяЗаголовка = "";
ЗначениеЗаголовка = сзЗаголовки.ПолучитьЗначение(СчЦикла,ИмяЗаголовка);
Если (ПустоеЗначение(ИмяЗаголовка) = 0) И (ПустоеЗначение(ЗначениеЗаголовка) = 0) Тогда
wHTTP.SetRequestHeader (ИмяЗаголовка, ЗначениеЗаголовка);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если флОтладка = 1 Тогда
Если СтрДлина(ЗапросJSON) < 220 Тогда
Сообщить("->"+ЗапросJSON);
Иначе
Для СчЦ = 0 По Цел(СтрДлина(ЗапросJSON)/220) Цикл
Сообщить("->"+Сред(ЗапросJSON,СчЦ*220+1,220));
КонецЦикла;
КонецЕсли;
КонецЕсли;
wHTTP.Send(ЗапросJSON);
RequestTimeout = 20;
Рез = wHTTP.WaitForResponse(RequestTimeout);
Если флОтладка = 1 Тогда
Сообщить("Рез: "+Рез);
КонецЕсли;
Ответ = "";
Если Рез = -1 Тогда
Статус = wHTTP.status();
СтатусТекст = wHTTP.statusText();
Ответ = СокрЛП(wHTTP.ResponseText());
Если флОтладка = 1 Тогда
Сообщить("Статус: "+Статус);
Сообщить("СтатусТекст: "+СтатусТекст);
Если СтрДлина(Ответ) < 220 Тогда
Сообщить("Ответ: "+Ответ);
Иначе
Для СчЦ = 0 По Цел(СтрДлина(Ответ)/220) Цикл
Сообщить("Ответ: "+Сред(Ответ,СчЦ*220+1,220));
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Статус <> 200 Тогда
//Ошибка
Если ПустоеЗначение(Ответ) = 0 Тогда
сзОтвет = глРазборJSON(Ответ);
СтрОшибка = сзОтвет.Получить("error_description");
КонецЕсли;
Возврат "";
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(Ответ) = 0 Тогда
сзОтвет = глРазборJSON(Ответ);
КонецЕсли;
Возврат сзОтвет;
КонецФункции // ВыполнитьЗапрос()
Показать
Подскажите каким образом можно тестировать операции прихода на тестовом стенде? Как изобразить там поставщика, т.е. отгрузить самому себе накладную?
Необходимо сделать запрос в техническую поддержку МДЛП и они сделают тестовый документ прихода с набором тестовых sGTIN в составе
Друзья. Подскажите, что делаю не так?
По итогам этого запроса получаю статус сервера 500 и следующие сообщения в формате json
timestamp - 57143296004
status - 0
error - Internal Server Error
message - Ошибка при выполнении операции
path - /api/v1/rights/about
wHttp= wHTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
wHttp.Open("GET","https://api.sb.mdlp.crpt.ru/api/v1/rights/about",1);
wHttp.Option(2, "utf-8");
wHttp.setRequestHeader("Content-type", "application/json;charset=UTF-8");
wHttp.setRequestHeader("Accept-language","ru");
wHttp.setRequestHeader("Authorization","token "+Токен);
wHttp.SetRequestHeader("Cache-Control", "no-cache");
wHttp.Send();
По итогам этого запроса получаю статус сервера 500 и следующие сообщения в формате json
timestamp - 57143296004
status - 0
error - Internal Server Error
message - Ошибка при выполнении операции
path - /api/v1/rights/about
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот