Блокировки при синхронизации

1. 22.10.21 16:53 Сейчас в теме
Доброго времени суток, уважаемые форумчане!

Передо мной была поставлена задача разработать в типовой конфигурации УТ11 документ вида "ВходящееОбращение". Создаваться эти документы должны автоматически при создании входящих электронных писем.
Кроме того, к этим документам должны быть прикреплены объекты справочника - присоединенные файлы.
Решил я задачу таким образом:
Добавил в конфигурацию подписку на событие "ПередЗаписью" документа типовой конфигурации "ЭлектронноеПисьмоВходящее".
В процедуре обработки подписки вызывается разработанная функция по созданию документа - входящего обращения.
Также добавлена подписка на событие "ПриЗаписи" элемента справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы", в которой вызывается функция, отыскивающая соответствующее письму-владельцу присоединенного файла документ входящего обращения и прикрепляющая к входящему обращению копию присоединенного файла.
Создание входящих электронных писем происходит при выполнении регламентного задания, поэтому все эти процедуры выполняются в фоновом режиме.
Этот алгоритм безотказно работал, пока в базе не начали использовать синхронизацию с Бухгалтерией по планам обмена.
Если запущена синхронизация (вручную), и при этом выполняется регламентное задание по получению и отправке электронных писем, то 1С сначала зависает, потом обработка, в которой запущена синхронизация, вылетает с сообщением об ошибке блокировки.
Когда эти подписки на события удаляются, синхронизация начинает отрабатывать без ошибок.
Подскажите, пожалуйста, в каком направлении копать, чтобы отловить причину этих ошибок блокировки?

Прилагаю фрагмент технлогического журнала. Модули и функции с префиксом "ДВО_" - это мои доработки.
Прикрепленные файлы:
Логи.txt
Найденные решения
6. gybson 25.10.21 09:08 Сейчас в теме
(5)Да письмо будет существовать, но это разве проблема? Исправите ошибку в регламентном задании и входящее обращение сформируется. А вот когда письмо не создается из-за ошибок создания связанных элементов, вот это проблема.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 22.10.21 17:09 Сейчас в теме
(1) Что это за объекты InfoRg60677, InfoRg64356 и Reference59926?
3. Ivan_Stepnov 22.10.21 17:37 Сейчас в теме
RustamZz,
Reference59926 - это таблица SQL, в которой хранится добавленный мной справочник "ДВО_ВходящиеОбращенияПрисоединенныеФайлы"
InfoRg60677 - таблица добавленного мной регистра сведений "ДВО_НаличиеПрисоединенныхФайлов"
nfoRg64356 - таблица регистра сведений "РезультатыОбменаДанными" из типовой УТ11
4. gybson 22.10.21 23:26 Сейчас в теме
"ПриЗаписи" идет в неявной транзакции, вы блокируете справочник. Откажитесь от событий и формируйте документ в регламентном задании с периодом подходящим для ведения дел. В регламентном задании обрабатываете письма, в вашем событии ссылка на письмо, чтобы не обрабатывать дважды и вообще полезно.
5. Ivan_Stepnov 23.10.21 13:27 Сейчас в теме
(4)gybson, спасибо за помощь, к такому варианту я тоже склоняюсь. Тогда получается, что при записи эл.письма ничего не делать, а регламентным заданием просматривать созданные эл.письма и создавать документы входящих обращений на те эл.письма, для которых их нет? Или другой вариант - из события при записи эл.письма запускать фоновое задание на генерацию входящего обращения? В обоих случаях будет такая проблема - сейчас, если при формировании входящего обращения происходит ошибка, то отменяется и сама запись электронного письма, т.е. эл.письма без вход.обращений в базе появиться не могут. А при этих вариантах, если в фоновом задании произойдет ошибка, то отменить создание эл.письма уже не получится - оно уже будет существовать! Или можно как-то эту проблему обойти?
6. gybson 25.10.21 09:08 Сейчас в теме
(5)Да письмо будет существовать, но это разве проблема? Исправите ошибку в регламентном задании и входящее обращение сформируется. А вот когда письмо не создается из-за ошибок создания связанных элементов, вот это проблема.
7. Ivan_Stepnov 24.11.21 13:23 Сейчас в теме
Коллеги, благодарю за помощь!
Решил задачу так:
Оставил подписку на событие "ПередЗаписью" документа типовой конфигурации "ЭлектронноеПисьмоВходящее".
В процедуре обработки подписки запускается новое фоновое задание, в котором выполняется разработанная функция по созданию документа - входящего обращения. В качестве параметра-аргумента эта функция получает структуру, содержащую необходимые для создания входящего обращения данные входящего электронного письма.
Таким же образом работает подписка на событие "ПриЗаписи" элемента справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы" - запускается новое фоновое задание, в котором отыскивается соответствующее письму-владельцу присоединенного файла документ входящего обращения и прикрепляется к входящему обращению копия присоединенного файла.
Таким образом, создание входящего обращения и присоединенных файлов выведено в отдельные транзакции, выполняемые в фоновых процессах.
Пока работает без конфликтов.
Смущает то, что все эти выполненные фоновые задания с нулевой длительностью отображаются в списке фоновых заданий, вызываемом из "НСИ и Администрирование - Обслуживание - Регламентные и фоновые задания" и попадают в журнал регистрации, дополнительно увеличивая его размер.

Подскажите, пожалуйста, насколько такое решение приемлемо?
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Тестировщик 1С
Санкт-Петербург
зарплата от 60 000 руб. до 120 000 руб.
Полный день

Архитектор НСИ
Москва
зарплата от 250 000 руб. до 300 000 руб.
Полный день

Аналитик 1С
Санкт-Петербург
зарплата до 150 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 220 000 руб.
Полный день

Руководитель отдела разработки
Москва
зарплата от 200 000 руб. до 230 000 руб.
Полный день