Имя: Пароль:
1C
Админ
Outlook.Application
0 A-tomic
 
21.10.11
13:17
Подменили код в процедуре отправки электронных писем на следующий:    
   Outlook = Новый COMОбъект("Outlook.Application");
   Письмо = Outlook.CreateItem(0);
   Письмо.To      = Адрес;
   Письмо.Subject = Тема;
   Письмо.Body    = Текст;
   Письмо.Attachments.Add(Вложение);
   Письмо.Display();
Бухгалтера теперь шлют оборотки и акты сами и очень довольны.
Вопрос: как получить доступ к объекту Письмо (объект новый, в папке "Черновики" его еще нет) не держа его в глобальных переменных, параметрах сеанса и т. п.?
1 izekia
 
21.10.11
13:21
(21) никак, если физически его нет нигде
2 A-tomic
 
21.10.11
13:29
В оперативке есть, отладчик его видит, значит до него както можно добраться.
3 A-tomic
 
21.10.11
13:32
В Экселе же можно работать с новой книгой (ActiveWorkbook)
4 SerMaxim
 
21.10.11
13:42
Интересная тема. Может у письма есть события как у документа ворд и их можно перехватывать?
5 A-tomic
 
21.10.11
13:44
События скоее всего есть. Но какие ловить события, если окно письма спокойно лежит в панели задач в свернутом виде?
6 izekia
 
21.10.11
13:50
если объект не сохранен, то его нет, ты не можешь его никак получить, кроме как присвоением той ссылки которая ссылается на созданный объект
7 Nutsiiam
 
21.10.11
13:51
а что хочет автор то в итоге? какая задача стоит - отобразил письмо. Дальше что привело к умозаключении о сохранении ссылки на письмо?
8 smaharbA
 
21.10.11
13:51
ПолучитьCOMОбъект
9 izekia
 
21.10.11
13:54
(8) а если он неактивен?
10 A-tomic
 
21.10.11
13:54
Ну тогда проверьте: сначала запустите Excel, создайте новую книгу, и, не сохраняя выполните такой код:

Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.ActiveWorkbook;
Лист  = Книга.ActiveSheet;

В результате можем работать с текущим листом новой книги.
11 smaharbA
 
21.10.11
13:55
(9) как он не активен если он запущен ?
12 smaharbA
 
21.10.11
13:55
(10) совсем не обязательно - можно создать несколько экземляров ком
13 izekia
 
21.10.11
13:55
(11) ты можешь 10 писем создать, получишь ты только какое-то одно
14 A-tomic
 
21.10.11
13:56
Я хочу при отправке из 1С спросить пользователя: прикрепить вложение к открытому письму или создать новое.
15 izekia
 
21.10.11
13:56
(10) и что? эксель и аутлук вообще разные люди писали
16 izekia
 
21.10.11
13:57
(14) тогда (8)
17 A-tomic
 
21.10.11
13:59
(16) Да, но не знаю как?
18 izekia
 
21.10.11
13:59
(17) // Получение активного объекта
Таб = ПолучитьCOMОбъект( , "Excel.Application");
19 A-tomic
 
21.10.11
14:03
(18) Так невозможно получить COMОбъект письма, получим то же что и при Новый COMОбъект("Excel.Application")
20 smaharbA
 
21.10.11
14:18
(13) да хоть все не сохраненные

Инспекторы = Оутлук.Inspectors;
Для Сч = 1 По Инспекторы.Count Цикл
   Тема = Инспекторы.Item(Сч).CurrentItem;
   Сообщить(Тема.To);
КонецЦикла;

как обойти безопасность сами разбирайтесь, есть 3 способа, один от производителя оутлука, второй подменой обращения "в памяти"
третий самим оутлуком - абсолютно штатно
21 Кокос
 
21.10.11
14:20
помечу. ато юзаю Redemption. так тоже попробую
22 smaharbA
 
21.10.11
14:20
+ как отличить сохраненную тему от созданной сами найдете
и как отобрать тип открытых тем думаю тоже

нажмите Ф1 в оутлуке - там все написано
23 izekia
 
21.10.11
14:26
(20) ееее, гуру)
24 A-tomic
 
21.10.11
14:29
(20) То, что надо! Спасибо большое!
25 A-tomic
 
21.10.11
14:49
Еще вопрос в догонку если сталкивались - как победить ошибку при вызове метода Display() у некоторых пользователей (хотя письмо создается и открывается нормально).
26 smaharbA
 
21.10.11
15:05
модальное ?
27 A-tomic
 
21.10.11
16:52
И модальное тоже. Display(-1)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой