Как разработать внешнюю обработку для автоматической рассылки уведомлений о крупных заказах в 1С:УТ 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Разработка внешней обработки для автоматизации бизнес-процессов — это классическая задача для начинающего программиста 1С. Рассмотрим по шагам, как реализовать механизм оповещения руководителя о заказах, сумма которых превышает заданный порог, используя 1С:Управление торговлей 8, ред. 11.

Архитектурная подготовка

Для начала важно понять, где именно разместить программный код. В 1С принят стандарт разделения логики:

Этап 1: Создание формы и интерфейса

Создадим форму обработки и добавим на нее реквизиты: ДатаНачала, ДатаОкончания и СуммаОтбора. Чтобы выполнить требование о «запоминании» суммы при повторном открытии, воспользуемся стандартным механизмом платформы:

Для сохранения значения используем метод СохранитьЗначение, а для восстановления при открытии — ВосстановитьЗначение:


// В модуле формы при открытии
Процедура ПриОткрытии()
    ЗначениеСуммы = ВосстановитьЗначение(\"СуммаЗаказаДляОтбора\");
    Если ЗначениеСуммы <> Неопределено Тогда
        СуммаОтбора = ЗначениеСуммы;
    КонецЕсли;
КонецПроцедуры

Этап 2: Проверка данных и ограничение ввода

Чтобы запретить ввод суммы менее 100 000 рублей, настроим событие ОбработкаПроверкиЗаполнения или установим ограничение в свойствах элемента формы. Для проверки заполнения полей используем стандартный механизм ПроверкаЗаполнения, что позволит платформе автоматически подсветить неверно заполненные поля.


&НаКлиенте
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если СуммаОтбора < 100000 Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = \"Сумма не может быть менее 100 000 руб.\";
        Сообщение.Поле = \"СуммаОтбора\";
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Этап 3: Формирование данных и работа с почтой

Для получения списка документов оформим Запрос. Важно выбрать данные из документа ЗаказКлиента, отфильтровать их по периоду и сумме документа.

Для отправки письма используем системные объекты ИнтернетПочтовыйПрофиль и ИнтернетПочта. Напомним, что для современных почтовых сервисов (например, Яндекс) необходимо использовать пароль приложения, а не основной пароль от учетной записи.


// Пример создания профиля
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = \"smtp.yandex.ru\";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.Пользователь = \"ваш_логин@yandex.ru\";
Профиль.Пароль = \"ваш_пароль_приложения\";

Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
// Далее формируем письмо через объект ИнтернетПочтовоеСообщение

Альтернативный профессиональный подход

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

Если же задача — именно тестовое задание на навыки программирования, следуйте структуре выше: четко разделяйте логику между модулями, используйте Запрос для выборки данных и всегда учитывайте требования безопасности при работе с протоколом SMTP.

← На главную