Имя: Пароль:
1C
1C 7.7
v7: Зависает связка из нескольких внешних компонент
0 vova1122
 
15.05.20
12:22
Такая задача Использую Формекс, Йоксель и ДиалМаил для отправки счетов контрагентам на почту.
создал внешний отчет для групповой отправки.
Суть такая: В цикле обхожу все вібранніе документі для отправки.
Если ОткрытьФорму(Док,ФормКонт) = 1 Тогда
    Если FormExСервис.ВыполнитьПроцедуру(ФормКонт,"Печать1",Список) = 1 Тогда
        ФормКонт.Форма.Закрыть(0);
    Иначе    
        ФормКонт.Форма.Закрыть(0);
        Сообщить("Проблема отправки  "+Док.НомерДок);
    КонецЕсли;
КонецЕсли;

в самом документе в процедуре Печать1 Йокселем создаю PDF документ счета, а потом через ДиалМайл отправляю.

А теперь сам вопрос. Если отправляю пакетом несколько документов (до 10)- все работает. А если много, то обработка отправляет все документы, но потом зависает (на экране видно все открытые документы, и они не закрываются).
Еще помню что где-то читал что имеет значения порядок загрузки внешних компонент.
1 Djelf
 
15.05.20
12:49
Попробуй вот так заменить отправку.

//РезультатОтправки=Отправка.ОтправитьПисьмо(,1,0);
РезультатОтправки=Отправка.ОтправитьПисьмо(,1);

Какие то нелады с потоками, у меня при явном указании нуля - выполнять в основном потоке, все равно отправляет в фоновом.
Возможно зависит от версии dialmail.
2 vova1122
 
15.05.20
12:50
Еще добавлю. Когда запускаю для нескольких документов, также формы документов открываются все на экран, и только после отработки всех документов они закрываются, хотя  ФормКонт.Форма.Закрыть(0); у меня записано в теле цикла.
3 vova1122
 
15.05.20
12:52
(1) закоментаровал, результат тот же
РезОтправки=1;//ПочтаОтправки.ОтправитьПисьмо(1,1);
4 vova1122
 
15.05.20
13:00
Версия диалМайл 2.7.6.16
5 Volodja
 
15.05.20
13:52
Попробуй логику поменять. Не открывай форму на экране
из обработки. и вообще можно формекс не вызывать

в групповой обработке вызываешь допустип так
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.Установить("ВыполнитьПечать",1);
ОткрытьФорму(Док,СЗ);
РезультатПечати=СЗ.Получить("Результат");

В форме документа:
Процедура ПриОткрытии()
_Параметр=Форма.Параметр;
Если ТипЗначенияСтр(_Параметр)="СписокЗначений" Тогда
  Если _Параметр.Получить("ВыполнитьПечать")=1 Тогда
     РезультатПечати=ПечатьДокумента();
     _Параметр.Установить("Результат",РезультатПечати);
     СтатусВозврата(0);
     Возврат;
  КонецЕсли;
КонецЕсли;
.......
далее твой код

КонецПроцедуры
6 vova1122
 
15.05.20
15:04
(5) Спасибо, так работает как надо
7 Ёпрст
 
15.05.20
15:14
(0)
http://catalog.mista.ru/public/58816/
на вот, туда же воткнешь отправку по мылу.
8 vova1122
 
15.05.20
16:04
(7) Твои поделки - это всегда "Высшей пилотаж" , а для моей затеи хватит и того что посоветовал (5)