Имя: Пароль:
1C
 
v8: 1С и Outlook {решен}
0 Ептель
 
23.07.07
12:14
Ситуация такая:
есть 1С 8.0 и Outlook2003
при формировании сообщения для отправки по почте выдает сообщение
"Ошибка при вызове метода контекста (Display): Неизвестная ошибка"
но сообщение само выдает и его можно отправить при нажатии кнопки "отправить" до этого стоял 2000 офис и ничего такого не было , т.е. отрабатывал без ошибок, все бы ничего можно было бы забить на эту ошибку так как все равно, так как первоначальный заложенный смысл отрабатывает, но есть обработка которая формирует реестр платежей а потом скопом делает рассылку по контрагентам, так вот происходит следующее : программа формирует 1 письмо и вылетает с данной ошибкой
Были проведены след действия по устранению:
был еще раз переустановлен офис - не помогло
зашел на том же компе под другой учеткой , но с админовскими правами - не помогло
накатил обновления на офис - тоже не помогло
дал права пользователю админовские - не помогло
на своем компе запускаю тоже самое у меня работает
ОС на компах пользователей Win2000 офис2003
у меня WinXP офис 2003
1с 8.0 (8.0.13.32)
сервер скульный.
Что это может быть, ну не может же из ОС такое твориться
1 ТелепатБот
 
гуру
23.07.07
12:14
2 IceSer1
 
23.07.07
12:19
код в студию
3 Ептель
 
23.07.07
12:21
Перем olMailItem;
               myOLApp = Новый COMОбъект ("Outlook.Application");
       //myOLItem = CreateObject("Outlook.MailItem");
       myOLItem = myOLApp.CreateItem(olMailItem);
 
       Если Прав(Кому,2)=";" Тогда
         myOLItem.To = Лев(Кому,СтрДлина(Кому)-2);
       Иначе
         myOLItem.To = Кому;
       КонецЕсли;
       
       myOLItem.Subject = "Электронная система согласования документов";
               
     Если Направление="Вперед" Тогда
         Если ТекДок.Метаданные().Имя="КарточкаПлатежа" Тогда
         myOLItem.Body = "Прошу согласовать " + ТекДок+ " "+ ТекДок.Контрагент + " на сумму "+ ТекДок.Сумма + " "+ТекДок.ВалютаДокумента;
         Иначе
         myOLItem.Body = "Прошу согласовать " + ТекДок+ " "+ ТекДок.Контрагент + " грузополучатель "+ ТекДок.грузополучатель+ " станция назначения "+ТекДок.СтанцияНазначения;
         КонецЕсли;
     ИначеЕсли Направление="Справочник" Тогда
       myOLItem.Body = "Прошу согласовать заявку на изменение справочника № " +ТекДок.Номер+ " от "+ ТекДок.Дата+" "+ ТекДок.НаименованиеСпр;
     ИначеЕсли Направление="Лимит" Тогда
       myOLItem.Body = "Превышен лимит бюджета по документу " +ТекДок.Номер+ " от "+ ТекДок.Дата + " Требуется дполнительное согласование!";
     ИначеЕсли ТекДок.Метаданные().Имя="КарточкаПлатежа" Тогда
       myOLItem.Body = " " + ТекДок+ " от "+ ТекДок.Дата+" "+ СОКРЛП(ТекДок.Контрагент.Наименование) + " на сумму "+ ТекДок.Сумма + " "+ТекДок.ВалютаДокумента +" отклонена пользователем "+СОКРЛП(ТекПользователь.Наименование) + " по причине "+ СокрЛП(ТекДок.ПричинаОтказа.Наименование);
     // Иначе
     // myOLItem.Body = " " + ТекДок+ " от "+ ТекДок.Дата+" "+ ТекДок.Контрагент +" грузополучатель "+ ТекДок.грузополучатель+ " станция назначения "+ТекДок.СтанцияНазначения +" отклонена пользователем "+глТекущийПользователь + " по причине "+ СокрЛП(ТекДок.ПричинаОтказа.Наименование);
     // КонецЕсли;
     КонецЕсли;
     Попытка
       myOLItem.Display();
     Исключение
     Сообщить("Письмо не отправлено! " +ОписаниеОшибки());
      //myOLItem.Send();
      //СтатусВозврата(0);
     
      возврат;
     КонецПопытки;
4 IceSer1
 
23.07.07
12:25
могу предположить что у юзера нет прав админа(в  видовсе), если так то запусти 1 рас из асаунта админа(виндозы)
5 Ептель
 
23.07.07
12:29
все это уже было сделано, и его аккаунт в админы добавлял , и ваще под другим заходил - все одно, ошибка вылетает, мне даже посоветовали добавить в коде
Outlook.Application.11 - один фиг вылетает ошибка
www.itland.ru/forum/lofiversion/index.php/t16002.html  · 5 КБ - вот здесь вроде обсуждалась тема такая но не могу зайти - кричит сервер не найден(((
6 IceSer1
 
23.07.07
12:43
я заменил Display на send все прошло..
7 Ептель
 
23.07.07
12:45
а до этого тоже выдавал ошибку?
8 IceSer1
 
23.07.07
12:49
ес
9 IceSer1
 
23.07.07
12:58
а эобезательно через оутлоок
10 smaharbA
 
23.07.07
12:59
myOLItem.Display(0);
myOLItem.Display(-1);
...
(6) и че отправляет без спроса ? (без наличия каспера)
11 Ептель
 
23.07.07
13:00
(10) а это что за параметры?
12 smaharbA
 
23.07.07
13:01
(11)
0 == false
-1 == true
модальное/немодальное
13 Ептель
 
23.07.07
13:02
(9) да , так как корпоративный стандарт
14 IceSer1
 
23.07.07
13:05
(12) прав мне -1 памог
15 Леха Дум
 
23.07.07
13:26
Почта = Новый COMОбъект("Outlook.Application");
       Письмо = Почта.CreateItem(0); // создаем сообщение
       Письмо.Subject = ТемаСообщения;
       Если ЗапонениеТекстаСообщения = 2 Тогда
           Письмо.HTMLBody = ТекстСообщенияДляОтправки;
       Иначе
           Письмо.Body = ТекстСообщенияДляОтправки;
       КонецЕсли;    
       Письмо.To = "";
       Для Каждого Файл Из СписокФайловВложений Цикл
           Вложение = Письмо.Attachments.Add(Файл);
       КонецЦикла;    
           
       Попытка
       Письмо.Display();    
       Исключение
       КонецПопытки;

Это мой код и, как видишь, по тем же самым принципам... Я просто показываю его оператору, но не отправляю, т.к. не стоит задача учета писем. В твоем случае затык идет на myOLItem.Display() - проверено. Будет ли такой же затык на myOLItem.Send() - не пробовал, но точно могу сказать что его для начала нужно вынести из попытки с myOLItem.Display()
16 Леха Дум
 
23.07.07
13:27
(12) надо будет учесть твои замечания :)
17 Ептель
 
23.07.07
13:45
у меня тоже помогло (12)
Спасибо всем))))
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший