Интеграция 1С 7.7 и МДЛП Маркировка

1. dmitry8200 29.01.19 15:56 Сейчас в теме
Здравствуйте кто нибудь сталкивался с интеграцией 1С 7.7 и ИС Маркировка.для аптек? Подскажите есть ли готовые решения наподобие интеграции ЕГАИС и 1С 7.7?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 3119 29.01.19 20:39 Сейчас в теме
а в чем конкретно проблемы?
+
3. dmitry8200 30.01.19 15:16 Сейчас в теме
(2)Хотелось увидеть все рабочие механизмы обмена с ИС Маркировка на примере, неважно какая конфигурация. Если есть готовые решения или примеры кода, ссылки на решения, буду благодарен. Заранее спасибо.
user771920; +1
4. uryP 16.09.19 11:12 Сейчас в теме
Присоединяюсь к вопросу.
Интересует интеграция с оптовым складом.
Каким способом можно выгрузить из 1С торговли xml для передачи в МДЛП при поступлении и реализации ЛП?
dmitry8200; user771920; +2
5. user771920 20.09.19 22:01 Сейчас в теме
Каким образом можно связываться из 1с 7.7 с мдлп, хоть какой то пример, не понятно... с чеками всё понятно, а вот как передовать из 1с инфо о приходе и перемещении или расходной накладной? Есть кто то кому что то хоть понятно? Поделитесь!!!
dmitry8200; rogi87; +2
6. Leo489 23.09.19 16:10 Сейчас в теме
Присоединяюсь к вопросам. Кто может помочь с интеграцией?
user771920; +1
7. vovaapril 46 27.09.19 09:31 Сейчас в теме
Начал этой темой заниматься.
Всё что в этой инструкции:
https://честныйзнак.рф/upload/iblock/f7a/Kratkaya-instruktsiya-po-bystromu-startu-dlya-izucheniya-API.pdf
успешно запрограммировал на 7.7. Дальше надо разбираться с xml схемами. Пока читаю документацию.
+
8. vovaapril 46 27.09.19 12:06 Сейчас в теме
Начал этой темой заниматься.
Всё что в инструкции "Краткая инструкция по быстрому старту" из раздела "Разработчикам" успешно запрограммировал на 7.7.
Дальше надо разбираться с xml схемами. Пока читаю документацию. Готов скооперироваться. Пишите
Прикрепленные файлы:
Kratkaya-instruktsiya-po-bystromu-startu-dlya-izucheniya-API.pdf
+
9. user771920 01.10.19 11:23 Сейчас в теме
А можно пример кода для авторизации, я сделал так:

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
+
10. vovaapril 46 01.10.19 12:47 Сейчас в теме
401 - требуется авторизация.
А что в 01234.txt?
Сначала надо зарегистрироваться на тестовом стенде и экспериментировать с ним. Потом писать письмо, чтобы перевели на песочницу, а уже потом на промышленный стенд.
api.stage.mdlp.crpt.ru - Тестовый стенд API
api.sb.mdlp.crpt.ru - Тестовая система МДЛП ("Песочница")
api.mdlp.crpt.ru - Промышленная система.
Если ты в самом начале, то я думаю не стоит сразу пытаться авторизоваться на промышленном системе, тем более там для доступа нужна электронная подпись.
+
11. user771920 01.10.19 14:45 Сейчас в теме
Зарегился и в песочнице и в промышленном стенде, просто через сайт, а потом вот хочу подсоедениться использую код выше, 01234.txt имеет вид:

{
"client_secret": "40c1c2f0-1538-4fdb-a876-ec5eb85b9c5a",
"client_id": "a9a88262-c690-4606-8882-6tgbee786a3dd",
"user_id": "5504c6fa79fb874c42dfae85a066cca41d77dd3f8",
"auth_type": "SIGNED_CODE"
}
+
12. vovaapril 46 01.10.19 21:40 Сейчас в теме
При регистрации на тестовом стенде необходимо указать в том числе 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(Ответ);
	КонецЕсли;
	Возврат сзОтвет;
	
КонецФункции // ВыполнитьЗапрос()
Показать
+
13. dmitry8200 03.10.19 17:40 Сейчас в теме
Подскажите каким образом можно тестировать операции прихода на тестовом стенде? Как изобразить там поставщика, т.е. отгрузить самому себе накладную?
+
14. user772869 08.10.19 12:35 Сейчас в теме
Необходимо сделать запрос в техническую поддержку МДЛП и они сделают тестовый документ прихода с набором тестовых sGTIN в составе
+
15. GoncharovDY 19.10.19 09:25 Сейчас в теме
Друзья. Подскажите, что делаю не так?
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
+
16. nik068 22.10.19 09:28 Сейчас в теме
Нужны обработки для связи 1С 7.7 и МДЛП
+
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот