Реализация 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    349405    2328    135    

1045

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

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

55200 руб.

16.08.2019    92990    244    87    

142

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

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

828 руб.

15.12.2015    171762    841    368    

404

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

Расширение конфигурации для УТ 11.5, КА 2.5 ,ERP 2.5 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

5000 руб.

27.08.2018    124912    1082    603    

894

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

Для 1С: УПП 1.3 предлагаем Вашему вниманию подсистему "Раздельный учет результатов финансово-хозяйственной деятельности организаций, выполняющих государственный оборонный заказ (раздельный учет ГОЗ)". Ключевые возможности подсистемы: - Автоматическое заполнение регламентированного отчета «Исполнение контрактов ГОЗ»; - Расшифровка показателей отчета об исполнении контрактов ГОЗ с детализацией до документов; - Контроль хозяйственных операций на соответствие требованиям Постановления Правительства № 47; - Автоматизированный ввод начальных данных по контрактам, заключенным ранее даты начала использования подсистемы.

90000 руб.

25.09.2020    31276    42    10    

41

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

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

6540 руб.

09.01.2024    5237    70    15    

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