Пример 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

См. также

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

Поддерживается ТС ПИоТ. Передача дополнительных тегов в чек с 01.09.2025 согласно приказа от 26.03.2025 № ЕД-7-20/236@. Поддерживаются новые ставки НДС 5%, 7% и 22% при продаже через ККТ. Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы в соответствии с 54-ФЗ. Поддержка актуальных версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 5.16-5.20 для Штрих-М / Торговый баланс М (PosCenter). Поддержка операторов ЭДО: Сбис (Тензор), Контур.Диадок, ЭДО лайт, Калуга Астрал, Такском и пр. Поддержка оптовой и розничной продажи маркированной продукции (алкоголь, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода, пиво, автозапчасти, моторное масло и пр.). Поддержка онлайн и офлайн (через Локальный Модуль ЧЗ) проверки маркировки в разрешительном режиме (РР).

2999 руб.

28.03.2017    529028    4949    3685    

2588

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Программист Бухгалтер Оперативный учет 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    57986    162    105    

73

Оптовая торговля Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Управленческий учет Платные (руб)

1C v.7.7 Готовое решение. Не требует настройки. Не требует программирования. Обработка предназначена для автоснятия просроченных заявок (резервов) покупателей.

5094 руб.

01.07.2009    77597    20    21    

33

Внешние источники данных Программист 1С:Предприятие 7.7 1C77 Украина Абонемент ($m)

Рабочий механизм чтения/записи строк в формате JSON для 1С 7.7. Тестировалось на релизах 7.70.25 и 27.

1 стартмани

16.12.2019    25545    69    Volvo32    33    

25

Анализ учета Оптовая торговля Бухгалтер Бухгалтерский учет 7.7 1С:Комплексная 7.7 Россия Бухгалтерский учет НДС Абонемент ($m)

Отчет написан для Комплексной конфигурации 4.2. Отчет позволяет выполнить сверку кредитовых оборотов счета 76.АВ (НДС с авансов полученных) с книгой покупок, проверить правильность выписки счетов фактур на зачет аванса по счетам БУ в разрезе разных ставок НДС 18% и 20% в комплексной конфигурации 1С:Предприятия 7.7. Позволяет найти и исправить ошибки в процессе перехода на 20% НДС. Помогает с закрытием квартала 18% и 20% НДС. Отчет обновлен для анализа данных 2 квартала 2019 года и всех следующих кварталов (стал более универсальным).

1 стартмани

27.03.2019    25781    17    ksnik    5    

2

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

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

5124 руб.

03.07.2018    40095    81    29    

64

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

Одна касса - несколько компьютеров. Подключение нескольких компьютеров к одной кассе - сервер печати чеков, работает с любой конфигурацией 1С и даже не с 1С. Обработка позволяет подключить несколько рабочих мест по сети к одной кассе. Поддерживаются кассы Штрих, Атол, Википринт (Дримкас), Пирит.

6710 руб.

25.05.2018    25490    4    6    

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