Доброго времени суток, уважаемые форумчане!
Передо мной была поставлена задача разработать в типовой конфигурации УТ11 документ вида "ВходящееОбращение". Создаваться эти документы должны автоматически при создании входящих электронных писем.
Кроме того, к этим документам должны быть прикреплены объекты справочника - присоединенные файлы.
Решил я задачу таким образом:
Добавил в конфигурацию подписку на событие "ПередЗаписью" документа типовой конфигурации "ЭлектронноеПисьмоВходящее".
В процедуре обработки подписки вызывается разработанная функция по созданию документа - входящего обращения.
Также добавлена подписка на событие "ПриЗаписи" элемента справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы", в которой вызывается функция, отыскивающая соответствующее письму-владельцу присоединенного файла документ входящего обращения и прикрепляющая к входящему обращению копию присоединенного файла.
Создание входящих электронных писем происходит при выполнении регламентного задания, поэтому все эти процедуры выполняются в фоновом режиме.
Этот алгоритм безотказно работал, пока в базе не начали использовать синхронизацию с Бухгалтерией по планам обмена.
Если запущена синхронизация (вручную), и при этом выполняется регламентное задание по получению и отправке электронных писем, то 1С сначала зависает, потом обработка, в которой запущена синхронизация, вылетает с сообщением об ошибке блокировки.
Когда эти подписки на события удаляются, синхронизация начинает отрабатывать без ошибок.
Подскажите, пожалуйста, в каком направлении копать, чтобы отловить причину этих ошибок блокировки?
Прилагаю фрагмент технлогического журнала. Модули и функции с префиксом "ДВО_" - это мои доработки.
Передо мной была поставлена задача разработать в типовой конфигурации УТ11 документ вида "ВходящееОбращение". Создаваться эти документы должны автоматически при создании входящих электронных писем.
Кроме того, к этим документам должны быть прикреплены объекты справочника - присоединенные файлы.
Решил я задачу таким образом:
Добавил в конфигурацию подписку на событие "ПередЗаписью" документа типовой конфигурации "ЭлектронноеПисьмоВходящее".
В процедуре обработки подписки вызывается разработанная функция по созданию документа - входящего обращения.
Также добавлена подписка на событие "ПриЗаписи" элемента справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы", в которой вызывается функция, отыскивающая соответствующее письму-владельцу присоединенного файла документ входящего обращения и прикрепляющая к входящему обращению копию присоединенного файла.
Создание входящих электронных писем происходит при выполнении регламентного задания, поэтому все эти процедуры выполняются в фоновом режиме.
Этот алгоритм безотказно работал, пока в базе не начали использовать синхронизацию с Бухгалтерией по планам обмена.
Если запущена синхронизация (вручную), и при этом выполняется регламентное задание по получению и отправке электронных писем, то 1С сначала зависает, потом обработка, в которой запущена синхронизация, вылетает с сообщением об ошибке блокировки.
Когда эти подписки на события удаляются, синхронизация начинает отрабатывать без ошибок.
Подскажите, пожалуйста, в каком направлении копать, чтобы отловить причину этих ошибок блокировки?
Прилагаю фрагмент технлогического журнала. Модули и функции с префиксом "ДВО_" - это мои доработки.
Прикрепленные файлы:
Логи.txt
По теме из базы знаний
- Мьютексы в 1С 7.7
- Не гибкие блокировки в "1С:Предприятие 7.7", но чуть-чуть "Управляемые".
- Синхронизация после закрытия смены
- Блокировка изменения объектов через обмен данными в базе приемнике - для обменов в формате EnterpriseData
- Автоматическая блокировка доступа пользователей по данным 1С:Зарплата и управление персоналом, редакция 3.1
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
RustamZz,
Reference59926 - это таблица SQL, в которой хранится добавленный мной справочник "ДВО_ВходящиеОбращенияПрисоединенныеФайлы"
InfoRg60677 - таблица добавленного мной регистра сведений "ДВО_НаличиеПрисоединенныхФайлов"
nfoRg64356 - таблица регистра сведений "РезультатыОбменаДанными" из типовой УТ11
Reference59926 - это таблица SQL, в которой хранится добавленный мной справочник "ДВО_ВходящиеОбращенияПрисоединенныеФайлы"
InfoRg60677 - таблица добавленного мной регистра сведений "ДВО_НаличиеПрисоединенныхФайлов"
nfoRg64356 - таблица регистра сведений "РезультатыОбменаДанными" из типовой УТ11
"ПриЗаписи" идет в неявной транзакции, вы блокируете справочник. Откажитесь от событий и формируйте документ в регламентном задании с периодом подходящим для ведения дел. В регламентном задании обрабатываете письма, в вашем событии ссылка на письмо, чтобы не обрабатывать дважды и вообще полезно.
(4)gybson, спасибо за помощь, к такому варианту я тоже склоняюсь. Тогда получается, что при записи эл.письма ничего не делать, а регламентным заданием просматривать созданные эл.письма и создавать документы входящих обращений на те эл.письма, для которых их нет? Или другой вариант - из события при записи эл.письма запускать фоновое задание на генерацию входящего обращения? В обоих случаях будет такая проблема - сейчас, если при формировании входящего обращения происходит ошибка, то отменяется и сама запись электронного письма, т.е. эл.письма без вход.обращений в базе появиться не могут. А при этих вариантах, если в фоновом задании произойдет ошибка, то отменить создание эл.письма уже не получится - оно уже будет существовать! Или можно как-то эту проблему обойти?
Коллеги, благодарю за помощь!
Решил задачу так:
Оставил подписку на событие "ПередЗаписью" документа типовой конфигурации "ЭлектронноеПисьмоВходящее".
В процедуре обработки подписки запускается новое фоновое задание, в котором выполняется разработанная функция по созданию документа - входящего обращения. В качестве параметра-аргумента эта функция получает структуру, содержащую необходимые для создания входящего обращения данные входящего электронного письма.
Таким же образом работает подписка на событие "ПриЗаписи" элемента справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы" - запускается новое фоновое задание, в котором отыскивается соответствующее письму-владельцу присоединенного файла документ входящего обращения и прикрепляется к входящему обращению копия присоединенного файла.
Таким образом, создание входящего обращения и присоединенных файлов выведено в отдельные транзакции, выполняемые в фоновых процессах.
Пока работает без конфликтов.
Смущает то, что все эти выполненные фоновые задания с нулевой длительностью отображаются в списке фоновых заданий, вызываемом из "НСИ и Администрирование - Обслуживание - Регламентные и фоновые задания" и попадают в журнал регистрации, дополнительно увеличивая его размер.
Подскажите, пожалуйста, насколько такое решение приемлемо?
Решил задачу так:
Оставил подписку на событие "ПередЗаписью" документа типовой конфигурации "ЭлектронноеПисьмоВходящее".
В процедуре обработки подписки запускается новое фоновое задание, в котором выполняется разработанная функция по созданию документа - входящего обращения. В качестве параметра-аргумента эта функция получает структуру, содержащую необходимые для создания входящего обращения данные входящего электронного письма.
Таким же образом работает подписка на событие "ПриЗаписи" элемента справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы" - запускается новое фоновое задание, в котором отыскивается соответствующее письму-владельцу присоединенного файла документ входящего обращения и прикрепляется к входящему обращению копия присоединенного файла.
Таким образом, создание входящего обращения и присоединенных файлов выведено в отдельные транзакции, выполняемые в фоновых процессах.
Пока работает без конфликтов.
Смущает то, что все эти выполненные фоновые задания с нулевой длительностью отображаются в списке фоновых заданий, вызываемом из "НСИ и Администрирование - Обслуживание - Регламентные и фоновые задания" и попадают в журнал регистрации, дополнительно увеличивая его размер.
Подскажите, пожалуйста, насколько такое решение приемлемо?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот