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