|
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)
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший