Разработка внешней обработки для автоматизации бизнес-процессов — это классическая задача для начинающего программиста 1С. Рассмотрим по шагам, как реализовать механизм оповещения руководителя о заказах, сумма которых превышает заданный порог, используя 1С:Управление торговлей 8, ред. 11.
Для начала важно понять, где именно разместить программный код. В 1С принят стандарт разделения логики:
Запрос к базе данных для поиска заказов и формирование письма.Создадим форму обработки и добавим на нее реквизиты: ДатаНачала, ДатаОкончания и СуммаОтбора. Чтобы выполнить требование о «запоминании» суммы при повторном открытии, воспользуемся стандартным механизмом платформы:
Для сохранения значения используем метод СохранитьЗначение, а для восстановления при открытии — ВосстановитьЗначение:
// В модуле формы при открытии
Процедура ПриОткрытии()
ЗначениеСуммы = ВосстановитьЗначение(\"СуммаЗаказаДляОтбора\");
Если ЗначениеСуммы <> Неопределено Тогда
СуммаОтбора = ЗначениеСуммы;
КонецЕсли;
КонецПроцедуры
Чтобы запретить ввод суммы менее 100 000 рублей, настроим событие ОбработкаПроверкиЗаполнения или установим ограничение в свойствах элемента формы. Для проверки заполнения полей используем стандартный механизм ПроверкаЗаполнения, что позволит платформе автоматически подсветить неверно заполненные поля.
&НаКлиенте
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если СуммаОтбора < 100000 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = \"Сумма не может быть менее 100 000 руб.\";
Сообщение.Поле = \"СуммаОтбора\";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Для получения списка документов оформим Запрос. Важно выбрать данные из документа ЗаказКлиента, отфильтровать их по периоду и сумме документа.
Для отправки письма используем системные объекты ИнтернетПочтовыйПрофиль и ИнтернетПочта. Напомним, что для современных почтовых сервисов (например, Яндекс) необходимо использовать пароль приложения, а не основной пароль от учетной записи.
// Пример создания профиля
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = \"smtp.yandex.ru\";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.Пользователь = \"ваш_логин@yandex.ru\";
Профиль.Пароль = \"ваш_пароль_приложения\";
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
// Далее формируем письмо через объект ИнтернетПочтовоеСообщение
В реальной работе, прежде чем писать код «с нуля», всегда анализируйте типовой функционал. В 1С:Управление торговлей уже встроена подсистема рассылки отчетов. Вы можете создать ВариантОтчета на базе отчета «Заказы клиентов», установить в нем необходимые отборы (по сумме и периоду) и настроить расписание отправки через РегламентныеЗадания. Этот метод требует меньше ресурсов на поддержку и обновление конфигурации.
Если же задача — именно тестовое задание на навыки программирования, следуйте структуре выше: четко разделяйте логику между модулями, используйте Запрос для выборки данных и всегда учитывайте требования безопасности при работе с протоколом SMTP.