Дубли на сайте ВетИС и незавершенные исходящие документы ВетИС
Работаем на интеграционном решении 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 она выглядит так:
Исправленная функция из УТ 11 пользователю немного помогла, но не исправила проблему создания дублей. Исправленная функция:
Подскажите, пожалуйста, как можно решить данную проблему создания дублей в ВетИС? Или может кто-нибудь уже сталкивался с этим
При оформлении исходящих транспортных операций ВетИС, начиная с 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;
КонецЕсли;
Возврат ВремяОжидания;
КонецФункции
ПоказатьПодскажите, пожалуйста, как можно решить данную проблему создания дублей в ВетИС? Или может кто-нибудь уже сталкивался с этим
Прикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Также испытываем проблему с задвоениями для исходящих траспортных операций в УТ11 (релиз - конец прошлого года).
Ваши исправления насколько помогли в решении этой проблемы в УТ11? Имеет смысл их применить на например на старом релизе конфигурации?
Сейчас вот такой код
Ваши исправления насколько помогли в решении этой проблемы в УТ11? Имеет смысл их применить на например на старом релизе конфигурации?
Сейчас вот такой код
Функция ВремяОжиданияИтерации(НомерИтерации)
Если НомерИтерации <= 1 Тогда
ВремяОжидания = 5;
ИначеЕсли НомерИтерации < 15 Тогда
ВремяОжидания = 5 * Pow(1.4, НомерИтерации - 1);
Иначе
ВремяОжидания = 120;
КонецЕсли;
Возврат ВремяОжидания;
КонецФункции
Показать
Добрый день!
Удалось ли решить проблему?
У нас тоже самое после обновлений.
На релизе 11.4.10.75 всё работает нормально при переходе на любой другой начинается эта проблема.
Началось с релиза 11.4.10.94. Сейчас стоит 11_4_13_51. те же проблемы.
Исправления от 1С не помогают. Видимо они этой проблемы не видят.
Может уже нашлось решение. Не возможно работать, хоть опять откатывайся.
Удалось ли решить проблему?
У нас тоже самое после обновлений.
На релизе 11.4.10.75 всё работает нормально при переходе на любой другой начинается эта проблема.
Началось с релиза 11.4.10.94. Сейчас стоит 11_4_13_51. те же проблемы.
Исправления от 1С не помогают. Видимо они этой проблемы не видят.
Может уже нашлось решение. Не возможно работать, хоть опять откатывайся.
(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>
Так что смотрите на время в протоколах.
Все проблемы были в разнице времени клиента и сервера 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>
Так что смотрите на время в протоколах.
Конфигурация УНФ 1.6.27.295. Регулярно дублируются и даже затраиваются исходящие транспортные ВСД. Никакие изменения любых параметров в настройках оптимизации ВЕТИС не помогают. Изменения часовых поясов не помогает, работают в терминале клиент и сервер на одной машине. Программа выдает несколько версий одинаковых запросов с интервалом в пару секунд и на все получает ответы. 10-15 задвоенных документов "Исходящая транспортная операция" в день из 200, в каждом больше десятка ВСД. Бывает даже задвоение производственных операций. Это очень мешает, приходится выявлять дубли, идти в web меркурия и аннулировать их.
Протокол обмена при этом выглядит так:
Запрос на оформление транспортной партии. Версия 1
Запрос на оформление транспортной партии. Версия 2
Запрос на оформление транспортной партии. Версия 3
Ответ на запрос оформления транспортной партии
Ответ на запрос оформления транспортной партии
Ответ на запрос оформления транспортной партии
После долгой и мучительной борьбы с задвоением ВСД у себя сделал такую заплатку : в функцию ЗапросНаОформлениеТранспортнойПартииXML (в модуле менеджера) добавил следующий код:
Смысл такой: если в документе уже были отправлены запросы на оформление транспортной партии и ответов с ошибками не приходило, тогда возвращаем пустой массив сообщений.
Пока такой костыль мне помогает, решил поделиться с вами.
Протокол обмена при этом выглядит так:
Запрос на оформление транспортной партии. Версия 1
Запрос на оформление транспортной партии. Версия 2
Запрос на оформление транспортной партии. Версия 3
Ответ на запрос оформления транспортной партии
Ответ на запрос оформления транспортной партии
Ответ на запрос оформления транспортной партии
После долгой и мучительной борьбы с задвоением ВСД у себя сделал такую заплатку : в функцию ЗапросНаОформлениеТранспортнойПартииXML (в модуле менеджера) добавил следующий код:
//после строки Шапка = ДанныеДокумента.Шапка[0];
Если Шапка.ПоследнийНомерВерсии>0 тогда
ЕстьОшибкиОформленияТранспортнойПартиии = Ложь;
ДанныеПоследнегоСообщения = Справочники.ВЕТИСПрисоединенныеФайлы.ПоследнееСообщение(ДокументСсылка, "СОшибкой");
Если ДанныеПоследнегоСообщения <> Неопределено Тогда
Если ДанныеПоследнегоСообщения.Операция = Перечисления.ВидыОперацийВЕТИС.ОтветНаЗапросОформленияТранспортнойПартии Тогда
ЕстьОшибкиОформленияТранспортнойПартиии = Истина;
КонецЕсли;
КонецЕсли;
Если ЕстьОшибкиОформленияТранспортнойПартиии = Ложь тогда
Возврат СообщенияXML;
КонецЕсли;
КонецЕсли;
ПоказатьСмысл такой: если в документе уже были отправлены запросы на оформление транспортной партии и ответов с ошибками не приходило, тогда возвращаем пустой массив сообщений.
Пока такой костыль мне помогает, решил поделиться с вами.
Спасибо, Izaak ,
Но в УТ 11 это не сработало, перестало отрабатывать гиперссылку "Статус: Передайте данные"
Добавил дополнительную проверку:
Но в УТ 11 это не сработало, перестало отрабатывать гиперссылку "Статус: Передайте данные"
Добавил дополнительную проверку:
//////////////////////////////////////////////////////////// /////////////////////////////////////////////////
.......................................................
ДанныеДокумента = ДанныеИсходящейПартии(ДокументСсылка, Операция);
Шапка = ДанныеДокумента.Шапка[0];
#ВСТАВКА
ОтправленоРанее = Проверка_ПоследнееСообщение(ДокументСсылка) <> Неопределено;
Если ОтправленоРанее тогда
Возврат СообщенияXML;
КонецЕсли;
#КОНЕЦВСТАВКИ
СообщениеXML = ИнтеграцияВЕТИСКлиентСервер.СтруктураСообщенияXML();
СообщениеXML.Операция = Операция;
СообщениеXML.Документ = ДокументСсылка;
СообщениеXML.Описание = ИнтеграцияВЕТИС.ОписаниеОперацииПередачиДанных(Операция, ДокументСсылка);
...........................................................................................................
//////////////////////////////////////////////////////////// /////////////////////////////////////////////////
Функция Проверка_ПоследнееСообщение(ДокументСсылка) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("ВЫБРАТЬ
| ВЕТИСПрисоединенныеФайлы.Ссылка КАК Ссылка,
| ВЕТИСПрисоединенныеФайлы.ТипСообщения КАК ТипСообщения,
| ВЕТИСПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла,
| ВЕТИСПрисоединенныеФайлы.ФорматОбмена КАК ФорматОбмена,
| ВЕТИСПрисоединенныеФайлы.ДатаСоздания КАК ДатаСоздания,
| ВЕТИСПрисоединенныеФайлы.Операция КАК Операция,
| ВЫРАЗИТЬ(ВЕТИСПрисоединенныеФайлы.Описание КАК СТРОКА(512)) КАК Описание,
| ОтветыНаПередачуДанных.Ссылка КАК СообщениеОтвета,
| ОтветыНаПередачуДанных.ДатаСоздания КАК ДатаСозданияОтвета
|ПОМЕСТИТЬ втСообщенияПредварительно
|ИЗ
| Справочник.ВЕТИСПрисоединенныеФайлы КАК ВЕТИСПрисоединенныеФайлы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВЕТИСПрисоединенныеФайлы КАК ОтветыНаПередачуДанных
| ПО (ВЕТИСПрисоединенныеФайлы.Ссылка = ОтветыНаПередачуДанных.СообщениеОснование)
| И (ВЕТИСПрисоединенныеФайлы.Операция = ОтветыНаПередачуДанных.Операция)
| И (ОтветыНаПередачуДанных.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовИС.Входящий))
|ГДЕ
| ВЕТИСПрисоединенныеФайлы.Документ = &Документ
|;
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| СообщенияПредварительно.Ссылка КАК Ссылка,
| МИНИМУМ(СообщенияПредварительно.ДатаСозданияОтвета) КАК ДатаПервогоОтвета,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СообщенияПредварительно.СообщениеОтвета) КАК КоличествоОтветов
|ПОМЕСТИТЬ втСведенияОбОтветах
|ИЗ
| втСообщенияПредварительно КАК СообщенияПредварительно
|СГРУППИРОВАТЬ ПО
| СообщенияПредварительно.Ссылка
|;
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| СообщенияПредварительно.Ссылка КАК Ссылка,
| СообщенияПредварительно.ТипСообщения КАК ТипСообщения,
| СообщенияПредварительно.ВладелецФайла КАК ВладелецФайла,
| СообщенияПредварительно.ФорматОбмена КАК ФорматОбмена,
| СообщенияПредварительно.ДатаСоздания КАК ДатаСоздания,
| СообщенияПредварительно.Операция КАК Операция,
| СообщенияПредварительно.Описание КАК Описание,
| СообщенияПредварительно.СообщениеОтвета КАК СообщениеОтвета,
| ВЫБОР
| КОГДА СведенияОбОтветах.ДатаПервогоОтвета ЕСТЬ NULL
| ТОГДА СообщенияПредварительно.ДатаСоздания
| КОГДА СведенияОбОтветах.ДатаПервогоОтвета = СообщенияПредварительно.ДатаСозданияОтвета
| ТОГДА СообщенияПредварительно.ДатаСоздания
| ИНАЧЕ СообщенияПредварительно.ДатаСозданияОтвета
| КОНЕЦ КАК ДатаОтправки,
| ВЫБОР
| КОГДА СведенияОбОтветах.КоличествоОтветов ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ СведенияОбОтветах.КоличествоОтветов
| КОНЕЦ КАК КоличествоЗапросов
|ПОМЕСТИТЬ втСообщения
|ИЗ
| втСообщенияПредварительно КАК СообщенияПредварительно
| ЛЕВОЕ СОЕДИНЕНИЕ втСведенияОбОтветах КАК СведенияОбОтветах
| ПО СообщенияПредварительно.Ссылка = СведенияОбОтветах.Ссылка
|;
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| Сообщения.Ссылка КАК Сообщение,
| Сообщения.ТипСообщения КАК ТипСообщения,
| Сообщения.ВладелецФайла КАК ХозяйствующийСубъект,
| Сообщения.ФорматОбмена КАК ФорматОбмена,
| Сообщения.ДатаСоздания КАК ДатаСоздания,
| Сообщения.Операция КАК Операция,
| Сообщения.Описание КАК Описание,
| Сообщения.ДатаОтправки КАК ДатаОтправки,
| Сообщения.КоличествоЗапросов КАК КоличествоЗапросов
|ИЗ
| втСообщения КАК Сообщения
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОчередьСообщенийВЕТИС КАК ОчередьСообщенийВЕТИС
| ПО (Сообщения.Ссылка = ОчередьСообщенийВЕТИС.Сообщение)
|ГДЕ
| Сообщения.ТипСообщения = &ТипСообщения
| И Сообщения.Операция = &Операция
| И НЕ Сообщения.Описание = """"
|УПОРЯДОЧИТЬ ПО
| Сообщения.ДатаОтправки УБЫВ,
| ВЫБОР
| КОГДА Сообщения.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовИС.Исходящий)
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ УБЫВ");
Запрос.УстановитьПараметр("Документ", ДокументСсылка);
Запрос.УстановитьПараметр("ТипСообщения", Перечисления.ТипыЗапросовИС.Исходящий);
Запрос.УстановитьПараметр("Операция", Перечисления.ВидыОперацийВЕТИС.ЗапросНаОформлениеТранспортнойПартии);
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат Неопределено;
КонецЕсли;
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("Сообщение");
ВозвращаемоеЗначение.Вставить("ТипСообщения");
ВозвращаемоеЗначение.Вставить("ХозяйствующийСубъект");
ВозвращаемоеЗначение.Вставить("ФорматОбмена");
ВозвращаемоеЗначение.Вставить("ДатаСоздания");
ВозвращаемоеЗначение.Вставить("Операция");
ВозвращаемоеЗначение.Вставить("Описание");
ВозвращаемоеЗначение.Вставить("ДатаОтправки");
ВозвращаемоеЗначение.Вставить("КоличествоЗапросов");
ЗаполнитьЗначенияСвойств(ВозвращаемоеЗначение, Выборка);
Возврат ВозвращаемоеЗначение;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот