Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отправка сообщений по почте из 1с

Отправка сообщений по почте из 1с
Я
   Eskeych
 
22.07.21 - 09:50
Приветствую, столкнулся с проблемой при отправке сообщений. Написал обработку, которая формирует отчет и сохраняет его в файл, создает очередь отправки в рег.сведений. Спустя время запускается регламентное задание и отправляет его на почту. Вроде как все работает, НО пока он его отправляет ничего в программе делать невозможно, висит колесико от мышки... 1с думает. Пробовал запихнуть его в фоновое задание результат тот же. Так же ставил регламентное на повтор и отправлял по 1 сообщению. Работать можно но постоянные подлагивания от отправки сообщений как бы тоже не приятно. Есть возможность отправлять сообщения, что бы на работу пользователя вообще никак не влияли? Конфа Управление производственным предприятием, редакция 1.3 (1.3.162.5)
   ДенисЧ
 
1 - 22.07.21 - 09:53
Если регламентное задание тормозит интерфейс - то это неправильное задание и оно неправильно работает.
   Eskeych
 
2 - 22.07.21 - 09:54
А не может тормозить из-за того что оно тяжелое? ну типо объем данных все дела
   Asmody
 
3 - 22.07.21 - 09:55
"Есть возможность отправлять сообщения, что бы на работу пользователя вообще никак не влияли" - есть
   Kassern
 
4 - 22.07.21 - 09:56
(0) конфигурация какая? База серверная?
   Asmody
 
5 - 22.07.21 - 09:56
(2) А ты гигабайты по почте шлёшь?
   Asmody
 
6 - 22.07.21 - 09:56
(4) Там же написано - "УПП". Какая она может быть?
   Eskeych
 
7 - 22.07.21 - 09:56
(4) База файловая Конфа упп
   OldCondom
 
8 - 22.07.21 - 09:57
в момент отправки писем смотри диспетчер задач. Очередь диска и активность сети
   Kassern
 
9 - 22.07.21 - 09:57
(6) а в УПП разве нет типовой рассылки отчетов?
   Eskeych
 
10 - 22.07.21 - 09:57
(5) хуже...килобайты :)
   Asmody
 
11 - 22.07.21 - 09:57
(7) "Файловая" и "УПП" в одном предложении применяться не может!
   Kassern
 
12 - 22.07.21 - 09:57
(6) Не дочитал видимо до конца)
   ДенисЧ
 
13 - 22.07.21 - 09:58
(6) Ты никогда не видел файловых УПП?
   Kassern
 
14 - 22.07.21 - 09:58
(13) у ТС наглядный пример))
   ДенисЧ
 
15 - 22.07.21 - 09:59
Если коротко - регламентное задание выполняется на сервере и никакого влияния на интерфейс пользователя оказывать не может.
Если оказывает - это не регламентное задание, максимум - обработчик ожидания
   Eskeych
 
16 - 22.07.21 - 10:00
(1) а не правильно работает, это типо не правильно создано, галочки неправильно проставлены в самом регламентном. Или сам код
   Eskeych
 
17 - 22.07.21 - 10:01
(15) Так он висит при отправке прям, может конечно изза того что подключается к серверу почты
   ДенисЧ
 
18 - 22.07.21 - 10:02
(17) Это не регламентное задание.
   OldCondom
 
19 - 22.07.21 - 10:02
Иди завари кофе. Нужна кофейная гуща, без нее никак. Не инструментами же белого человека пользоваться.
   Eskeych
 
20 - 22.07.21 - 10:05
(17) как не регламентное, если оно даже в консоли регл заданий висит.
(11) Сейчас буду заливать базу на сервер, посмотрю что там будет
   Eskeych
 
21 - 22.07.21 - 10:12
Процедура Рассылка() Экспорт
    Сообщить("Начинаю выполняться");
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Первые 1
                   |    БК_РассылкаПисем.Получатель,
                   |    БК_РассылкаПисем.Почта,
                   |    БК_РассылкаПисем.ПутьХранения
                   |ИЗ
                   |    РегистрСведений.БК_РассылкаПисем КАК БК_РассылкаПисем";
    Выборка = Запрос.Выполнить().Выбрать();
    КолвоОшибок = 0;
    ОтправленоСообщений = 0;
    Пока Выборка.Следующий() Цикл
        СотрудникОтбор = Выборка.Получатель;
            
        ОтправкаУведомлений(Выборка.ПутьХранения, Выборка.Почта, СотрудникОтбор, КолвоОшибок, ОтправленоСообщений);
    
    КонецЦикла;
    
КонецПроцедуры

Процедура ОтправкаУведомлений(ПолноеИмяФайла, Получатель, СотрудникОтбор, КолвоОшибок, ОтправленоСообщений)
    
    Если КолвоОшибок = 3 Тогда
        ВызватьИсключение "ОШИБКА!!! Рассылка прервана из-за большого количества ошибок. Проверьте правильность заполнения данных.";
    КонецЕсли;
    
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.yandex.ru";
    Профиль.ПользовательSMTP = "";
    Профиль.ПарольSMTP = "";
    Профиль.ИспользоватьSSLSMTP = Истина;
    Профиль.ПортSMTP = 465; 
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    
    Письмо = Новый ИнтернетПочтовоеСообщение;
    Текст = Письмо.Тексты.Добавить("Расчетный лист");
    Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
    Письмо.Тема = "Расчетный Лист"; 
    Письмо.Отправитель = "dushka@bcobninsk.ru";
    Письмо.ИмяОтправителя = "Расчетный лист";
    Письмо.Вложения.Добавить(ПолноеИмяФайла);
    Письмо.Получатели.Добавить("")//Получатель

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

    Исключение
        Сообщить("Не удалось подключиться к серверу");
        Сообщить(ОписаниеОшибки());
        КолвоОшибок = КолВоОшибок + 1;
        Отправлено = Ложь;
    КонецПопытки;

    Попытка
        Почта.Послать(Письмо);
        Сообщить("Письмо сотруднику: "+СотрудникОтбор+" отправлено");
        Отправлено = Истина;
        ОтправленоСообщений = ОтправленоСообщений + 1;
    Исключение
        Сообщить("Не удалось отправить письмо для "+СотрудникОтбор+"");
        Сообщить(ОписаниеОшибки());
        Отправлено = Ложь;
        КолвоОшибок = КолВоОшибок + 1;
    КонецПопытки;
    Почта.Отключиться();

    
    Если Отправлено = Истина Тогда
        УдалитьСтрокуОчереди(СотрудникОтбор);                  
    КонецЕсли;
    

КонецПроцедуры



Процедура УдалитьСтрокуОчереди(Сотрудник);
    
    НаборЗаписей = РегистрыСведений.БК_РассылкаПисем.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Получатель.Установить(Сотрудник);
    НаборЗаписей.Прочитать();
    Для каждого Запись из НаборЗаписей Цикл
        НаборЗаписей.Удалить(Запись);
    КонецЦикла;    
    НаборЗаписей.Записать(Истина);
    
КонецПроцедуры

Вот сам код регл задания
что с ним не так?) 
в самом регл задании отмечены признак использования и предопределенный больше с ним ничего не делал
   Eskeych
 
22 - 22.07.21 - 10:12
Up
   Kassern
 
23 - 22.07.21 - 10:16
(21) попробуй рег задание под какого-нить технического юзвера сделать и запусти под ним отдельный сеанс. После этого у других не должно тормозить, а вообще поставьте уже скульную базу и не будет таких танцев с бубном
   Azverin
 
24 - 22.07.21 - 10:17
(21)  Письмо.Отправитель = "dushka@bcobninsk.ru"; - привет земляку!
   ДенисЧ
 
25 - 22.07.21 - 10:17
Так всё-таки файловая?
В файловой регламентные выполняются от пользователя, в его же сеансе. Поэтому и тормозит.
   Eskeych
 
26 - 22.07.21 - 10:19
(23) Сейчас загружаю конфу на sql. буду там пробовать. а от тех юзера это заходить под отдельным пользователем и что бы от него сеанс висел?)
   Eskeych
 
27 - 22.07.21 - 10:19
(24) Ахаха дарова :) тоже с обнинска ?)
   Smallrat
 
28 - 22.07.21 - 10:20
(0) В файловой у 1С есть какая-то фича - типа специальный сеанс под выполнение регзаданий. Типа запускаете на каком-нить компе конфу под этим пользователем и он там крутит регзадания.
   Azverin
 
29 - 22.07.21 - 10:20
(27) Да.
(26) Да. Почитай на ИТС про работу регламентных заданий на файловой базе (тебе уже указали на этот нюанс).
   Eskeych
 
30 - 22.07.21 - 10:21
Сейчас попробую, отпишусь :)
 
 
   Eskeych
 
31 - 22.07.21 - 10:52
Ну вроде бы работает, меня не трогает. Всем спасибо! :)
   Царь-пушка
 
32 - 22.07.21 - 10:53
можно попробовать перейти на файловую ERP может поможет...
   Eskeych
 
33 - 22.07.21 - 11:06
(32) клиенты с ERP еще не разобрались, сидят на упп еще
   hhhh
 
34 - 22.07.21 - 11:10
(32) это конечно юмор, но файловая ERP прекрасно работает, если пользователь один в базе.
   Мультук
 
35 - 22.07.21 - 11:35
(21) Т.е. если
Почта.Подключиться(Профиль);

не получилось, то все равно заставим 1С делать 

Почта.Послать(Письмо);


А выполнение команды 

Почта.Отключиться();


вообще должно пройти "по любому".
   Eskeych
 
36 - 22.07.21 - 11:52
(35) Согласен, косяк.


Список тем форума
 
Основная теорема систематики: Новые системы плодят новые проблемы.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.