Загрузка данных


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

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