Документооборот ПРОФ, КОРП, ДГУ
22.02.2016

Почта "1С:Документооборота"

Общее описание

Основные объекты метаданных Почты – документы ВходящееПисьмо, ИсходящееПисьмо и журнал документов ЭлектроннаяПочта. Основная логика сосредоточена в общих модулях ВстроеннаяПочтаСервер и Почта.

Как разобраться в ошибке

Типичная проблема – перестают приниматься письма в каком-то почтовом ящике (или с самого начала не принимаются).

Для поиска причины рекомендуем проверить следующие данные:

  1. В форме Потоки доставки почты - что рассматриваемая учетная запись отнесена к какому-то потоку приемки, пусть 1. Также в этой форме на первой закладке красным цветом выделен поток, который не работает более 30 минут. Скорее всего, именно в этом причина ошибки.
  2. Убедиться, что работает регламентное задание ПриемОтправкаПочты N, где N – номер потока.
  3. Если выяснилось, что "зависло" регламентное задание ПриемОтправкаПочты N:

Рассмотрим подробнее как найти "поврежденное" письмо.

  1. Необходимо изменить код в ВстроеннаяПочтаСервер. ПолучитьПисьмаУчетнойЗаписи: найти блок Копировать в буфер обмена
    // Попытка получить все сообщения сразу
  2. Закомментировать код: Копировать в буфер обмена
    Сообщения = Почта.ПолучитьВходящиеСообщения(Соединение, ПараметрыЗагрузки, СообщениеОбОшибке
    
  3. Вместо него написать: Далее получение писем пойдет поштучно. Это медленнее, зато позволяет найти «плохое» письмо. Копировать в буфер обмена
    Сообщения = Неопределено;
  4. Далее получение писем пойдет поштучно. Это медленнее, зато позволяет найти "поврежденное" письмо.
  5. Также необходимо написать логгирование параметров письма - до вызова ПисьмоСсылка = ЗаписатьВходящееПисьмо: Копировать в буфер обмена
    СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                                НСтр("ru = 'Учетная запись: %1
                                 |попытка получения входящего письма:
                                 |%2
                                 |Письмо:  
                                 |Тема: ""%3""
                                 |Дата: %4  
                                 |От кого: %5 %6  
                                 |Размер: %7'"),
                                 УчетнаяЗапись,
                                 "",
                                 Сообщение.Тема,
                                 Строка(Сообщение.ДатаПолучения),
                                 Строка(Сообщение.Отправитель.ОтображаемоеИмя),
                                 Строка(Сообщение.Отправитель.Адрес),
                                 Строка(Сообщение.Размер));
                                
                                ЗаписатьОшибкуДоставки(
                                    СообщениеОбОшибке,
                                    Неопределено,
                                    УчетнаяЗапись,
                                    ПараметрыЛогирования,
                                    Неопределено,
                                    Перечисления.ТипыСобытийДоставкиПочты.ОшибкаПолученияПисьма);
    
  6. Посмотреть, какая запись была последней в Протоколе доставки почты по этому потоку – в ней должны отобразиться параметры "поврежденного" письма. Зная эти параметры, необходимо сторонним почтовым клиентом, скажем Outlook или средствами администрирования email-сервера (если к нему есть доступ, например, email-сервер развернут на предприятии) принять и удалить письмо из почтового ящика.

Важно: если были зафиксированы случаи зависания регламентных заданий приема почты, то в настройках программы (раздел Почта) рекомендуется отключить настройку Получать текст из HTML писем точно (доступна в "1С:Документообороте" версии 2.0.9 и выше).

Как внести изменения

Иногда на внедрении появляется пожелание изменить внешний вид области чтения в списке писем. Это делается в ВстроеннаяПочтаСервер.ВставитьШапкуПисьмаВТекстHTML

Также пожелания могут касаться отображения вложенных писем. Сейчас они вставляются в тело письма. Изменить отбивку можно в ВстроеннаяПочтаСервер.СформироватьШапкуВложенногоПисьмаПростойТекст

Сложные алгоритмы

Ниже описаны несколько достаточно сложных алгоритмов в работе почты.

Число писем в папках

Число писем в папках хранится в регистре сведений КоличествоПисемВПапках в разрезе папки и пользователя. При приемке письма или переносе письма в другую папку в регистре очищаются все записи для данной папки. Расчет числа писем (Всего и Непрочитанных) выполняется "по требованию" - при открытии или обновлении пользователем формы почты (где в дереве папок видно количество писем в папках) – делается расчет именно для данного пользователя. То есть, например, для общей папки, куда есть доступ у десяти пользователей, после приемки нового письма для всех этих пользователей нет ни одной записи для этой папки. И только при входе в почту, скажем 2 пользователями – только для них и будет сделан расчет. Остальные 8 пользователей, возможно, и не зайдут в почту в ближайшее время (например, они отсутствуют) – и время на расчет для них потрачено не будет.

Прием только непринятых писем

Внешняя почта принимается с email-сервера. Если в учетной записи указана настройка Оставлять копии сообщений на сервере и, например, Удалять с сервера через 3 дня - письма на email-сервере будут храниться 3 дня. Но при приемке в "1С:Документообороте" будут получаться только ранее непринятые письма.

Детали реализации:

Метаданные

Метаданные

Описание

Справочник АдресатыПочтовыхСообщений

Содержит адресатов (представление и email). Ссылки на них есть например в табличной части писем ПолучателиПисьма, ПолучателиКопий

Справочник ГруппыЛичныхАдресатов

Содержит группы личных адресатов

Справочник ЛичныеАдресаты

Содержит личных адресатов

Справочник ПапкиПисем

Папки писем (в иерархии).

Справочник ПапкиПоиска

Параметры сохраненных поисков писем.

Справочник СпискиАдресовЭлектроннойПочты

Списки адресов, используемые в правилах обработки писем для правила «Адрес отправителя входит в список» - например для черного или белого списка.

Документ ВходящееПисьмо

Входящие письма

Документ ИсходящееПисьмо

Исходящие письма

Журнал документов ЭлектроннаяПочта

Таблица, где есть и входящие, и исходящие письма.

Регистр сведений HTMLПредставленияСодержанияПисем

Хранит кешированное представление письма (для более быстрого показа в области просмотра в списке писем)

Регистр сведений АвтоматическиеОтветыПоАдресам

Хранит адреса, на которые уже был дан ответ с помощью правила обработки писем «Ответить текстом» - чтобы не отвечать повторно на тот же адрес.

Регистр сведений ИдентификаторыИмпортированныхПисем

Хранит идентификаторы писем, загруженные командой «Загрузить письма из Microsoft Outlook»

Регистр сведений ИдентификаторыПолученныхПисем

Хранит идентификаторы писем, полученных по внешней маршрутизации – чтобы не получать повторно ранее полученные письма.

Регистр сведений ИдентификаторыПочтовыхВложений

Хранит идентификаторы вложений-картинок (в теле html письма)

Регистр сведений ИспользованиеАдресатовПользователями

Хранит адресатов, кому были отправлены письма – в разрезе пользователя. Используется при автоподборе адресата – чтобы показывать сверху последних адресатов.

Регистр сведений ИспользованиеПочты

Хранит персональные настройки использования встроенной и легкой почты

Регистр сведений КоличествоПисемВПапках

Нужен для показа числа писем в папках (Всего и непрочитанных), например «Входящие (2)»

Регистр сведений НастройкиОтложеннойОтправкиПисем

Настройки отложенной отправки писем в разрезе пользователя.

Регистр сведений НеотправленныеИсходящиеПисьма

Хранит информацию о письмах, которые не удалось отправить

Регистр сведений НеполученныеВходящиеПисьма

Хранит идентификаторы писем, которые не удалось получить.

Регистр сведений ПапкиПисемБыстрогоДоступа

Ссылки на папки, показываемые в режиме «Мои папки»- в разрезе пользователя.

Регистр сведений ПапкиПисемТекущихДел

Папки писем, показываемые в форме «Текущие дела» - в разрезе пользователя.

Регистр сведений ПапкиПисемЧастоИспользуемые

Папки писем, отображаемые в режиме «Компактный».

Регистр сведений ПапкиУчетныхЗаписей

Хранит информацию о предопределенных папках учетной записи (Входящие, Исходящие, Отправленные, Черновики, Корзина)

Регистр сведений ПромежуточныеРезультатыПоискаПисем

Хранит результаты поиска писем по реквизитам.

Регистр сведений СведенияОбАдресатах

Содержит связь между адресатом и контактом (например пользователем, корреспондентом)

Регистр сведений СостоянияУчетныхЗаписей

Хранит текущий статус учетной записи в разрезе операции (например соединения с сервером).

Все метаданные почты отнесены к подсистеме Встроенная почта (Стандартные подсистемы Документооборота/ Встроенная почта) - удобно отфильтровать по ней в конфигураторе.