Пример HTTP запроса к УТМ ЕГАИС на платформе 1С 7.7

13.01.16

Учетные задачи - Оптовая торговля

Запрос реализован на объекте ServerXMLHTTP из встроенной в Windows библиотеки MSXML,
результатом запроса является XML объект DOMDocument из той же библиотеки MSXML со встроенным интерфейсом его обработки

Предлагаю Вашему вниманию пример HTTP запроса к Универсальному транспортному модулю Единой государственной автоматизированной информационной системы на платформе 1С 7.7.

Поскольку встроенный язык 1С 7.7 не содержит инструменты для работы с HTTP и XML, запрос реализован на объекте ServerXMLHTTP из библиотеки MSXML.
Это решение обладает рядом преимуществ:

+ не используется внешняя утилита CURL, процесс отправки запроса полностью контролируется из кода 1С
+ не требуются внешние библиотеки типа v7plus.dll, объект встроен в операционую систему Windows
+ результатом запроса является XML объект DOMDocument из той же библиотеки MSXML со встроенным интерфейсом его обработки,
т.е. для распознавания XML ответа на запрос также не требуются внешние библиотеки и сторонние парсеры.

Документация на используемые объекты размещена на сайте "мелкомягкого":

https://msdn.microsoft.com/en-us/library/windows/desktop/ms760218%28v=vs.85%29.aspx

Для корректной работы примера необходима библиотека MSXML не ниже 4.0
Определить, какая версия библиотеки у вас установлена, можно по версиям объектов MSXML в ветке реестра HKEY_CLASSES_ROOT:

При необходимости обновить из того же источника

https://support.microsoft.com/ru-ru/kb/324460

В качестве примера рассматривается отправка запроса остатков организации:

    //определение версии MSXML
	MSXMLver = "6";
	Попытка
		Http = CreateObject("MSXML2.ServerXMLHTTP."+MSXMLver+".0");
	Исключение   
		Попытка
			MSXMLver = "4";
			Http = CreateObject("MSXML2.ServerXMLHTTP."+MSXMLver+".0");	
		Исключение   
			Сообщить(ОписаниеОшибки(),"!");
			Сообщить("Для работы модуля обмена необходима библиотека MSXML не ниже 4.0","!");
			Возврат;
		КонецПопытки;
	КонецПопытки;
    
	//адрес службы УТМ ЕГАИС
	ServiceIP = "localhost";	
	ServicePort = "8080";
	Service = "http://"+ServiceIP+":"+ServicePort;
    FSRAR_ID = "123456789"; //ваш идентификатор в ЕГАИС

    //текст XML запроса остатков
	XMLstr =	"<?xml version=""1.0"" encoding=""UTF-8""?>
				|<ns:Documents Version=""1.0""
				|xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
				|xmlns:ns=""http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01""
				|xmlns:qp=""http://fsrar.ru/WEGAIS/QueryParameters"">				
				|<ns:Owner>
				|<ns:FSRAR_ID>"+FSRAR_ID+"</ns:FSRAR_ID>
				|</ns:Owner>
				|<ns:Document>
				|<ns:QueryRests>
				|</ns:QueryRests>
				|</ns:Document>
				|</ns:Documents>";

	Response = SendHTTPRequest("POST", "/opt/in/QueryRests", XMLstr);
    Если Response = 0 Тогда
	    Возврат;
	КонецЕсли;

	replyId = Response.documentElement.childNodes.item(0).text; //идентификатор для отслеживания ответа на запрос

В ответ на такой запрос от УТМ приходит XML квитанция о подписи запроса вида

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<A>
<url>992ecfcf-7f31-4372-80c0-7a8b91cc85dd</url>
<sign>597CC2C9CE9F2D56F447C2E2D2D6B3481CC0A13DE0A49EAA15CBEB32BEDAC5F7B0B35DBD08C7369A2826AC9935CBB212FE6FBCAF6FCC5DF6C0E9171818AB8EEE</sign>
<ver>2</ver>
</A>

В теге url квитанции содержится идентификатор, по которому далее отслеживается получение ответа на запрос от сервера ЕГАИС

Ну и, собственно, функция SendHTTPRequest для отправки запроса:

Функция SendHTTPRequest(Metod, Request, XMLstr="")
	
	Сообщить(Metod+" "+Service+Request,".");
	Если ПустаяСтрока(XMLstr) = 0 Тогда
	    Сообщить(XMLstr);              
		Boundary = "Boundary"+СтрЗаменить(ТекущееВремя(),":","");
		//формируем тело запроса
		Body = "--"+Boundary+РазделительСтрок
				+"Content-Disposition: form-data; name=""xml_file""; filename=""file.xml"""+РазделительСтрок
				+"Content-Type: text/xml; charset=utf-8"+РазделительСтрок+РазделительСтрок
				+XMLstr+РазделительСтрок
				+"--"+Boundary+"--";
	КонецЕсли;
	
	Попытка
		Http = CreateObject("MSXML2.ServerXMLHTTP."+MSXMLver+".0");	
	Исключение   
		Сообщить(ОписаниеОшибки(),"!");
		Возврат 0;
	КонецПопытки;

	Http.Open (Metod, Service+Request, -1); //асинхронный запрос 
	Http.SetRequestHeader("Host", ServiceIP);

	Попытка
		Если ПустаяСтрока(XMLstr) = 0 Тогда
			Http.SetRequestHeader("Content-Type","multipart/form-data; boundary="+Boundary);
			Http.SetRequestHeader("Content-Length", СтрДлина(Body));
			Http.Send(Body);
		Иначе
			Http.Send();
		КонецЕсли;
	Исключение   
		Сообщить(ОписаниеОшибки(),"!");
		Возврат 0;
	КонецПопытки;
	
	Состояние("Ожидание ответа на запрос...");
    ВремяОжидания = 0;
	Пока Http.ReadyState <> 4 Цикл
		Попытка
			Если Http.waitForResponse(1) = 0 Тогда //превышено время ожидания ответа =1s
				Если ВремяОжидания >= 60 Тогда //60s
					Состояние("");
					Сообщить("Превышен интервал ожидания запроса сервера "+ServiceIP,"!");
					Возврат 0; 
				КонецЕсли;
				ВремяОжидания = ВремяОжидания + 1; //1s
				Состояние("Ожидание ответа на запрос... "+Строка(ВремяОжидания)+"s");
			КонецЕсли;
		Исключение   
			Сообщить(ОписаниеОшибки(),"!");
			Возврат 0;
		КонецПопытки;	
	КонецЦикла;           
	Состояние("");
	
	Если Http.Status = 200 Тогда
		Сообщить("HTTP status: "+Http.Status+" "+Http.StatusText+", время ожидания "+?(ВремяОжидания=0,"<1",Строка(ВремяОжидания))+"s");	    
	Иначе
		Сообщить("HTTP status: "+Http.Status+" "+Http.StatusText+", ошибка!","!");
		Возврат 0;
	КонецЕсли;
                                     
	Response = Http.ResponseXML;
	
	Возврат Response;
	
КонецФункции	// SendHTTPRequest

Внешняя обработка, демонстрирующая обмен данными с УТМ ЕГАИС на платформе 1С 7.7 и основанная на приведенном примере:

//infostart.ru/public/435145/

ЕГАИС УТМ HTTP XML MSXML ServerXMLHTTP XMLHTTP DOMDocument

См. также

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 руб.

21.04.2017    90815    108    40    

197

АИС: Онлайн-кассы для 1С 7.7 (с поддержкой маркировки ЕГАИС, ТАБАКА, ОБУВИ, ЛЕКАРСТВ, ШИН, ОДЕЖДЫ, МОЛОКА, ВОДЫ и пр.) и Обмен с 1С 7.7 "Честный ЗНАК" (ГИСМТ, ЦРПТ, ЭДО)

Оптовая торговля Розничная торговля ККМ ЭДО и ОФД Обмен с ГосИС Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы (в соответствии с 54-ФЗ). Поддержка крайних версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка протоколов ФФД 1.0, 1.05, 1.1 и 1.2, развитые настройки для применения частичных оплат и авансов в оптовой и розничной торговле. Поддержка чеков коррекции всех версий. Поддержка розничной продажи маркированной продукции (ЕГАИС, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.). Вывод электронного чека (на е-майл, телефон) по требованию покупателя, поддерживаются комбинированные типы оплаты, режим эмуляции печати чека на ФР. **** Полный цикл работы из 1С 7.7 с маркировкой "Честный ЗНАК" (ГИСМТ, ЦРПТ) из 1С 7.7. ЭДО (табак, обувь, шины, одежда, молочная продукция, вода и прочие группы товаров) для розницы и опта (приемка и оптовая отгрузка маркированной продукции). Поддерживается как объемно-сортовой учет (ОСУ) так и поштучный (поэкземплярный) учет.

2000 руб.

28.03.2017    460116    4285    3461    

2431

КБ99: ГИС Меркурий + 1С 7.7 / 8.2 / 8.3 = Дружба

Оптовая торговля Производство готовой продукции (работ, услуг) Логистика, склад и ТМЦ Обмен с ГосИС Оперативный учет 7.7 Оперативный учет Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 1.6 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Производство+Услуги+Бухгалтерия Сельское хозяйство и рыболовство Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия Управленческий учет Платные (руб)

Модуль интеграции устанавливается в вашу 1С. Сокращает время оформления ветсправок с 8 часов до 30 минут в день. Проверяет ошибки в каждом документе. Обмен данными с ФГИС Меркурий из 1С через ВетИС API

36000 руб.

14.04.2017    51751    100    44    

35

Обмен с системой Меркурий (полный цикл) через Ветис.API для 1С 7.7

Оптовая торговля Обмен с ГосИС Платформа 1С v7.7 Конфигурации 1cv7 Сельское хозяйство и рыболовство Оптовая торговля, дистрибуция, логистика Пищевая промышленность Бухгалтерский учет Платные (руб)

В обработке реализован полный цикл работы с ГИС Меркурий из 1С на платфоме 7.70.027 (поддерживается конфигурация "Торговля и Склад") через Ветис.API: реализованы процедуры обмена с подсистемами заявок и справочников Ветис.API в формате 2.0.

4800 руб.

03.07.2018    36910    78    27    

60

АИС: Обмен с ФГИС Меркурий (Ветис.API) для всех* конфигураций 1С 7.7

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Упрощенное налогообложение 7.7 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Полностью автоматизированный обмен между конфигурациями 1С 7.7 и ФГИС Меркурий через Ветис.API для всех видов деятельности (Опт, Розница, Производство). Для организации обмена с ФГИС Меркурий требуется минимальная доработка конфигураций (поддерживается "из коробки" 1С: "Торговля и склад ред. 9.2", 1С: "Комплексная ред. 4.5", 1С: "Бухгалтерия 7.7", 1С: "УСН 7.7", 1С Предприниматель, другие конфигурации по заказу, включая нетиповые и самописные). Модуль разработан таким образом, чтобы минимизировать затраты по внедрению в произвольную конфигурацию на базе 1С 7.7. Вы можете БЕСПЛАТНО скачать демо-версию без ограничения по функционалу и опробовать решение в полном объеме перед покупкой. В данном программном продукте реализованы все технические требования Россельхознадзора по обмену в формате 2.0 и 2.1. Решение прошло опытную эксплуатацию и тестирование на крупных объектах всех видов деятельности: Производство, Опт, Розница.

10000 руб.

21.11.2018    52813    139    105    

67

АИС: Обмен с ЕГАИС 4.0 для конфигураций 1С 7.7

Оптовая торговля Розничная торговля Обмен с ГосИС Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полностью автоматизированный обмен между конфигурациями 1С 7.7 и универсальным транспортным модулем (УТМ) ЕГАИС для всех видов деятельности (Опт, Розница, Производство, Импорт). Для организации обмена с ЕГАИС требуется минимальная доработка конфигураций (поддерживается 1С: "Торговля и склад ред. 9.2", 1С: "Бухгалтерия 7.7", 1С: "УСН 7.7", другие конфигурации по заказу, включая нетиповые). В данном программном продукте реализованы все технические требования ФСРАР по обмену с УТМ ЕГАИС (включая отправку чеков розничных продаж в ЕГАИС - требование с 01.07.16). Поддержана фиксация чеков ЕГАИС на онлайн-кассах (в соответствии с 54-ФЗ). Поддержана версия 3 документооборота и поштучный (помарочный) учет. Поддержан эксперимент Татарстана по маркировке нефасованного (кегового) пива.

3000 руб.

13.12.2015    134857    159    400    

146

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59306    8    21    

20

Обмен с ЕГАИС из 1С V7.7

Оптовая торговля Розничная торговля Обмен с ГосИС Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Акцизы Платные (руб)

Дорогие друзья! Предлагаю Вашему вниманию обработку, предназначенную для обмена данными из Вашей учетной системы с ЕГАИС, через универсальный транспортный модуль (УТМ). В обработке реализован весь функционал обмена: - загрузка справочных данных по контрагентам, производителям, импортерам алкогольной продукции; - загрузка справочных данных по номенклатуре алкогольной продукции; - загрузка остатков; - помощник сопоставления справочных данных и запись их в базу данных; - загрузка приходных ТТН и справок Б от поставщиков, отправка по ним актов всех типов, создание по ним приходных документов; - выгрузка расходных ТТН покупателям; - управление Марками и ведение Регистра 3; Обработку возможно использовать автономно, не внося изменений в Вашу Учетную систему. Код открыт.

6000 руб.

13.11.2015    121672    169    2528    

232
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. СергейК 51 16.12.15 10:46 Сейчас в теме
Познавательно!
Но я решил для обмена все таки использовать старый проверенный curl.
т.к. все равно все хмл запросы/ответы пока сохраняю для анализов возможных сбоев.
p.s.
а не проверяли, мне кажется я как то тестировал напрямую считывание в XML по URL
выяснилось что влияют настройки IE в системе, в частности, например настройки прокси.
Почему то мне это не понравилось... :-)
2. Palmer1976 198 16.12.15 11:00 Сейчас в теме
(1) СергейК, вызывать внешнюю утилиту curl при отправке каждого запроса, вы серьезно?
- не кошерно ;) окошки в глазах будут мельтешить )))
я тоже сохраняю все результаты в файл соответствующей функцией, для данного примера это Http.Save(имя файла)
Оставьте свое сообщение