|
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
|
||||
8
vova1122
15.05.20
✎
16:04
|
(7) Твои поделки - это всегда "Высшей пилотаж" , а для моей затеи хватит и того что посоветовал (5)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |