Разработка #2805
Остановка групповой обработки при заблокированном документе
Дата начала:
28.06.2019
Срок завершения:
Готовность:
0%
Оценка временных затрат:
Описание
Об этом неудобстве писал ранее...
Столкнулись с определенной "проблемой".
Запущена "Групповая обработка Транзакция2", создали ВСД, Запускаем
Отправку ВСД. Все работает.
В этот момент КТО ТО открыл НЕ ОТПРАВЛЕННЫЙ еще документ "ВСД2
транзакция". Естественно получаем ошибку Документ заблокирован...
Все... процесс обработки последующих ВСД останавливается.
Предлагаю Подкорректировать две Функции
СохранитьСтатусЗапроса(док)
ПолучитьРезультат_ВСД(applicationID, докСсылка)
листинг из ИНТЕГРАЦИИ
//======================================================================
// [+]serpent, 03.05.2019
//отрабатываем проверку при записи, если документ заблокирован... Ругаемся и идем дальше
Функция СохранитьСтатусЗапроса(док) Экспорт
//стандартное поведение функции
ДокОб = СоздатьОбъект("Документ");
ДокОб.НайтиДокумент(док);
ДокОб.applicationID = СокрЛП(ГМ.Компонента.ApplicationId);
ДокОб.Статус = СокрЛП(ГМ.Компонента.Status);
//ДокОб.Комментарий = СокрЛП(Компонента.ErrorMessage);
Попытка
ДокОб.Записать();
Исключение
ГМ.СообщитьОбОшибке("Не удалось Записать документ "+док+" "+ОписаниеОшибки(), Сам(), "Интеграция(2037)");
Возврат 0;
КонецПопытки;
Сообщить(" статус = "+ДокОб.Статус );
//Если ПустоеЗначение(СокрЛП(ДокОб.Комментарий))=0 Тогда
// Сообщить("Ошибка: "+ДокОб.Комментарий);
//КонецЕсли;
Если ( СокрЛП(док.Статус)="COMPLETED") ИЛИ (СокрЛП(док.Статус)="CONFIRMED") Тогда
Попытка
// проведем только успешно выполненный запрос
ДокОб.Провести();
Исключение
ГМ.СообщитьОбОшибке("Не удалось провести документ "+док+" "+ОписаниеОшибки(), Сам(), "Интеграция(2043)");
Возврат 0;
КонецПопытки;
КонецЕсли;
Возврат 1;
КонецФункции
//======================================================================
// [+]serpent, 30.04.2019
//отрабатываем проверку при записи, если документ заблокирован... пропускаем
Функция ПолучитьРезультат_ВСД(applicationID, докСсылка) Экспорт
//стандартное поведение функции
Если ПустоеЗначение(applicationID)=1 Тогда
Сообщить("Пустая ссылка applicationID","!");
Возврат "Пустая ссылка applicationID";
КонецЕсли;
Сообщить("Отправляем запрос результата ["+applicationID+"] "+докСсылка );
//Результат = Компонента.SendRequestResult( applicationID );
Результат = ГМ.ПолучитьРезультатСервер( applicationID );
Если ПустоеЗначение(докСсылка)=0 Тогда
//СохранитьСтатусЗапроса(докСсылка); //[-]serpent, 30.04.2019
Если ГМ.СохранитьСтатусЗапроса(докСсылка)<>1 Тогда
Сообщить("Проблема с записью в документ...","!!!");
Возврат "Документ Заблокирован";
КонецЕсли;
ГМ.ЗагрузитьXML_ВСД( ГМ.Компонента.LogFilename, докСсылка);
КонецЕсли;
ГМ.ЗагрузитьXML_Партии( ГМ.Компонента.LogFilename );
ГМ.УдалитьXML( ГМ.Компонента.LogFilename );
ГМ.СохранитьОтветВДокументе(докСсылка);
Возврат Результат;
КонецФункции
Связанные редакции
История
#1 Обновлено кб99 Синявский Филипп больше 5 лет назад
ок спасибо, добавил
#2 Обновлено кб99 Синявский Филипп больше 5 лет назад
- Параметр Статус изменился с Новая на Тестирование
#3 Обновлено кб99 Синявский Филипп больше 5 лет назад
- Параметр Проект изменился с Sergey serpent1C на 1Cv7 ВСД в ГИС Меркурий
- Значение
кб99 Синявский Филипппараметра Назначена удалено
#4 Обновлено Pentyukhov Sergey больше 5 лет назад
Не хватает одного "Возврат 0;" в попытке Записать()
https://redmine.kb99.pro/boards/1/topics/1520?r=1559#message-1559
#5 Обновлено кб99 Синявский Филипп больше 5 лет назад
исправил
#6 Обновлено кб99 Синявский Филипп больше 5 лет назад
- Параметр Версия изменился на v7.1.13
#7 Обновлено кб99 Синявский Филипп больше 5 лет назад
- Параметр Статус изменился с Тестирование на Завершена
Остановка групповой обработки при заблокированном документе refs #2805
ВСД2_Транзакция - выбор партии по сроку годности Реализации refs #2841