Дублирование отправленных электронных писем

1. boron 19.05.17 11:01 Сейчас в теме
Доброго времени суток!

Я столкнулась с такой проблемой - в конфигурации Управление Торговлей 11.3.1.109 версия 1С 8.3.9.1850 происходит задваивание электронных писем. Протокол учетной записи - IMAP.
Создаю документ "ЭлектронноеПисьмоИсходящее". После нажатия на "Отправить" оно отправляется и попадает в папку "Отправленные" моей учетной записи.
Но потом запускается регламентное задание "Получение и отправка электронных писем". В результате выполнения этого задания создается дубль этого же письма в папке "Отправленные" моей учетной записи, но повторной отправки не происходит.
Я пробовала копать регламентное задание отладчиком. Все, что накопала - это то, что при отправке электронного письма через объект "Почта" генерится идентификатор сообщения, который присваивается реквизиту "ИдентификаторСообщения" отправленного письма. Но при работе регламентного задания в процедуре общего модуля УправлениеЭлектроннойПочтой.ПолучитьПочтуПоПроколуIMAP() вызывается функция Почта.ПолучитьЗаголовки(), которая возвращает массив объектов типа "ИнтернетПочтовоеСообщение". И объект, соответствующий отправленному письму, почему-то имеет другой идентификатор сообщения, отличающийся от реквизита "ИдентификаторСообщения" отправленного письма. Поэтому при выполнении запроса программа видит, что письма с таким идентификатором сообщения нет, и заново его создает.
В работу объекта "Почта" вмешаться невозможно - он встроенный в систему. Почему он выдает левый идентификатор сообщения - непонятно.
Подскажите, пожалуйста, может, кто-нибудь сталкивался с такой проблемой? Что делать, чтобы отправленные письма не задваивались?

Заранее благодарю за помощь
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user811769 13 12.05.21 12:16 Сейчас в теме
Добрый день! удалось решить проблему?
3. NikeeNik 75 18.11.21 14:19 Сейчас в теме
(2)
Я разобрался - это ошибка БСП (я разбирался с версией БСП 3.1.4.295):

В документе "ЭлектронноеПисьмоИсходящее" есть два реквизита "ИдентификаторСообщения" и "ИдентификаторСообщенияОтправкаIMAP", но при отправке письма БСП заполняет только первый реквизит - функция Взаимодействия.ВыполнитьОтправкуПисьма() (которая вызывается из Взаимодействия.СоздатьПисьмо() ) выполняет отправку письма, получает два идентификатора (ИдентификаторПисьмаSMTP и ИдентификаторПисьмаIMAP) устанавливает соответствующие реквизиты письма, возвращает только первый идентификатор и.... , не записывая письмо, возвращается в функцию СоздатьПисьмо() и перечитывает объект письма, после этого устанавливает ему тот единственный идентификатор, который вернула функция ВыполнитьОтправкуПисьма(), реквизит "ИдентификаторСообщенияОтправкаIMAP" остается незаполненным.
Ну а потом, при получении почты, 1С лезет на сервер по протоколу IMAP, читает там идентификаторы, сверяет со своими письмами, естественно письма с нужным идентификатором оно не находит (т.к. идентификаторы писем на сервере это идентификаторы IMAP, который мы не заполнили) и создает новое.

Как поправить (лучше наверное расширением, ибо БСП, править его такое себе):

1 способ - записать объект письма до возврата из функции Взаимодействия.ВыполнитьОтправкуПисьма() (пример как сделать в расширении на скриншоте)
2 способ (если не хочется лишний раз записывать объект) - до возврата из функции вернуть структуру из двух идентификаторов и в процедуре СоздатьПисьмо() после перечитывания объекта письма и установки ему идентификатора установить идентификаторы из нашей структуры.
Прикрепленные файлы:
maXon777; +1 Ответить
Оставьте свое сообщение

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