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

16.04.23

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка реализующая API обмена данными 1С и ВЕТИС (Меркурий):
.epf 209,24Kb
21
21 Скачать (10 SM) Купить за 4 550 руб.

У нас эта обработка - основа для обмена Меркурий и УПП 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С v8.3 1С:Бухгалтерия 3.0 1С:Управление холдингом Химическая промышленность Государственные, бюджетные структуры Электротехника и микроэлектроника Машиностроение и приборостроение Металлургическая промышленность Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

44000 руб.

28.08.2020    357139    2386    137    

1059

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

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

55200 руб.

16.08.2019    93364    247    87    

143

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

Автоматизация учета ЕГАИС в 1С для оптовой торговли, производства и импорта. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

828 руб.

15.12.2015    171948    854    368    

404

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

Интеграция для работы 1С с ГИИС ДМДК. Государственная интегрированная информационная система в сфере контроля за оборотом драгоценных металлов, драгоценных камней и изделий из них на всех этапах этого оборота.

65000 руб.

12.04.2022    17188    142    30    

30

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

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

19200 руб.

14.10.2020    63780    385    103    

318

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

Внешняя обработка для инвентаризации кодов маркировки в системе "Честный знак". Позволяет быстро определить и списать коды маркировки проданного, испорченного, утраченного (полный перечень причин списания указан ниже)  товара, которые всё ещё числятся за организацией. Привести в соответствие остатки маркированного товара программы 1С и системы "Честного знака".

6540 руб.

09.01.2024    5540    74    19    

76

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

Работаете по контрактной схеме, сталкивались с проблемой, что в контракте жестко указаны наименование, цена, единица измерения товара. И не все готовы создавать новую номенклатуру под каждый контракт или менять наименование и единицу измерения для уже имеющейся. Тем более, бывает так, что контракт - это формальность. Контракт не описывает жесткие условия поставки, нужно соблюсти правильность в предоставлении документов. Данное решение позволит вам оперировать своей номенклатурой при оформлении реализаций по государственному контракту в УТ 11.5 и КА 2.5.11, в то же время выводить на печать документы, соответствующие данным контракта. Реализована выгрузка для сайта госзакупок (ЕИС) по 44-ФЗ.

60000 руб.

19.12.2022    12855    36    25    

21

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

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

6000 руб.

27.06.2023    4902    20    2    

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