Удаление ненужных сообщений в УТМ ЕГАИС

Публикация № 1092429

Администрирование - Чистка базы

процедура обработка очистка сообщений егаис ненужные ответы подтверждение ттн

3
Порой при получении сообщений из ЕГАИС товароучетная система ругается на ответы ЕГАИС, для которых не найден запрос. В большинстве случаев это ответы на запросы, отправленные другими устройствами (ATOL HUB-19, Эвотор и т.п.). Чтобы не засорять учетную систему и не занимать её время обработкой ненужных сообщений, в публикации рассмотрен способ их удаления перед обработкой нужных сообщений из ЕГАИС.

Конкретный случай:

Магазин крепкого алкоголя работает на двух кассах Эвотор, которые периодически в фоновом режиме отправляют в ЕГАИС запросы остатков, реквизитов контрагентов, перемещения в регистр 2 и другие запросы. Таким образом два Эвотора в среднем генерируют пару запросов в минуту в ЕГАИС! За несколько дней в УТМе накапливаются тысячи ответов, которые Эвоторы за собой не удаляют.

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

Для решения проблемы было решено добавить в код 1с перед обработкой сообщений ЕГАИС процедуру очистки ненужных ответов в УТМ ЕГАИС: 

Процедура УдалитьНаСервере()
	АдресРесурса = "/opt/out";
	HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
	Соединение = Новый HTTPСоединение(IPАдресУТМ, 8080,,,,0);
	
	HTTPОтвет = Соединение.Получить(HTTPЗапрос);
	ОтветМодуляЕГАИС = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(ОтветМодуляЕГАИС);
		
	ПостроительDOM = Новый ПостроительDOM;
	ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
	УзлыURL = ДокументDOM.ПолучитьЭлементыПоИмени("url");
	АдресРесурсаОстатков = "";
	Для каждого УзелURL Из УзлыURL Цикл
		АтрибутDOM = УзелURL.Атрибуты.ПолучитьИменованныйЭлемент("replyId");
		Если АтрибутDOM = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		ReplyID = АтрибутDOM.ТекстовоеСодержимое;
		АдресРесурса = СтрЗаменить(УзелURL.ТекстовоеСодержимое,"http://"+IPАдресУТМ+":8080","");
		АдресРесурса = СтрЗаменить(АдресРесурса, "http://127.0.0.1:8088", "");
		HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
		
		HTTPОтвет = Соединение.Получить(HTTPЗапрос);
	    СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
		Если СтрНайти(СтрокаОтвета, "DocType>WAYBILL") = 0 И
			 СтрНайти(СтрокаОтвета, "DocType>WayBillAct_v3") = 0 И
			 СтрНайти(СтрокаОтвета, "DocType>QueryNATTN") = 0 И
			 СтрНайти(СтрокаОтвета, "DocType>QueryResendDoc") = 0 Тогда
			 HTTPОтвет = Соединение.Удалить(HTTPЗапрос);
			 Сообщить(УзелURL.ТекстовоеСодержимое + " удален.");
		Иначе
			Сообщить(УзелURL.ТекстовоеСодержимое + " не удален.");
		КонецЕсли;
	КонецЦикла;
	ЧтениеXML.Закрыть();
КонецПроцедуры

Как видно из кода процедура обрабатывает только ответы (в сообщении должен быть replyId), поэтому, к примеру, входящие ТТНки не удалятся. Кроме того, не удалятся ответы на запрос необработанных ТТН, на повторный запрос ТТН и на запрос подтверждения ТТН.

Обработка с описанной процедурой приложена (УФ). Проверялась на платформе 1с 8.3.13.1513 на пустой конфигурации.

3

Скачать файлы

Наименование Файл Версия Размер
Удаление ненужных сообщений в УТМ ЕГАИС:
.epf 6,49Kb
12.07.19
0
.epf 6,49Kb Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение