// Этот блок нужен, чтобы 1С:УНФ увидела файл и разрешила расписание
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); // Указываем, что это обработка для регламентных заданий
ПараметрыРегистрации.Вставить("Наименование", "Автоматическая рассылка прайс-листа");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", "Робот для автоматической генерации и отправки прайса по расписанию");
ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "Запустить рассылку прайс-листа";
НоваяКоманда.Идентификатор = "ВыполнитьРассылкуПрайса";
НоваяКоманда.Использование = "ВызовСервераМетода"; // Этот тип позволяет запускать обработку по расписанию
НоваяКоманда.ПоказыватьОповещение = Ложь;
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
// Основной код, который выполняет работу
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
Если ИдентификаторКоманды = "ВыполнитьРассылкуПрайса" Тогда
// 1. Инициализируем типовую обработку прайс-листа
ОбработкаПрайс = Обработки.ПрайсЛисты.Создать();
// 2. Генерируем прайс-лист
ОбработкаПрайс.СформироватьПрайсЛист();
// 3. Получаем печатную форму
ТабДок = ОбработкаПрайс.ПрайсЛист;
Если ТабДок = Неопределено Или ТабДок.ВысотаТаблицы = 0 Тогда
ЗаписьЖурналаРегистрации("РассылкаПрайса", УровеньЖурналаРегистрации.Ошибка,,, "Прайс-лист пустой!");
Возврат;
КонецЕсли;
// 4. Сохраняем во временный файл Excel
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
// 5. Отправка почты
УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Кому", "client1@mail.ru, client2@example.com"); // Укажите ваши тестовые почты через запятую
ПараметрыПисьма.Вставить("Тема", "Актуальный прайс-лист от " + Формат(ТекущаяДата(), "ДЛФ=D"));
ПараметрыПисьма.Вставить("Тело", "Добрый день! Во вложении свежий прайс-лист.");
Вложения = Новый Массив;
СтруктураВложения = Новый Структура("Данные, ИмяФайла", Новый ДвоичныеДанные(ИмяФайла), "Прайс-лист.xlsx");
Вложения.Добавить(СтруктураВложения);
ПараметрыПисьма.Вставить("Вложения", Вложения);
РаботаСПочтовымиСообщениями.ОтправитьЭлектронноеПисьмо(УчетнаяЗапись, ПараметрыПисьма);
УдалитьФайлы(ИмяФайла);
КонецЕсли;
КонецПроцедуры