Как зафиксировать адрес электронной почты отправителя при создании входящего документа в 1С:Документооборот?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

В процессе работы с программой 1С:Документооборот государственного учреждения пользователи часто сталкиваются с ситуацией, когда контрагент отправляет письмо с адреса, который не совпадает с основным адресом, указанным в его карточке контактной информации. В типовом функционале при ответе на входящий документ система автоматически подставляет основной адрес контрагента, что вызывает необходимость ручного исправления данных. Давайте разберемся, как можно автоматизировать процесс фиксации «нетипичного» адреса отправителя, чтобы при создании ответного исходящего документа программа «знала», куда именно нужно отправить ответ.

Вариант 1: Использование дополнительных реквизитов для хранения адреса

Один из наиболее простых и доступных способов — это фиксация адреса в дополнительном реквизите карточки входящего документа. Рассмотрим алгоритм реализации этого решения:

  1. Создадим дополнительный реквизит для документа вида ВходящийДокумент с типом данных Строка (например, с названием «АдресОтправителя»).
  2. Настроим бизнес-событие, которое срабатывает при регистрации входящего документа. В обработчике этого события пропишем логику: при записи документа проверяем адрес, из которого пришло письмо.
  3. Если адрес не совпадает с основным адресом контрагента, сохраняем его в созданный дополнительный реквизит.
  4. При создании исходящего письма на основании входящего, в коде заполнения исходящего документа (через ОбработкаЗаполнения) добавим проверку: если в документе-основании заполнен доп. реквизит «АдресОтправителя», то именно его нужно подставить в поле «Кому» или «Копия».

Такой подход удобен тем, что он не меняет структуру типовых данных Контрагенты и позволяет хранить адрес конкретно для этого юридически значимого документа.

Вариант 2: Обновление контактной информации контрагента

Если вы хотите, чтобы все адреса, с которых пишет контрагент, были доступны в системе для выбора, рассмотрим вариант программного обновления КонтактнаяИнформация контрагента. Это решение выглядит более системным:

  1. При загрузке письма через встроенный почтовый клиент 1С проверяем адрес отправителя.
  2. Сравниваем полученный адрес с теми, что уже записаны в КонтактнаяИнформация выбранного контрагента.
  3. Если адрес новый, программно добавляем его в список контактной информации контрагента.

При таком подходе, когда пользователь будет создавать ответное исходящее письмо, в поле «Кому» система может предложить список всех актуальных адресов, включая тот, с которого пришло исходное сообщение. Это избавляет от необходимости дописывать логику в каждый шаблон документа, так как стандартные механизмы 1С умеют работать с выбором из нескольких адресов КонтактнаяИнформация.

Вариант 3: Техническая реализация через бизнес-события

Для продвинутых пользователей и разработчиков отличным инструментом станут БизнесСобытия. Этот механизм позволяет отслеживать создание документов и выполнять код без изменения основной конфигурации (если использовать расширения). Разберем шаги по настройке:

Пример логики для обработчика (упрощенно):


// Пример псевдокода для модуля обработчика
Процедура ОбработкаСобытияРегистрации(ДокументСсылка, ДанныеПисьма)
    Адрес = ДанныеПисьма.АдресОтправителя;
    Если НЕ ЗначениеЗаполнено(Адрес) Тогда
        Возврат;
    КонецЕсли;
    
    // Записываем адрес в доп. реквизит
    ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
    ДокументОбъект.ДополнительныеРеквизиты.Найти("АдресОтправителя", "Свойство").Значение = Адрес;
    ДокументОбъект.Записать();
КонецПроцедуры

Практические рекомендации

Независимо от выбранного способа, рекомендуем придерживаться следующих правил:

Таким образом, задачу можно решить либо путем доработки кода формирования исходящего письма (с подтягиванием данных из входящего документа), либо путем пополнения истории контактной информации. Выбор зависит от того, насколько часто адреса меняются и требуется ли вам вести историю переписки с множеством разных адресов для одной организации.

← На главную