Как добавить содержание документа в почтовое уведомление о задаче в 1С:Документооборот 3.0

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

При внедрении системы 1С:Документооборот 3.0 (1С:ДО 3.0) пользователи часто сталкиваются с тем, что стандартные почтовые уведомления о новых задачах содержат лишь краткую информацию: заголовок (шапку) документа, автора и срок. Однако для полноценного согласования, особенно если оно происходит удаленно через почту, согласующему лицу (например, завхозу или руководителю, не имеющему постоянного доступа к базе) необходимо видеть содержание документа непосредственно в теле письма. Разберем, почему так происходит и какими способами можно вывести многострочное поле содержания в уведомление.

Анализ проблемы: почему содержание не попадает в письмо автоматически

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

Проанализируем ситуацию: письмо формируется регламентным заданием в фоновом режиме. В этот момент контекст формы отсутствует, и система собирает данные, обращаясь к реквизитам объектов. Если мы хотим изменить этот механизм, нам нужно либо научить систему заполнять описание задачи при её создании, либо вмешаться в процесс формирования HTML-тела письма.

Способ 1. Использование пользовательских автоподстановок (без программирования в конфигураторе)

Прежде чем приступать к написанию кода, рассмотрим наиболее «чистый» способ, предусмотренный разработчиками 1С:ДО 3.0. В версии 3.0 механизм уведомлений значительно переработан. Мы можем использовать справочник Шаблоны уведомлений и механизм Автоподстановок.

Рассмотрим по шагам, как это реализовать:

  1. Перейдем в раздел Настройка — Уведомления — Шаблоны уведомлений.
  2. Найдем шаблон, отвечающий за назначение новой задачи (например, «Назначение задачи»).
  3. В системе 1С:ДО 3.0 существует возможность создания скриптовых автоподстановок. Мы можем создать новую автоподстановку, которая будет программно извлекать Содержание из предмета задачи.
  4. Для этого в справочнике Дополнительные обработчики (или через расширение) создается небольшой фрагмент кода, который по ссылке на задачу получает её предмет и возвращает текст содержания.

Этот метод хорош тем, что он не требует изменения типового кода и сохраняет поддержку конфигурации.

Способ 2. Программное изменение представления задачи через расширение

Если стандартных настроек недостаточно и требуется глубокая кастомизация HTML-представления, нам придется обратиться к общему модулю РаботаСУведомлениями или ДелопроизводствоТиповыеПередавать (в зависимости от версии релиза). Выясним причину, по которой данные не попадают в письмо, изучив процедуру СформироватьПредставлениеЗадачи.

Для реализации этого способа создадим расширение и добавим в него метод-перехватчик. Рассмотрим пример кода, который можно использовать для добавления текста содержания в описание:


&После("СформироватьПредставлениеЗадачи")
Процедура Расш_СформироватьПредставлениеЗадачи(ЗадачаСсылка, ДанныеУведомления, СтандартнаяОбработка)
    // Получаем основной предмет задачи (Документ)
    ПредметЗадачи = ЗадачаСсылка.Предмет;
    
    Если ЗначениеЗаполнено(ПредметЗадачи) Тогда
        // Проверяем наличие реквизита Содержание у объекта
        Попытка
            ТекстСодержания = ПредметЗадачи.Содержание;
            Если ЗначениеЗаполнено(ТекстСодержания) Тогда
                // Добавляем содержание в структуру данных, которая уйдет в HTML-шаблон
                ДанныеУведомления.Вставить("СодержаниеДокумента", ТекстСодержания);
            КонецЕсли;
        Исключение
            // Если реквизита нет или нет прав, ничего не делаем
        КонецПопытки;
    КонецЕсли;
КонецПроцедуры

После того как мы добавили данные в структуру ДанныеУведомления, их необходимо вывести в самом HTML-макете письма. Разберем подробнее: макеты часто хранятся в виде текстовых ресурсов или в справочнике шаблонов. Вам потребуется добавить параметр [СодержаниеДокумента] в нужное место HTML-кода шаблона.

Способ 3. Настройка описания в правилах обработки документа

В 1С:Документооборот 3.0 настройки процессов (обработок) стали более гибкими. Посмотрим на настройки действия (Согласование, Исполнение) внутри схемы обработки документа. В настройках каждого действия есть поле Описание задачи.

Мы можем настроить автоматическое заполнение этого поля. Если в поле описания задачи прописать инструкции или использовать теги подстановок, система будет генерировать задачу с уже заполненным содержанием. Если задача будет иметь заполненное описание, то типовой механизм уведомлений подхватит его и отправит на почту без дополнительных доработок кода.

Особенности отладки фоновых заданий при формировании писем

Одной из главных трудностей, упомянутых в обсуждении, является отладка. Поскольку уведомления отправляются регламентным заданием, обычная точка остановки в конфигураторе не сработает. Рассмотрим, как эффективно отладить процесс формирования письма:

1. Использование параметра запуска:

Запустите сеанс «1С:Предприятие» с параметром /РежимОтладки. Это позволит системе более гибко реагировать на попытки подключения отладчика к фоновым процессам.

2. Настройка автоматического подключения:

В конфигураторе перейдите в меню Отладка — Подключение — Автоматическое подключение. Установите флажок Фоновые задания. Теперь, когда регламентное задание по отправке уведомлений (обычно это УведомлениеПользователейОСобытиях) запустится, конфигуратор «поймает» его, и вы сможете пройтись по коду по шагам.

3. Использование консоли регламентных заданий:

Чтобы не ждать срабатывания расписания, используйте обработку «Консоль заданий». Найдите задание, отвечающее за уведомления, и запустите его принудительно кнопкой «Выполнить в текущем сеансе». Это превратит фоновое задание в обычный процесс, который легко отлаживается.

Важные замечания по безопасности и правам доступа

При извлечении содержания документа для письма следует помнить о системе прав (RLS). Письма формируются под определенной учетной записью. Проанализируем ситуацию: если регламентное задание выполняется под системным пользователем, у которого нет прав на чтение конкретного вида документа, то поле Содержание вернется пустым.

Рекомендация: При программном получении текста в расширении используйте метод УстановитьПривилегированныйРежим(Истина), если вы уверены, что передача этой информации в почту не нарушает политику безопасности вашей организации. Однако помните о «коммерческой тайне», упомянутой в обсуждении: если содержание документа содержит конфиденциальные данные, передача их по открытым каналам электронной почты может быть рискованной.

Резюме

Для решения задачи в 1С:ДО 3.0 мы рекомендуем сначала проверить возможности автоподстановок в шаблонах уведомлений. Если этого недостаточно, наиболее стабильным решением будет использование расширения для модификации структуры ДанныеУведомления. Не забывайте использовать инструменты отладки фоновых заданий для сокращения времени на поиск ошибок в коде формирования HTML.

← На главную