Отправка HTTP запроса в УТМ ЕГАИС. Код функции + обработка.

08.06.16

Разработка - Инструментарий разработчика

Функция для отправки HTTP запроса в УТМ ЕГАИС. Используется HTTPСоединение либо curl.

Скачать исходный код

Наименование Файл Версия Размер
Тестовая обработка
.epf 15,13Kb
36
.epf 15,13Kb 36 Скачать
client.xml
.xml 0,57Kb
8
.xml 0,57Kb 8 Скачать
Функция написана при решении задачи отказа от curl в пользу инструментов, встроенных в язык 1С.

Возможности:

  • Получение xml от УТМ ЕГАИС в виде файла на диске

  • Отправка xml в  УТМ ЕГАИС и получение ответного xml

  • Реализованы 2 метода отправки: curl и HTTPЗапрос. curl.exe должен лежать в директории C:\temp\

Пример использования:

Запрос реквизитов контрагента

  • Формируем файл (client.xml):
<?xml version="1.0" encodmg="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:oref="http://fsrar.ru/WEGAIS/ClientRef"
    xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters">
<ns:Owner>
  <ns:FSRAR_ID>00040218</ns:FSRAR_ID>
</ns:Owner>
<ns:Document> (5.1)
<ns:QueryClients>
  <qp:Parameters>
   <qp:Parameter>
    <qp:Name>ИНН</qp:Name>
    <qp:Value>1681000049<</qp:Value>
   </qp:Parameter>
  </qp:Parameters>
  </ns:QueryClients>
</ns:Document>
</ns:Documents>
  • Запускаем обработку. Заполняем поля: 
    • URI: 10.10.10.10:8080/opt/in. вместо 10.10.10.10 указываем адрес компьютера с установленным УТМ

    • Путь к файлу ответа - путь к файлу, в котороый будет записан ответ УТМ. Файл может не существовать, но папка должна быть

    • Команда - GET

    • Метод отправки - выбрать любой

  • Проверяем очередь входящих (URI: 10.10.10.10:8080/opt/in)
  • Через некоторое время увидим ответ от УТМ:
  • <ns:Documents xmlns:rc="http://fsrar.ru/WEGAIS/ReplyClient" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01">
    <ns:Owner>
    <ns:FSRAR_ID>3463047</ns:FSRAR_ID>
    </ns:Owner>
    <ns:Document>
    <ns:ReplyClient>
    <rc:Clients>
    <rc:Client xmlns:rc="http://fsrar.ru/WEGAIS/ReplyClient" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef">
    <oref:ClientRegId>010000005339</oref:ClientRegId>
    <oref:INN>5256044729</oref:INN>
    <oref:KPP>526332001</oref:KPP>
    <oref:FullName>ООО ЦДА "Сомелье"</oref:FullName>
    <oref:ShortName>ООО "ЦДА "СОМЕЛЬЕ"</oref:ShortName>
    <oref:address>
    <oref:Country>643</oref:Country>
    <oref:RegionCode>52</oref:RegionCode>
    <oref:description>
    РОССИЯ,603127,НИЖЕГОРОДСКАЯ ОБЛ,,Нижний Новгород г,СОРМОВСКИЙ РАЙОН,Федосеенко ул,46А,ЛИТЕР К4, 1 ЭТАЖ,ПОМЕЩЕНИЕ №№ 19, 20, 21, 22
    </oref:description>
    </oref:address>
    <oref:State>Active</oref:State>
    </rc:Client>
    <rc:Client xmlns:rc="http://fsrar.ru/WEGAIS/ReplyClient" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef">
    <oref:ClientRegId>030000039632</oref:ClientRegId>
    <oref:INN>5256044729</oref:INN>
    <oref:KPP>525601001</oref:KPP>
    <oref:FullName>
    Общество с ограниченной ответственностью Центр дистрибуции алкоголя "Сомелье"
    </oref:FullName>
    <oref:ShortName>ООО ЦДА "Сомелье"</oref:ShortName>
    <oref:address>
    <oref:Country>643</oref:Country>
    <oref:RegionCode>52</oref:RegionCode>
    <oref:description>
    Россия, 603147,Нижегородская обл,Юлиуса Фучика ул,Нижний Новгород г,43 А,
    </oref:description>
    </oref:address>
    <oref:State>Active</oref:State>
    </rc:Client>
    </rc:Clients>
    </ns:ReplyClient>
    </ns:Document>
    </ns:Documents>

     

Спасибо desarz за публикацию HTTP POST запрос к УТМ системы ЕГАИС.

// Функция выполняет HTTP запрос curl`ом либо 1С HTTPЗапросом
// Параметры:
//  URI                - Строка - адрес для отправки запроса вида 
//                 				  [http://]<ip>[:<port>][/<url>],
//                 				  пример: 10.10.10.1:8080/opt/in/ActWriteOff 
//
//  Команда            - Строка - "GET" | "POST" | "DELETE" - 
//                 				  метод http запроса  
//
//  ПутьКФайлуОтправки - Строка – путь к отправляемому файлу,
//								  пример: c:\temp\query.xml
//
//  ПутьКФайлуОтвета   - Строка - путь к файлу, в который будет записан ответ
//								  пример: c:\temp\reply.xml
//
//  Таймаут            - Число  - максимальное время выполнения операции в секундах
//
//	ТолькоCurl		   - Булево - флаг принудительного использования curl.exe
//
// Возвращаемое значение:
//  Булево - Истина: запрос успешно выполнен, 
//           Ложь: запрос не выполнен
//
Функция ВыполнитьHTTPЗапрос(val URI, Команда = "POST",	ПутьКФайлуОтвета, ПутьКФайлуОтправки = "", Таймаут = 120, ТолькоCurl = Ложь) Экспорт

	// Разбор URI
	Попытка
		RegExp = Новый COMОбъект("VBScript.RegExp");
		RegExp.MultiLine = Ложь;
		RegExp.Global = Ложь; 
		RegExp.IgnoreCase = Истина;
		
		ШаблонIP   = "(\d+\.\d+\.\d+\.\d+)";
		ШаблонПорт = "\d+\.\d+\.\d+\.\d+:(\d+)";
		ШаблонURI  = "\d+(\/.*)";
		
		RegExp.Pattern = ШаблонIP; Рез=RegExp.Execute(URI);
		Если Рез.Count = 1 Тогда
			IP = Рез.item(0).value;
		Иначе
			ВызватьИсключение "Ошибка разбора URI. Не удалось определить IP. URI: " + URI;
		КонецЕсли;
		
		RegExp.Pattern = ШаблонПорт; Рез=RegExp.Execute(URI);
		Если Рез.Count = 1 Тогда
			Порт = Рез.item(0).SubMatches.Item(0);
		Иначе
			Порт = "8080";
		КонецЕсли;
		
		RegExp.Pattern = ШаблонURI; Рез=RegExp.Execute(URI);
		Если Рез.Count = 1 Тогда
			АдресСкрипта = Рез.item(0).SubMatches.Item(0);
		Иначе
			АдресСкрипта = "";
			ВызватьИсключение "Ошибка разбора URI. Не удалось определить АдресСкрипта. URI: " + URI;
		КонецЕсли;
	Исключение
		Сообщить(ОписаниеОшибки());
		Возврат Ложь;
	КонецПопытки;
	
	Если ТолькоCurl Тогда 
		
		СтрокаКоманды = "cmd /c c:\temp\curl.exe --max-time " + Таймаут;

		Если Команда = "GET" Тогда
			СтрокаКоманды = СтрокаКоманды + " -X GET %1 > %2";
			СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаКоманды, uri, ПутьКФайлуОтвета);
		ИначеЕсли Команда = "POST" Тогда                            
			СтрокаКоманды = СтрокаКоманды + " -F ""xml_file=@%1"" %2 > %3";
			СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаКоманды, ПутьКФайлуОтправки, uri, ПутьКФайлуОтвета);
		ИначеЕсли Команда = "DELETE" Тогда
			Возврат Ложь; // TODO
		КонецЕсли; 
		
		Попытка
			ЗапуститьПриложение(СтрокаКоманды, "C:\temp\", Истина);
		Исключение
			Сообщить(ОписаниеОшибки());
			Возврат Ложь;
		КонецПопытки;
		
		Возврат Истина;
		
	Иначе
		
		Если Команда = "GET" Тогда			
			Попытка
				НТТР = Новый HTTPСоединение(IP, Число(Порт),,,,Таймаут);
				Ответ = НТТР.Получить(Новый HTTPЗапрос(АдресСкрипта),ПутьКФайлуОтвета);
				Если Ответ.КодСостояния = 200 Тогда
					Возврат Истина;
				Иначе
					Сообщить("Код ответа сервера: " + Ответ.КодСостояния);
					Возврат Ложь;
				КонецЕсли;
			Исключение
				Сообщить(ОписаниеОшибки());
				Возврат Ложь;
			КонецПопытки;
		КонецЕсли; 
		
		Попытка
			Boundary = СтрЗаменить(Новый УникальныйИдентификатор,"-","");
			ИмяФайлаДляЗагрузки = ПутьКФайлуОтправки;//КаталогВременныхФайлов() + Boundary + "select.xml";       
			ИмяФайлаОтвета = КаталогВременныхФайлов() + Boundary + "answer.xml"; // Имя файла ответа на POST запрос
			ИмяФайлаОтправки = КаталогВременныхФайлов() + Boundary + "post.txt";
			
			//Определяем массив для процедуры ОбъединитьФайлы
			МассивФайловДляОбъединения = Новый Массив;
			
			//Формируем начальный фрагмент файла POST-запроса
			ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
			ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.ANSI, Символы.ПС, Ложь);
			
			//Определяем раздел двоичных данных
			ФайлОтправкиНачало.ЗаписатьСтроку("--" + Boundary);
			//Указываем имя файла для передачи
			ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""xml_file""; filename=""" + "select.xml" + """");
			//Указываем тип передаваемых данных.
			ФайлОтправкиНачало.ЗаписатьСтроку("Content-Type: text/xml; charset=utf-8");
			ФайлОтправкиНачало.ЗаписатьСтроку("");
			ФайлОтправкиНачало.Закрыть();
			
			МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
			
			МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузки);
			
			//Формируем конечный фрагмент файла POST-запроса
			ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt");
			ФайлОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.ANSI, Символы.ПС, Ложь);
			
			//Завершение раздела двоичных данных
			ФайлОтправкиКонец.ЗаписатьСтроку(Символы.ПС);
			ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--");
			ФайлОтправкиКонец.Закрыть();
			
			МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); // !!! 3 добавление в массив
			
			//Теперь сформированные фрагменты сообщения для сервера объединяем в один файл POST-запроса
			ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
			
			ЗаголовокHTTP = Новый Соответствие();
			
			//Укажем формат данных Content-Type
			ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
			
			Если ЗначениеЗаполнено(ПутьКФайлуОтправки) Тогда
				//Укажем длину POST-запроса Content-Length
				ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
				РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
				ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
			КонецЕсли;
			
			СерверПриемник = IP;
			НТТР = Новый HTTPСоединение(СерверПриемник, Число(Порт),,,,Таймаут);
			
			Попытка
				//Формируем HTTP запрос
				ЗапросHTTP = Новый HTTPЗапрос(АдресСкрипта, ЗаголовокHTTP);
				
				//Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
				ЗапросHTTP.УстановитьИмяФайлаТела(ИмяФайлаОтправки);  //Устанавливает имя файла, из которого будет прочитано тело POST-запроса.
				
				//Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
				ОтветHTTP = НТТР.ОтправитьДляОбработки(ЗапросHTTP, ИмяФайлаОтвета);			
			Исключение
				ЗапросHTTP = Неопределено;
				Сообщить("Неудачная попытка соединения с " + СерверПриемник + ": " + ОписаниеОшибки());
				Возврат Ложь;
			КонецПопытки;
			
			//Разрушаем объект HTTP-запроса для освобождения файла POST-запроса.
			//В противном случае при попытке удаления файла получим ошибку совместного доступа.
			ЗапросHTTP = Неопределено;
			
			Возврат Истина;
		Исключение      
			ЗапросHTTP = Неопределено;
			Сообщить(ОписаниеОшибки(),СтатусСообщения.Внимание);
			Возврат Ложь;
		КонецПопытки;
	КонецЕсли;
	
КонецФункции

Пример xml файла для отправки (client.xml):

<?xml version="1.0" encodmg="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:oref="http://fsrar.ru/WEGAIS/ClientRef"
    xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters">
 <ns:Owner>
  <ns:FSRAR_ID>00040218</ns:FSRAR_ID>
 </ns:Owner>
 <ns:Document> (5.1)
 <ns:QueryClients>
  <qp:Parameters>
   <qp:Parameter>
    <qp:Name>ИНН</qp:Name>
    <qp:Value>1681000049<</qp:Value>
   </qp:Parameter>
  </qp:Parameters>
  </ns:QueryClients>
 </ns:Document>
</ns:Documents>

ЕГАИС curl HTTPСоединение

См. также

Раздельный учет по гособоронзаказу (ГОЗ) - Подсистема для 1С:Бухгалтерии 3.0 ПРОФ и КОРП

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

Управляйте учетной политикой раздельного ведения затрат по контракту ГОЗ с подсистемой для 1С:Бухгалтерия. Отчеты по контрактам и контроль операций для исполнения в срок по 275-ФЗ. Минимальные требования: Версия платформы 1С: Предприятие 8.3 – 8.3.23 Версия конфигурации 1С: Бухгалтерия – 3.0.149.28 или выше.

28.08.2020    200640    1606    vvmanannikov    132    

828

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125043    683    389    

732

Гособоронзаказ: учет и отчетность БП3.0 КОРП + ПРОФ + БИТ.ФИНАНС

Бюджетный учет Обмен с ГосИС Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Государственные, бюджетные структуры Россия Бухгалтерский учет Платные (руб)

Доработка конфигурации 1С: Бухгалтерия предприятия, редакция 3.0. Предназначена для ведения раздельного учета и автоматизации заполнения отчетности исполнения контрактов ГОЗ в конфигурациях 1С БП КОРП, ПРОФ, БИТ.ФИНАНС.

30000 руб.

16.08.2019    88340    210    85    

127

ЕГАИС++. Опт, производство, импорт

Оптовая торговля Розничная торговля Обмен с ГосИС Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

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

8970 руб.

15.12.2015    166463    702    362    

390

SALE! 40%

Обмен 1С с Честным Знаком для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ

Обмен с ГосИС Платформа 1С v8.3 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Полноценное интеграционное решение которое манипулирует сотнями задач по ведению учета в системе мониторинга честный знак, особенности: такие как полная поддержка учета карточек в национальном каталоге (модерация, редактирование, подписание, получение информации), получение кодов маркировок в станции управления заказами "СУЗ Облако", удобная отправка и получение "УПД" через систему "ЭДОЛайт" из документов реализации или корректировки, так же существует механизм приема через ЭДОЛайт, отправка и получения таких документов как перемаркировка , списание, отгрузка и еще более 40 типов документов в ГИСМТ которые описаны ниже, моментальное сопоставление и внедрение в типовую конфигурацию которое обеспечивает ракетную мега скорость ...

18000 10800 руб.

28.03.2023    10320    38    9    

39

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7788    24    6    

42

Обмен с системой ЦРПТ (Универсальная конфигурация ХамелеонЦРПТ + маркировка табака, обуви, одежды, лекарств, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин)

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

Данная публикация создана для помощи разработчикам, интеграторам и другим заинтересованным лицам по настройке системы маркировки обуви, одежды, лекарств, табака, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин. Смело задавайте нам вопросы по работе с ЦРПТ, GS1, ЭДО, Национальным каталогом, мы накопили достаточно большую базу знаний по данным темам и готовы ответить на все Ваши вопросы.

104000 руб.

18.03.2019    110673    35    114    

178

Обмен с системами Казначейства: Электронный бюджет

Обмен с ГосИС Платформа 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработка для обмена платежными документами в формате xml для системы Федерального казначейства "Электронный бюджет" из конфигураций 1С. Поставляется в двух вариантах для БП 3.0 и КА 2.х/ERP 2.х. Работа только с контрагентами.

15000 руб.

14.10.2020    59042    350    101    

278
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DMLangepas 26.01.18 06:49 Сейчас в теме
На какой конф запускается эта обработка?
2. zekrus 151 22.01.19 08:19 Сейчас в теме
Доброе утро!
Тема весьма актуальная.
С уважением
3. ArCtic 3 29.06.20 14:00 Сейчас в теме
как правильно отправить xml?
Скрытый текст

и получить ответ?
отправляю этот файл через УТМ - возвращает ответ "Проверка пройдена", а через обработку либо
<A><error>Некорректный тип документа: null</error><ver>2</ver></A>
, либо
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<A>
  <ver>1</ver>
</A>
Оставьте свое сообщение