Дубли на сайте ВетИС и незавершенные исходящие документы ВетИС

1. Kazaams 07.04.20 10:13 Сейчас в теме
Работаем на интеграционном решении 1С — Бухгалтерия предприятия, редакция 3.0 (3.0.76.77).
При оформлении исходящих транспортных операций ВетИС, начиная с 06.04.2020 происходит следующее:
— в ВетИС создается несколько исходящих документов ВСД — два или четыре, вместо одного.
— в 1С не завершается процесс оформления исходящего документа ВСД, который получает статус "К оформлению(обрабатывается)"



Воспользовался в Протоколе обмена такого исходящего документа ВСД кнопкой "Рассчитать статус". В итоге получил причину ошибки: "Запрос на оформление транспортной партии по документу "Исходящая транспортная операция ВетИС 00000002191 от 07.04.2020 8:19:26" выполнялся с 07.04.2020 13:06 по 07.04.2020 13:10. Количество повторов 4. Ответ от сервиса не получен."

На одном из форумов нашел объяснение появления дублей в УТ 11: "1С шлет много запросов с маленькими интервалами, Меркурий на запрос состояния дает отказ из за этого. И 1С не узнает что документ создан и отправляет его повторно. Исправление мне в 2х местах уже радикально сократило число отказов."

Функцию, которую правили в УТ 11, называется ВремяОжиданияИтерации из общего модуля ИнтеграцияВЕТИСВызовСервера. В БП 3.0 она выглядит так:
Функция ВремяОжиданияИтерации(НомерИтерации)
	
	Если НомерИтерации <= 1 Тогда
		ВремяОжидания = 5;
	ИначеЕсли НомерИтерации < 15 Тогда
		ВремяОжидания = 5 * Pow(1.4, НомерИтерации - 1);
	Иначе
		ВремяОжидания = 120;
	КонецЕсли;
	
	Возврат ВремяОжидания;
	
КонецФункции
Показать


Исправленная функция из УТ 11 пользователю немного помогла, но не исправила проблему создания дублей. Исправленная функция:
Функция ВремяОжиданияИтерации(НомерИтерации)
   
    Если НомерИтерации < 10 Тогда // исправлено было 15
        ВремяОжидания = 5; // исправлено было 1
        Для осНомерИтерации = 2 По НомерИтерации Цикл // исправлено было НомерИтерации
            ВремяОжидания = ВремяОжидания * 1.4;
        КонецЦикла;
    Иначе
        ВремяОжидания = 120;
    КонецЕсли;
   
    Возврат ВремяОжидания;
   
КонецФункции
Показать


Подскажите, пожалуйста, как можно решить данную проблему создания дублей в ВетИС? Или может кто-нибудь уже сталкивался с этим
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alexeyvol 18.08.20 16:23 Сейчас в теме
Также испытываем проблему с задвоениями для исходящих траспортных операций в УТ11 (релиз - конец прошлого года).
Ваши исправления насколько помогли в решении этой проблемы в УТ11? Имеет смысл их применить на например на старом релизе конфигурации?

Сейчас вот такой код
Функция ВремяОжиданияИтерации(НомерИтерации)
	
	Если НомерИтерации <= 1 Тогда
		ВремяОжидания = 5;
	ИначеЕсли НомерИтерации < 15 Тогда
		ВремяОжидания = 5 * Pow(1.4, НомерИтерации - 1);
	Иначе
		ВремяОжидания = 120;
	КонецЕсли;
	
	Возврат ВремяОжидания;
	
КонецФункции
Показать
3. alex_phantom 18.12.20 12:12 Сейчас в теме
Добрый день!
Удалось ли решить проблему?
У нас тоже самое после обновлений.
На релизе 11.4.10.75 всё работает нормально при переходе на любой другой начинается эта проблема.
Началось с релиза 11.4.10.94. Сейчас стоит 11_4_13_51. те же проблемы.
Исправления от 1С не помогают. Видимо они этой проблемы не видят.
Может уже нашлось решение. Не возможно работать, хоть опять откатывайся.
4. kondi55 10 19.01.21 11:52 Сейчас в теме
У меня такая же проблема. Решения пока не найдено. Релиз 11.4.13.103
5. alex_phantom 27.07.21 13:10 Сейчас в теме
(4)Удалось.
Все проблемы были в разнице времени клиента и сервера 1С.
И не только времени, а и часового пояса.
Это и в торговле и в другом месте в УНФ уже проверено.
Причём до какого то релиза всё проходило, иногда спотыкалось из за обновления.
А в случае УНФ в один прекрасный понедельник появилось расхождение на час из за разницы часовых поясов сервера и клиента.
Хотя раньше оно было, но меркурий или 1С на него не обращало внимания.

<issueDate>2021-07-26T10:47:01+03:00</issueDate>
<rcvDate>2021-07-26T09:46:59+03:00</rcvDate>

Причём в основном проходили накладные с маленьким количеством строк, но не всегда.

Установили обновление часовых поясов и пошло нормально
<issueDate>2021-07-27T12:32:11+03:00</issueDate>
<rcvDate>2021-07-27T12:32:10+03:00</rcvDate>

Так что смотрите на время в протоколах.
6. Izaak 03.02.23 15:09 Сейчас в теме
Конфигурация УНФ 1.6.27.295. Регулярно дублируются и даже затраиваются исходящие транспортные ВСД. Никакие изменения любых параметров в настройках оптимизации ВЕТИС не помогают. Изменения часовых поясов не помогает, работают в терминале клиент и сервер на одной машине. Программа выдает несколько версий одинаковых запросов с интервалом в пару секунд и на все получает ответы. 10-15 задвоенных документов "Исходящая транспортная операция" в день из 200, в каждом больше десятка ВСД. Бывает даже задвоение производственных операций. Это очень мешает, приходится выявлять дубли, идти в web меркурия и аннулировать их.
Протокол обмена при этом выглядит так:
Запрос на оформление транспортной партии. Версия 1
Запрос на оформление транспортной партии. Версия 2
Запрос на оформление транспортной партии. Версия 3
Ответ на запрос оформления транспортной партии
Ответ на запрос оформления транспортной партии
Ответ на запрос оформления транспортной партии

После долгой и мучительной борьбы с задвоением ВСД у себя сделал такую заплатку : в функцию ЗапросНаОформлениеТранспортнойПартииXML (в модуле менеджера) добавил следующий код:
	    
//после строки 	Шапка = ДанныеДокумента.Шапка[0];
	
Если Шапка.ПоследнийНомерВерсии>0 тогда

	ЕстьОшибкиОформленияТранспортнойПартиии = Ложь;
	ДанныеПоследнегоСообщения = Справочники.ВЕТИСПрисоединенныеФайлы.ПоследнееСообщение(ДокументСсылка, "СОшибкой");
	Если ДанныеПоследнегоСообщения <> Неопределено Тогда
		Если ДанныеПоследнегоСообщения.Операция = Перечисления.ВидыОперацийВЕТИС.ОтветНаЗапросОформленияТранспортнойПартии Тогда   
			ЕстьОшибкиОформленияТранспортнойПартиии = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ЕстьОшибкиОформленияТранспортнойПартиии = Ложь тогда  
		Возврат СообщенияXML;
	КонецЕсли;
		
КонецЕсли;	
Показать


Смысл такой: если в документе уже были отправлены запросы на оформление транспортной партии и ответов с ошибками не приходило, тогда возвращаем пустой массив сообщений.
Пока такой костыль мне помогает, решил поделиться с вами.
user5300; Natain14; DigitalMan; +3 Ответить
7. user5300 1063 19.06.24 08:19 Сейчас в теме
Спасибо, Izaak ,
Но в УТ 11 это не сработало, перестало отрабатывать гиперссылку "Статус: Передайте данные"

Добавил дополнительную проверку:

////////////////////////////////////////////////////////////­/////////////////////////////////////////////////
.......................................................
ДанныеДокумента = ДанныеИсходящейПартии(ДокументСсылка, Операция);
	Шапка = ДанныеДокумента.Шапка[0];
    #ВСТАВКА
	
		ОтправленоРанее = Проверка_ПоследнееСообщение(ДокументСсылка) <> Неопределено;
		Если ОтправленоРанее тогда  
		    Возврат СообщенияXML;
		КонецЕсли;
	
	#КОНЕЦВСТАВКИ
	СообщениеXML = ИнтеграцияВЕТИСКлиентСервер.СтруктураСообщенияXML();
	СообщениеXML.Операция = Операция;
	СообщениеXML.Документ = ДокументСсылка;
	СообщениеXML.Описание = ИнтеграцияВЕТИС.ОписаниеОперацииПередачиДанных(Операция, ДокументСсылка);
...........................................................................................................
////////////////////////////////////////////////////////////­/////////////////////////////////////////////////


Функция Проверка_ПоследнееСообщение(ДокументСсылка) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос("ВЫБРАТЬ
		|	ВЕТИСПрисоединенныеФайлы.Ссылка КАК Ссылка,
		|	ВЕТИСПрисоединенныеФайлы.ТипСообщения КАК ТипСообщения,
		|	ВЕТИСПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла,
		|	ВЕТИСПрисоединенныеФайлы.ФорматОбмена КАК ФорматОбмена,
		|	ВЕТИСПрисоединенныеФайлы.ДатаСоздания КАК ДатаСоздания,
		|	ВЕТИСПрисоединенныеФайлы.Операция КАК Операция,
		|	ВЫРАЗИТЬ(ВЕТИСПрисоединенныеФайлы.Описание КАК СТРОКА(512)) КАК Описание,
		|	ОтветыНаПередачуДанных.Ссылка КАК СообщениеОтвета,
		|	ОтветыНаПередачуДанных.ДатаСоздания КАК ДатаСозданияОтвета
		|ПОМЕСТИТЬ втСообщенияПредварительно
		|ИЗ
		|	Справочник.ВЕТИСПрисоединенныеФайлы КАК ВЕТИСПрисоединенныеФайлы
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВЕТИСПрисоединенныеФайлы КАК ОтветыНаПередачуДанных
		|		ПО (ВЕТИСПрисоединенныеФайлы.Ссылка = ОтветыНаПередачуДанных.СообщениеОснование)
		|			И (ВЕТИСПрисоединенныеФайлы.Операция = ОтветыНаПередачуДанных.Операция)
		|			И (ОтветыНаПередачуДанных.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовИС.Входящий))
		|ГДЕ
		|	ВЕТИСПрисоединенныеФайлы.Документ = &Документ
		|;

		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	СообщенияПредварительно.Ссылка КАК Ссылка,
		|	МИНИМУМ(СообщенияПредварительно.ДатаСозданияОтвета) КАК ДатаПервогоОтвета,
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СообщенияПредварительно.СообщениеОтвета) КАК КоличествоОтветов
		|ПОМЕСТИТЬ втСведенияОбОтветах
		|ИЗ
		|	втСообщенияПредварительно КАК СообщенияПредварительно

		|СГРУППИРОВАТЬ ПО
		|	СообщенияПредварительно.Ссылка
		|;

		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	СообщенияПредварительно.Ссылка КАК Ссылка,
		|	СообщенияПредварительно.ТипСообщения КАК ТипСообщения,
		|	СообщенияПредварительно.ВладелецФайла КАК ВладелецФайла,
		|	СообщенияПредварительно.ФорматОбмена КАК ФорматОбмена,
		|	СообщенияПредварительно.ДатаСоздания КАК ДатаСоздания,
		|	СообщенияПредварительно.Операция КАК Операция,
		|	СообщенияПредварительно.Описание КАК Описание,
		|	СообщенияПредварительно.СообщениеОтвета КАК СообщениеОтвета,
		|	ВЫБОР
		|		КОГДА СведенияОбОтветах.ДатаПервогоОтвета ЕСТЬ NULL
		|			ТОГДА СообщенияПредварительно.ДатаСоздания
		|		КОГДА СведенияОбОтветах.ДатаПервогоОтвета = СообщенияПредварительно.ДатаСозданияОтвета
		|			ТОГДА СообщенияПредварительно.ДатаСоздания
		|		ИНАЧЕ СообщенияПредварительно.ДатаСозданияОтвета
		|	КОНЕЦ КАК ДатаОтправки,
		|	ВЫБОР
		|		КОГДА СведенияОбОтветах.КоличествоОтветов ЕСТЬ NULL
		|			ТОГДА 0
		|		ИНАЧЕ СведенияОбОтветах.КоличествоОтветов
		|	КОНЕЦ КАК КоличествоЗапросов
		|ПОМЕСТИТЬ втСообщения
		|ИЗ
		|	втСообщенияПредварительно КАК СообщенияПредварительно
		|		ЛЕВОЕ СОЕДИНЕНИЕ втСведенияОбОтветах КАК СведенияОбОтветах
		|		ПО СообщенияПредварительно.Ссылка = СведенияОбОтветах.Ссылка
		|;
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ ПЕРВЫЕ 1
		|	Сообщения.Ссылка КАК Сообщение,
		|	Сообщения.ТипСообщения КАК ТипСообщения,
		|	Сообщения.ВладелецФайла КАК ХозяйствующийСубъект,
		|	Сообщения.ФорматОбмена КАК ФорматОбмена,
		|	Сообщения.ДатаСоздания КАК ДатаСоздания,
		|	Сообщения.Операция КАК Операция,
		|	Сообщения.Описание КАК Описание,
		|	Сообщения.ДатаОтправки КАК ДатаОтправки,
		|	Сообщения.КоличествоЗапросов КАК КоличествоЗапросов
		|ИЗ
		|	втСообщения КАК Сообщения
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОчередьСообщенийВЕТИС КАК ОчередьСообщенийВЕТИС
		|		ПО (Сообщения.Ссылка = ОчередьСообщенийВЕТИС.Сообщение)
		|ГДЕ
		|	Сообщения.ТипСообщения = &ТипСообщения
		|	И Сообщения.Операция = &Операция
		|	И НЕ Сообщения.Описание = """"
		|УПОРЯДОЧИТЬ ПО
		|	Сообщения.ДатаОтправки УБЫВ,
		|	ВЫБОР
		|		КОГДА Сообщения.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовИС.Исходящий)
		|			ТОГДА 0
		|		ИНАЧЕ 1
		|	КОНЕЦ УБЫВ");
	
	Запрос.УстановитьПараметр("Документ", ДокументСсылка);
	Запрос.УстановитьПараметр("ТипСообщения", Перечисления.ТипыЗапросовИС.Исходящий);
	Запрос.УстановитьПараметр("Операция", Перечисления.ВидыОперацийВЕТИС.ЗапросНаОформлениеТранспортнойПартии);
		
	Выборка = Запрос.Выполнить().Выбрать();
	Если Не Выборка.Следующий() Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	ВозвращаемоеЗначение = Новый Структура;
	ВозвращаемоеЗначение.Вставить("Сообщение");
	ВозвращаемоеЗначение.Вставить("ТипСообщения");
	ВозвращаемоеЗначение.Вставить("ХозяйствующийСубъект");
	ВозвращаемоеЗначение.Вставить("ФорматОбмена");
	ВозвращаемоеЗначение.Вставить("ДатаСоздания");
	ВозвращаемоеЗначение.Вставить("Операция");
	ВозвращаемоеЗначение.Вставить("Описание");
	ВозвращаемоеЗначение.Вставить("ДатаОтправки");
	ВозвращаемоеЗначение.Вставить("КоличествоЗапросов");
	
	ЗаполнитьЗначенияСвойств(ВозвращаемоеЗначение, Выборка);
	
	Возврат ВозвращаемоеЗначение;
	
КонецФункции

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот