|
v7: Обработка Внешнего События | ☑ | ||
---|---|---|---|---|
0
lavalit
19.09.14
✎
13:40
|
Привет всем!
Если кто сталкивался с такой задачкой. Почему во внешней ВК Не срабатывает ОбработкаВнешнегоСобытия(Источник,Событиеп,Данные)? Коротенько по сути дела: Есть внешка, которая отправляет почтовое сообщение из 1С. Написана в виде ВК с применением DialMail. Все вроде хорошо, но иногда надо получить сообщение от сервера если вдруг сообщение не ушло (по сути код ошибки). Раньше пользовал внешку на базе РОММАЙЛ, который благополучно почил в связи с переходом некоторых провайдеров (не будем говорить, что это таки Яндекс))) ) на SSL. РомМайл был попроще и либо отправлял либо нет..по большей части отправлял конечно же. немногословный, но надежный. Жаль, что роммайл уже не попользовать. |
|||
1
varelchik
19.09.14
✎
15:01
|
(0)Чет не совсем понятно причем здесь внешнеесобытие?
|
|||
2
lavalit
19.09.14
✎
15:15
|
Ну как же. Когда пользуешь вот это самое ДиалМайл, то можно отслеживать сколько уже ушло почты (в смысле сколько байткилобайт), с каким результатом (всякие обрывы сети и потеря инета в целом .. ну и .т.д.) так вот все это можно увидеть аккурат в этом самом событии... если все происходит в обычной обработке , то так оно и есть. а вот если ВК.. то хрен она туда заходит ваще.
|
|||
3
varelchik
19.09.14
✎
16:03
|
а нахрена тебе эта ВК?
|
|||
4
lavalit
19.09.14
✎
17:22
|
Да я ж уже говорил, что надо почту слать по яндуксу а они страшные такие перешли на SSL раньше у меня был ROMMAIL для этих целей, но он не умеет по SSL... вот и пришлось переходить на DialMail он умеет, но у него свои заморочки с механизьмом отсылки почты. Ну я конечно могу ее сделать и не на ВК а просто на внешней обработке... больше переписывать просто... "Ромик" то работал как ВК, вот и вздумалось просто подменить одну ВК на другую. Исходные данные все равно одни и те же ничего нового. Было удобно в три строки
Создал Объект, Запустил, Получил результат что все улетело. если кому надо.. все... |
|||
5
lavalit
19.09.14
✎
17:25
|
а с дималом не так просто все... когда большой файл идет, то надо следить когда оно улетит.. икак раз в Этой самой Обработке внешнего события все и видно, в реквизите событие, которое может быть типа отправляется, готово , ошибка ну т.д.
|
|||
6
lavalit
23.09.14
✎
09:44
|
Задачка решена
|
|||
7
lavalit
02.10.14
✎
11:08
|
РЕШЕНО
|
|||
8
aka AMIGO
02.10.14
✎
11:12
|
плохо, когда форумчанин в поиске решения, заходит в ветку, а там - пустота..
что значит: "задачка решена"? неуж так трудно написать кратенько, как пришел к решению, что использовал, как настроил, что получил.. |
|||
9
lavalit
02.10.14
✎
13:40
|
(8) да вродь не интересовался никто... Но нет не жалко конечно
Результаты: ОбработкаВнешнегоСобытия() по ходу в ВК не заходит в принципе своем, только в обычной обработке. При этом в обработке на кнопу "выполнить" надо вешать не процедуру а функцию. Ну собственно и все Вот укороченный код: Функция ОтправитьСообщение() //Здесь код отправки почты.. ооочень длинный поентому только концовочка Если ОтправкаПочты.ОтправитьВсеПисьма(1,1,1)=-100 тогда Возврат 1; Иначе Возврат 0; КонецЕсли; КонецФункции Функция НачатьОтправку() Если ОтправитьСообщение()<>0 тогда ОшибкаОтправки=0; Возврат 1; КонецЕсли; Возврат 0; КонецФункции // здесь уж код по полной ради чего оно и хотелось то // взял из примера, который был здесь: http://1c-asu.ru/index.php/otraslevye-resheniya/asu-pochtalon/alternativnye-pochtovye-programmy/95-komponenta-dialmail-s-primerami-na-7-7 Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные) Если Источник="SMTP" тогда Если ВРЕГ(СокрЛП(Событие))="SEND" тогда Если ВРЕГ(СокрЛП(Данные))="BEGIN" тогда ИначеЕсли ВРЕГ(СокрЛП(Данные))="DONE" тогда Если ОтправкаПочты.ПоследняяОшибка<>0 тогда СтатусОтправки = "Ошибка " + СокрЛП(ОтправкаПочты.ПоследняяОшибка)+" ("+ОтправкаПочты.ПоследняяОшибкаСтр+")"+" |Последний ответ сервера: " + ОтправкаПочты.ПоследнийОтветСервера; Сообщить(СтатусОтправки); Если СтрокаСтатуса<>0 Тогда Форма.Параметр.УстановитьЗначение(СтрокаСтатуса,СтатусОтправки,"СтатусОтправки"); КонецЕсли; КонецЕсли; СтатусОтправки = "Сообщение отправлено"+"( "+СокрЛП(Отправили)+"/"+СокрЛП(ВсегоПисемНаКомпьютере)+" )"; Подсказка = "Сообщения отправлены"; Форма.Обновить(); Если СтрокаСтатуса<>0 Тогда Форма.Параметр.УстановитьЗначение(СтрокаСтатуса,СтатусОтправки,"СтатусОтправки"); Форма.Закрыть(); Иначе Предупреждение(СтатусОтправки); Подсказка=""; КонецЕсли; Возврат; КонецЕсли; х=ОтправкаПочты.ОтправленоВБайтах/ОбщаяДлинаОтправка*СтрДлина(Индик); ИндикаторОтправки=Лев(Индик,СтрДлина(Индик)-х); Форма.Обновить(); ИначеЕсли ВРЕГ(СокрЛП(Событие))="SENDED" тогда х=ОтправкаПочты.ОтправленоВБайтах/ОбщаяДлинаОтправка*СтрДлина(Индик); ИндикаторОтправки=Лев(Индик,СтрДлина(Индик)-х); Отправили=Отправили+1; ; ИначеЕсли ВРЕГ(СокрЛП(Событие))="ERROR" тогда СтатусОтправки = (Данные+" "+СокрЛП(ОтправкаПочты.ПоследняяОшибка)+" ("+ОтправкаПочты.ПоследняяОшибкаСтр+")")+" |Последний ответ сервера: " + ОтправкаПочты.ПоследнийОтветСервера; Сообщить(СтатусОтправки); Если СтрокаСтатуса<>0 Тогда Форма.Параметр.УстановитьЗначение(СтрокаСтатуса,СтатусОтправки,"СтатусОтправки"); КонецЕсли; ОшибкаОтправки=1; Возврат; Форма.Обновить() КонецЕсли; КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |