Актуальность задачи выполнения команд по расписанию без внесения изменений в конфигурацию базы 1С
Если вам хочется выполнять некое задание в базе 1С по расписанию, но нет доступа к конфигуратору или неудобно делать эти доработки через расширение и уж тем более не хочется снимать конфигурацию с полной поддержки, можно создать внешнюю обработку и настроить расписание запуска команды по расписанию.
Ограничения
- Запуск возможен для баз, работающих в клиент-серверном режиме, либо в ситуации, когда всегда есть один активный сеанс файловой базы (и за этим надо следить).
- Работает только для управляемых форм
- Для отправки используются возможности БСП "Дополнительные отчеты и обработки". Подробности и документация по ссылке: https://its.1c.ru/db/bsp21doc#content:22:1
Пошаговая инструкция запуска команды внешней обработки по расписанию
- Создаем внешнюю обработку.
- Заполняем в модуле объекта код для функции СведенияОВнешнейОбработке
Пример программного кода:
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); ПараметрыРегистрации.БезопасныйРежим = Ложь; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); //представление команды в пользовательском режиме НоваяКоманда.Представление = "ОтправитьОтчетПоРасписанию"; НоваяКоманда.Идентификатор = НоваяКоманда.Представление; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); Возврат ПараметрыРегистрации; КонецФункции

- Также добавьте еще одну экспортную функцию ВыполнитьКоманду
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды) Экспорт Если ИдентификаторКоманды = "ОтправитьОтчетПоРасписанию" Тогда СформироватьОтправитьОтчет(); КонецЕсли; КонецФункции

- Код команды для отправки отчета может выглядеть так:
Функция СформироватьОтправитьОтчет() Экспорт Данные = ФинансовыйРезультатКомпании(); ТабДок = ТабличныйДокумент(Данные); Таб = Новый ТабличныйДокумент(); ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf"); Таб.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.PDF); УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты; Получатели = ПолучателиПисьма(); Получатели.Колонки.Добавить("АдресПочты"); Получатели.Колонки.Добавить("Контрагент"); ВложенныеФайлы = Новый Соответствие(); ВложенныеФайлы.Вставить("Финансовый отчет", ИмяВременногоФайла); ОтправитьПисьмоАдресатам(УчетнаяЗапись, Получатели, Ложь, ВложенныеФайлы); КонецФункции

Настройка расписания запуска команды
Сначала необходимо добавить обработку в список дополнительных доработок.
- Зайдите в список Дополнительные отчеты и обработки и нажмите кнопку Добавить из файла

- Выберите файл обработки с диска.
- Включите запуск по расписанию и в окне предупреждения нажмите Продолжить:

- Обойдите все вкладки и настройте необходимое расписание:

- При необходимости настройте размещение (если у обработки есть формы и команды продублированы на форме). Нажмите Записать и закрыть:

В результате отчет о финансовой деятельности организации будет отправляться на электронную почту руководителям компании по настроенному расписанию.