Реализация API обмена данными 1С и ВЕТИС (Меркурий)

16.04.23

Интеграция - Обмен с ГосИС

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

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

Наименование Файл Версия Размер
Обработка реализующая API обмена данными 1С и ВЕТИС (Меркурий):
.epf 209,24Kb
18
.epf 209,24Kb 18 Скачать

У нас эта обработка - основа для обмена Меркурий и УПП 1.3.

Общие принципы

В модуле объекта обработки необходимо реализовать процедуру УстановитьПараметрыОбмена(), которая должна заполнить параметры подключения к ВЕТИС в реквизитах обработки - логин, пароль, ключ API, тестовый или продуктивный контур. После этого можно вызывать экспортные функции модуля объекта обработки. С помощью этих экспортных функций формируется XML запрос и отправляется в ВЕТИС. Результат выдается в виде объекта XDTO - стандартный объект платформы, где XML ответа уже разобран и можно обращаться к его элементам как с полям объекта 1С “через точку”. Если возникает ошибка, то генерируется исключение с сообщением об ошибке.

В ВЕТИС часть запросов выполняется синхронно: отправили запрос, получили ответ. С ними все просто - вызвали функцию АПИ обработки, сразу получили результат. Это, например, функции чтения различных справочников.

Другая часть запросов (заявки в Меркурий) выполняются асинхронно: отправили запрос - получили его идентификатор. И потом с некоторой периодичностью должны проверять - готов ли ответ. Как только ответ готов - получаете его и обрабатываете.

Подробное описание всех операций есть на сайте https://help.vetrf.ru/ . Для каждой операции есть сравнительно подробное описание входного XML-запроса, XML-ответа, примеры запросов и ответов. Данная обработка покрывает только часть API:

Операция в ВЕТИС Функция в обработке Примечания

GetBusinessEntityList

ПолучитьХС_ПоИНН(ИНН)

описание

GetBusinessEntityList

ПолучитьХС_ПоОГРН(ОГРН)

описание

GetProductItemList

ПолучитьСписокНоменклатуры_ПоХС

описание

GetActivityLocationList

ПолучитьСписокПлощадок_ПоХС

описание

GetBusinessMemberByGLN

ПолучитьХСПлощадку_ПоGLN

описание

getPurposeList

ПолучитьСписокЦелей

описание

GetAllCountryList

ПолучитьСписокСтран

описание

GetUnitByGuid

ПолучитьЕдиницуИзмерения_ПоGUID

описание

GetBusinessEntityByGuid

ПолучитьХозяйствующийСубъект_ПоGUID

описание

GetEnterpriseByGuid

ПолучитьПредприятие_ПоGUID

описание

GetRegionByGuid

ПолучитьРегион_ПоGUID

описание

GetProductByGuid

ПолучитьПродукцию_ПоGUID

описание

GetProductItemByGuid

ПолучитьНоменклатуру_ПоGUID

описание

GetSubProductByGuid

ПолучитьВидПродукции_ПоGUID

описание

GetCountryByGuid

ПолучитьСтрану_ПоGUID

описание

GetPurposeByGuid

ПолучитьЦель_ПоGUID

описание

submitApplicationRequest

ОтправитьЗаявку

описание

receiveApplicationResult

ПолучитьРезультатВыполненияЗаявки

описание

getVetDocumentListRequest

ПолучитьСписокВСД

описание

WithdrawVetDocumentOperation

АннулироватьВСД

описание

getStockEntryListRequest

ПолучитьСписокОстатковСкладскогоЖурнала

описание

modifyProducerStockListRequest

СоздатьИзменитьНоменклатуру

описание

prepareOutgoingConsignment

ПодготовитьТранспортнуюПартию

описание

ProcessIncomingConsignment

ОбработатьВходящуюПартию

описание

registerProductionOperationRequest

ОформитьПроизводственнуюПартию

описание

ResolveDiscrepancyOperation

ДобавитьИзменитьЗаписиСкладскогоЖурнала

описание

mergeStockEntriesRequest

ОбъединитьЗаписиСкладскогоЖурналаСлиянием

описание

 

Также реализованы функции получения

  • номера ВСД по УИД,
  • номера возвратной и исходной ВСД по УИД

через парсинг регулярным выражением веб-страницы, полученной по http. (На момент разработки в API не было возможности получения этих данных).

В обработке есть форма (для обычного приложения), с помощью которой которой выполнение заявок в Меркурий становятся для программиста синхронными (хотя вообще являются асинхронными). Использование этой формы при выполнении заявок является опциональным и контролируется значением реквизита ПолучатьИдЗаявкиБезОткрытияФормыВыполненияЗапроса.

Форма ожидания выполнения заявки в Меркурий

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

Поиск хозяйствующего субъекта по ИНН

ОбработкаОбменаВЕТИС = Обработки.ОбменДаннымиВЕТИС.Создать();
РезультатПоиска = ОбработкаОбменаВЕТИС.ПолучитьХС_ПоИНН(ИНН);
			
Если РезультатПоиска = Неопределено Тогда
	Предупреждение("ХС по ИНН " + ИНН + " не найден в ВЕТИС!");
Иначе
	НаименованиеХС = РезультатПоиска.name;
	UUID = РезультатПоиска.uuid;
	GUID = РезультатПоиска.guid;
КонецЕсли;

 

Загрузка справочника продукции из ВЕТИС по хозяйствующему субъекту

Тут следует отметить, что объекты ВЕТИС идентифицируются с помощью GUID, и можно использовать эту особенность при интеграции с 1С, в частности присваивать внутренние идентификаторы элементам справочников 1С в значения, соответствующие GUID объектов ВЕТИС.

// Загрузка элементов в спр-к Номенклатура из Меркурий по хоз. субъекту
// Параметры:
//
//	ХС_GUID -  тип Строка - УИД хоз. субъекта в Меркурий
//
Процедура ЗагрузитьНоменклатуруПоХС(ХС_GUID) Экспорт
	
	ОбработкаОбменаВЕТИС = Обработки.ОбменДаннымиВЕТИС.Создать();
	НайденнаяНоменклатура = ОбработкаОбменаВЕТИС.ПолучитьСписокНоменклатуры_ПоХС(ХС_GUID);
	Если ЗначениеЗаполнено(НайденнаяНоменклатура) Тогда
		Для каждого Элемент Из НайденнаяНоменклатура Цикл
			
			УИД_Строкой = Элемент.guid;
			НоменклатураМеркурий = ИнтеграцияВЕТИСЗагрузкаОбъектов.ПолучитьСсылкуСправочникаПоУИД(УИД_Строкой, "НоменклатураМеркурий");
			Если ИнтеграцияВЕТИСЗагрузкаОбъектов.СсылкаСуществует(НоменклатураМеркурий, "НоменклатураМеркурий") Тогда
				НоменклатураМеркурий_Объект = НоменклатураМеркурий.ПолучитьОбъект();
			Иначе
				НоменклатураМеркурий_Объект = Справочники.НоменклатураМеркурий.СоздатьЭлемент();
				НоменклатураМеркурий_Объект.УстановитьСсылкуНового(НоменклатураМеркурий);
			КонецЕсли;
			
			ЗаполнитьНоменклатуруПоДаннымXDTO(НоменклатураМеркурий_Объект, Элемент); 
			
			НоменклатураМеркурий_Объект.Записать();
			
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры

Создание ВСД на перевозку со сменой владельца

Данный пример "вырван из контекста" конфигурации, в рамках которой используется модуль обмена. Он демонстрирует более сложные случаи запросов в Меркурий. Некоторые операции в Меркурий требуют подготовки достаточно сложного XML-документа запроса. Для упрощения его подготовки в модуле обмена есть функции, которые принимают в качестве параметров элементы описания тех или иных объектов запроса в Меркурий (ПартияПоЗаписиСкладскогоЖурнала, ТочкаМаршрутаСледования, Отправитель, Получатель, ИнформацияОТранспорте и т.д.), а в качестве результата выдают строку XML-описания (consignment, routePoint, consignor, consignee и т.д.).

// Отправлка в Меркурий заявку на подготовку ВСД на перевозку со сменой владельца. Возвращает ИД заявки.
// Параметры:
//	ОтправительХС -  СправочникСсылка.ХозСубъекты - Хоз. субъект - отправитель
//	ОтправительПлощадка -  СправочникСсылка.ПлощадкиВЕТИС - Площадка отправитель
//	ПолучательХС -  СправочникСсылка.ХозСубъекты - Хоз. субъект - получатель
//	ПолучательПлощадка -  СправочникСсылка.ПлощадкиВЕТИС - Площадка получатель
//	ТаблицаОтгружаемыхПартий -  Таблица значений - Таблица для заполнения получается функцией ПустаяТаблицаОтгружаемыхПартий()
//	Транспорт -  СправочникСсылка.ТранспортВЕТИС -
//	НомерТТН -  Строка - 
//	ДатаТТН -  Дата - 
//	ТипТТН -  Число - тип документа, см. функцию ТТН в модуле обмена
//	ДатаДоставки -  Дата - 
//	ПеревозчикХС -  СправочникСсылка.ХозСубъекты - Хоз. субъект - перевозчик
//	ТаблицаТочекМаршрутаСледования -  тип Таблица значений - Таблица для заполнения точек маршрута следования, получается функцией ПустаяТаблицаТочекМаршрута()
//	ТаблицаСвязанныхДокументов -  тип Таблица значений - Таблица для заполнения связанных документов, получается функцией ПустаяТаблицаСвязанныхДокументов()
//
Функция ОтправитьЗаявкуПодготовитьВСДНаПеревозкуСоСменойВладельца(
	ОтправительХС, 
	ОтправительПлощадка, 
	ПолучательХС, 
	ПолучательПлощадка, 
	ТаблицаОтгружаемыхПартий, 
	Транспорт, 
	НомерТТН, 
	ДатаТТН, 
	ТипТТН, 
	ДатаДоставки = Неопределено, 
	ПеревозчикХС = Неопределено, 
	ТаблицаТочекМаршрутаСледования = Неопределено, 
	ТаблицаСвязанныхДокументов = Неопределено
	) Экспорт
	
	ОбработкаОбменаВЕТИС = Обработки.ОбменДаннымиВЕТИС.Создать();
	
	МассивПартий = Новый Массив;
	МассивДопСведенийВСД = Новый Массив;
	
	НомерСтроки = 1;
	Для каждого ТаблицаОтгружаемыхПартийСтрока ИЗ ТаблицаОтгружаемыхПартий Цикл
		ИдПартии = "id" + Формат(НомерСтроки, "ЧГ=0");
		ТаблицаОтгружаемыхПартийСтрока.ИдПартии = ИдПартии;
		
		Партия = ОбработкаОбменаВЕТИС.ПартияПоЗаписиСкладскогоЖурнала(
			ИдПартии,
			ТаблицаОтгружаемыхПартийСтрока.ЗСЖ.GUID,
			ТаблицаОтгружаемыхПартийСтрока.Количество,
			ТаблицаОтгружаемыхПартийСтрока.ЗСЖ.ЕдиницаИзмеренияВЕТИС.GUID);
			
		МассивПартий.Добавить(Партия);
		
		ДопСведенияВСД = ОбработкаОбменаВЕТИС.ДопСведенияВСД(
			ИдПартии,
			ТаблицаОтгружаемыхПартийСтрока.Цель.GUID,
			?(ТаблицаОтгружаемыхПартийСтрока.КонтрольГосВетВрачем = Неопределено, Истина, ТаблицаОтгружаемыхПартийСтрока.КонтрольГосВетВрачем),
			?(ТаблицаОтгружаемыхПартийСтрока.РезультатПроведенияВСЭ = Неопределено, "VSERAW", ТаблицаОтгружаемыхПартийСтрока.РезультатПроведенияВСЭ),
			?(ТаблицаОтгружаемыхПартийСтрока.БлагополучиеМестности = Неопределено, "Местность благополучна по заразным болезням животных", ТаблицаОтгружаемыхПартийСтрока.БлагополучиеМестности));
			
		МассивДопСведенийВСД.Добавить(ДопСведенияВСД);		
		
		НомерСтроки = НомерСтроки + 1;
	КонецЦикла;
	
	Если ТаблицаТочекМаршрутаСледования = Неопределено Тогда
		МассивТочекМаршрутаСледования = "";
	Иначе
		МассивТочекМаршрутаСледования = Новый Массив;
		
		НомерТочкиМаршрута = 1;
		Для каждого ТаблицаТочекМаршрутаСледованияСтрока Из ТаблицаТочекМаршрутаСледования Цикл
			ТочкаМаршрутаСледования = ОбработкаОбменаВЕТИС.ТочкаМаршрутаСледования(
				НомерТочкиМаршрута,
				ТаблицаТочекМаршрутаСледованияСтрока.ПлощадкаВЕТИС.GUID,
				ТаблицаТочекМаршрутаСледованияСтрока.Перегрузка,
				?(ЗначениеЗаполнено(ТаблицаТочекМаршрутаСледованияСтрока.ТипТранспорта), ТаблицаТочекМаршрутаСледованияСтрока.ТипТранспорта, 1),
				?(ЗначениеЗаполнено(ТаблицаТочекМаршрутаСледованияСтрока.НомерТранспорта), ТаблицаТочекМаршрутаСледованияСтрока.НомерТранспорта, Строка(Символы.НПП)));
				
			НомерТочкиМаршрута = НомерТочкиМаршрута + 1;
			
			МассивТочекМаршрутаСледования.Добавить(ТочкаМаршрутаСледования);
		КонецЦикла;
	КонецЕсли;
	
	Если ТаблицаСвязанныхДокументов = Неопределено Тогда
		МассивСвязанныхДокументов = "";
	Иначе
		МассивСвязанныхДокументов = Новый Массив;
		
		Для каждого ТаблицаСвязанныхДокументовСтрока Из ТаблицаСвязанныхДокументов Цикл
			СвязанныйДокумент = ОбработкаОбменаВЕТИС.СвязанныйДокумент(
				ТаблицаСвязанныхДокументовСтрока.Номер,
				ТаблицаСвязанныхДокументовСтрока.Дата,
				Перечисления.ТипыДокументовВЕТИС.ПолучитьНомер(ТаблицаСвязанныхДокументовСтрока.Тип),
				ТаблицаСвязанныхДокументовСтрока.ТипСвязи);
			
			МассивСвязанныхДокументов.Добавить(СвязанныйДокумент);
		КонецЦикла;
	КонецЕсли;
	
	ИдЗаявки = ОбработкаОбменаВЕТИС.ПодготовитьТранспортнуюПартию(
		ОтправительХС.GUID,
		ДатаДоставки,
		ОбработкаОбменаВЕТИС.Отправитель(
			ОтправительХС.GUID,
			ОтправительПлощадка.GUID),
		ОбработкаОбменаВЕТИС.Получатель(
			ПолучательХС.GUID,
			ПолучательПлощадка.GUID),
		МассивПартий,
		,
		ИнформацияОТранспорте(Транспорт, ОбработкаОбменаВЕТИС),
		"FROZEN",
		ОбработкаОбменаВЕТИС.ТТН(
			НомерТТН,
			ДатаТТН,
			1),
		МассивДопСведенийВСД,
		МассивТочекМаршрутаСледования,
		МассивСвязанныхДокументов);
		
	Возврат ИдЗаявки;
	
	
КонецФункции

В заключение отмечу, что работа с Меркурием на "низком уровне" (отправка XML запросов, обработка ответов) - это сомнительное удовольствие, которое доставит радость разве что любителям приключений. Найти ошибку в сложном запросе бывает не так просто (особенно если у вас еще нет опыта работы с Меркурием). Но если проверенные готовые решения вам не подходят, то данная обработка в любом случае поможет сэкономить много времени.

Проверено на платформе 8.3.13.1644.

ВЕТИС Меркурий API

См. также.

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

Управляйте учетной политикой раздельного учета ГОЗ в 1С:Бухгалтерия 3.0 ПРОФ/КОРП и УХ 3.2. Отчеты по исполнению госконтрактов, расчетно-калькуляционные материалы и контроль операций для исполнения в срок. Готовое расширение подходит для всех бухгалтеров и руководителей производства, помогая вести правильный учет по гособоронзаказу в соответствии 275-ФЗ. Профессиональный консалтинг и регулярные обновления продукта.

28.08.2020    212993    1749    vvmanannikov    133    

875

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

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

8970 руб.

15.12.2015    167717    736    364    

393

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

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

30000 руб.

16.08.2019    89261    212    85    

132

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

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

15000 руб.

14.10.2020    60337    366    101    

290

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

Универсальная конфигурация ХамелеонЗерно для взаимодействия с системой ФГИС Зерно (тестовый+рабочий контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Работа через API 1.0.7 и на API 1.0.8. Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом ФГИС Зерно, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе ФГИС Зерно и наоборот.

20400 руб.

27.06.2023    3514    14    0    

12

SALE! 40%

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

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

18000 10800 руб.

28.03.2023    11479    38    9    

44

Регламентированный учет и отчетность Розничная торговля Файловый обмен (TXT, XML, DBF), FTP Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Розница 2 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Акцизы Платные (руб)

Обработка формирует файлы алкогольных декларации форм 7,8 с 1С:Розницы от 2.3.8. ,Управление Торговлей 11.х Проста в использовании. Формат выгрузки деклараций: 4.4, есть возможность объединять сформированные декларации из файлов XML.Дополнительно можно делать передачу в рег2 по остаткам и списывать остатки ЕГАИС по данным базы (пиво)

3600 руб.

20.07.2016    172268    2274    1703    

1020
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1409775 05.05.21 19:38 Сейчас в теме
Как работает эта обработка не совсем понял
2. wonderboy 383 05.05.21 20:54 Сейчас в теме
(1) В публикации есть примеры использования. Обработка - это программный модуль, который вы можете использовать в своих доработках.
3. user1409775 05.05.21 21:23 Сейчас в теме
А можно использовать в УТ 10.3?
4. wonderboy 383 05.05.21 22:10 Сейчас в теме
5. пользователь 24.06.21 17:11
Сообщение было скрыто модератором.
...
6. пользователь 25.06.21 01:05
Сообщение было скрыто модератором.
...
7. пользователь 08.07.21 17:14
Сообщение было скрыто модератором.
...
8. tew432brp 08.07.21 19:39 Сейчас в теме
Владимир, скажите - может ли Ваша обработка работать на платформе 8.3.5?
И если можете ответить подробнее что примерно понадобится доработать в коде для интеграции с старой версией УТ 11?
9. wonderboy 383 08.07.21 21:01 Сейчас в теме
(8) На 8.3.5 - думаю НЕ будет. Т.к. используется отправка HTTP-запросов, которая если мне не изменяет память стала поддерживаться платформой начиная с версии 8.3.6.
По поводу того, что потребуется доработать в коде - тут я вопрос не совсем понимаю. Обработка - это программный модуль, который вы можете использовать в своих доработках. Это как автомобильное шасси, на базе которого можно собрать автомобиль (который может быть очень разным).
10. i.d.kulikov 29.03.23 20:58 Сейчас в теме
Добрый вечер
Подскажите, пожалуйста, обработка актуальна?
11. wonderboy 383 29.03.23 21:13 Сейчас в теме
(10) Скажу честно - не знаю. Мы делали эту обработку и обмен на базе нее несколько лет назад. Но пока к нам не обращались чтобы что-то доделать/переделать.
Оставьте свое сообщение