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