Как добавить кнопку отправки документов по электронной почте в список «Отчетов комитенту» в 1С:Бухгалтерия 3.0

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

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

Постановка задачи и выбор стратегии

Нам необходимо добавить стандартную кнопку с иконкой конверта в командную панель формы списка документа ОтчетКомитенту. При нажатии на эту кнопку система должна формировать выбранные печатные формы (например, сам «Отчет комитенту» и «Акт об оказании услуг») и открывать окно подготовки электронного письма. Мы будем использовать механизм расширений, так как это позволяет сохранить конфигурацию на поддержке и упрощает процесс обновления.

Шаг 1. Подготовка расширения и заимствование объектов

Первым делом создадим новое расширение или откроем существующее. Нам необходимо добавить в расширение следующие объекты основной конфигурации:

  1. Документ ОтчетКомитенту (только сам объект, без всех форм и реквизитов, если они не нужны для логики).
  2. Общую команду ОтправитьПоЭлектроннойПочте. Это глобальная команда, которая отвечает за вызов почтового клиента БСП (Библиотеки стандартных подсистем).
  3. Форму списка документа ОтчетКомитенту, если кнопка не появится автоматически после манипуляций с командой.

Шаг 2. Настройка типа параметра глобальной команды

Это самый важный и технически тонкий момент. Глобальная команда ОтправитьПоЭлектроннойПочте имеет свойство Тип параметра команды, в котором перечислены все документы, для которых она доступна. Нам нужно добавить туда наш ДокументСсылка.ОтчетКомитенту.

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

Как исправить:

  1. В окне свойств заимствованной команды ОтправитьПоЭлектроннойПочте (внутри расширения) найдите строку Тип параметра команды.
  2. Нажмите на иконку с лупой или правым кликом вызовите контекстное меню.
  3. Установите режим «Не контролировать» для данного свойства. Это позволит вам расширить состав типов, не вступая в конфликт с основной конфигурацией.
  4. Теперь в списке типов отметьте галочкой ДокументСсылка.ОтчетКомитенту.

Шаг 3. Реализация логики в модуле менеджера

Просто добавить команду недостаточно. При нажатии на кнопку система обращается к менеджеру документа, чтобы понять, какие именно печатные формы нужно отправить. Выясним причину возможной ошибки: если метод не описан, вы получите сообщение {ОбщийМодуль.ОтправкаПочтовыхСообщений.Модуль(492)}: Метод объекта не обнаружен (ДобавитьКомандыОтправки).

Нам необходимо создать в расширении Модуль менеджера документа ОтчетКомитенту и добавить в него процедуру. Рассмотрим пример кода:


&После("ДобавитьКомандыОтправки")
Процедура Расш1_ДобавитьКомандыОтправки(КомандыОтправки) Экспорт
    
    // Регистрируем команду отправки для конкретных макетов
    Команда = КомандыОтправки.Добавить();
    Команда.Представление = НСтр("ru = 'Отчет комитенту (с актом)'");
    Команда.Идентификатор = "ОтчетКомитенту"; // Имя макета из модуля менеджера
    Команда.ДополнительныеПараметры.Вставить("Получатель", "Менеджер");
    
КонецПроцедуры

Важно помнить: процедура должна быть обязательно помечена ключевым словом Экспорт. В параметре КомандыОтправки мы описываем, какие представления увидит пользователь, если форм несколько.

Шаг 4. Регистрация в подсистеме печати

Поскольку механизм отправки почты в БП 3.0 неразрывно связан с подсистемой печати, убедимся, что документ корректно предоставляет данные для формирования печатных форм. Если вы хотите отправлять специфические формы, они должны быть описаны в процедуре ПриОпределенииКомандПечати. Обычно в типовых решениях она уже есть, и мы можем подключиться к ней через &После.


&После("ПриОпределенииКомандПечати")
Процедура Расш1_ПриОпределенииКомандПечати(КомандыПечати) Экспорт
    // Здесь обычно уже есть типовой код, 
    // расширение просто позволяет убедиться, что команды доступны.
КонецПроцедуры

Шаг 5. Обеспечение видимости кнопки на форме

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

  1. Автозаполнение командной панели: Если у командной панели формы списка свойство Автозаполнение установлено в значение Ложь, глобальные команды не добавятся автоматически. В этом случае откройте форму списка в расширении и вручную перетащите команду ОбщиеКоманды.ОтправитьПоЭлектроннойПочте в дерево элементов формы (в командную панель).
  2. Функциональные опции: Проверьте, включена ли в программе возможность работы с почтой. Перейдите в раздел Администрирование — Органайзер — Почта. Если использование почты отключено глобально, кнопка будет скрыта во всех списках документов.

Разбор типичных проблем

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

Также стоит проверить, правильно ли заимствован объект в расширение. Если вы используете аннотацию &Вместо для процедуры ДобавитьКомандыОтправки, убедитесь, что вы вызываете базовую логику или полностью копируете поведение типового метода, иначе вы можете «сломать» отправку в других документах, если расширение написано некорректно. Однако использование &После является более безопасным и предпочтительным методом.

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

← На главную