Имя: Пароль:
1C
 
Как добавить из 1С подпись в письмо в MS Outlook
0 NikVars
 
27.08.08
13:10
Создаю письмо в 1С 7.7 так, как предложено в http://www.sinor.ru/~my1c/knowhow/sm_mol.html
Процедура ПереброскаВПочтовика()
    myOlApp = CreateObject("Outlook.Application");
    myItem = myOlApp.CreateItem(0); //olMailItem=0
    //Адрес
    myRecipient = myItem.Recipients.Add("axm2000@mail.ru");
    myRecipient.Type=1;
    //Тема
    myItem.Subject = "Счет № "+НомерДок+" от "+ДатаДок;
    //Тело
    myItem.Body ="Счет находится в прикрепленном файле"
    //Аттачменты
    myAttachments = myItem.Attachments();
    myAttachments.Add( "C:\\1cFiletmp.xls", 1, 1, "Счет № "+НомерДок+" от "+ДатаДок);
    ФС.УдалитьФайл("C:\\1cFiletmp.xls");
    //myItem.Display();
    myItem.Send();
КонецПроцедуры

Теперь возникла необходимость подставить в сформированное письмо подпись, которая уже введена в MS Outlook в Сервис-Параметры-Сообщения-Подписи.
Как это сделать из 1С? Заранее благодарю за ответ.
1 ТелепатБот
 
гуру
27.08.08
13:10
2 dk
 
27.08.08
13:20
а что с макросами? Проблема записать и поглядеть где эта подпись хранится?
3 NikVars
 
27.08.08
13:38
(2) Хорошая идея однако!
4 smaharbA
 
27.08.08
13:39
(2) нету вроде записи макросов в оутлуке
(0) а если просто создать два профиля оутлука и у одного выставить - подписывать при отправке (или как там)
5 Rovan
 
гуру
27.08.08
13:39
(0) Письмо.Body = "Тест тела письма";
6 NikVars
 
27.08.08
13:42
(2) Подскажи где в MS Outlook 2003 запись макроса?
7 Rovan
 
гуру
27.08.08
13:43
(+5) не то !
8 NikVars
 
27.08.08
13:46
(4) Оутлук подпись сразу подставляет. Создаешь письмо, а подпись уже торчит.
(5) Это тоже вариант, об этом я думал, но это не гибкий вариант. Толкая эту тему нужно будет анализировать пользователей и хранить список е-майлов в обработке, что не очень хорошо...
9 lexa
 
27.08.08
13:49
посмотри что у тебя в myItem.Body перед myItem.Body ="Счет находится в прикрепленном файле"
10 smaharbA
 
27.08.08
13:49
(8) 2-профиля
11 Rovan
 
гуру
27.08.08
13:51
(+7) нашел  http://forum.sources.ru/index.php?showtopic=215643
Файлы с подписями находятся в %USERPROFILE%\Application Data\Microsoft\Signatures
Может выташить файл оттуда и вставить его в письмо
12 NikVars
 
27.08.08
13:52
(9) Это у меня формирование темы письма.
13 NikVars
 
27.08.08
13:55
(11) Точно!!!! Спасибо!!!!!!!!! Она там лежит в 3-х видах. Буду цеплять!
(10) Не совсем понял идею...
14 Filin396
 
27.08.08
14:03
(12) Это у тебя формирование тела письма.   lexa предположил, что после
myItem = myOlApp.CreateItem(0);

у тебя в myItem.Body уже лежит твоя подпись, а ты ее затираеш

попробуй myItem.Body ="Счет находится в прикрепленном файле"+myItem.Body
15 NikVars
 
27.08.08
14:16
(13) Понял. Попробовал. Даже через сообщить вывел в окно сообщений. Глухо - тело письма пустое!
Делал так:
myItem = myOlApp.CreateItem(0);
ПодписьМоя=СокрЛП(myItem.Body);
Сообщить("ПодписьМоя="+ПодписьМоя);
ПодписьМоя - пустая!!!
16 Filin396
 
27.08.08
14:33
А к чему в Оутлуке привязана подпись? У тебя там несколько пользователей? Подпись своя у каждого?
17 NikVars
 
27.08.08
14:35
Под моим профилем я вижу подпись только свою! Смотри (11). Я вижу в этой папке только свою подпись.
18 NikVars
 
27.08.08
14:37
+(17) Учетных записей в Оутлуке нет, у нас тут домен, как админ этим рулит - не представляю.
19 Filin396
 
27.08.08
14:37
Ну возможно надо после создания объекта выбирать профиль?
20 smaharbA
 
27.08.08
14:37
(10) Иде я -
Панель управления - Почта - Конфигурации

Код

Оутлук = СоздатьОбъект("Outlook.Application");
Пространство=Оутлук.GetNameSpace("MAPI");
//Соединяемся с первой
Пространство.Logon("Без подписи");
//...
//чето делаем
//...
//Соединяемся со второй
Пространство.Logon("С подписью");
//...
//чето делаем
//...
21 Filin396
 
27.08.08
14:40
(20)Вот-вот, и я про это -же. Подписи у разных пользователей разные.
22 smaharbA
 
27.08.08
14:40
да просит меня Иде я
за упоминания в суе )))
23 NikVars
 
27.08.08
14:49
(20) У меня в Панель управления - Почта- Конфигурации указано использовать конфигурацию Outlook. Других конфигураций нет, эта конфигурация с подписью.
К чему все оставльное пока не дошел...
24 Filin396
 
27.08.08
15:04
Попробуй так:
    myOlApp = CreateObject("Outlook.Application");
    myNameSpase = myOlApp.GetNamespace("MAPI");
    myNameSpase.Logon('ТвойЛогинВОутлуке','ТвойПарольВОутлуке', 0, 0);
    myItem = myNameSpase.CreateItem(0);
вожможно, чтобы появилась подпись, необходимо выбрать профиль пользователя, того, чья это подпись.
25 smaharbA
 
27.08.08
15:10
(23) добавь еще и выбери опцию Выбирать конфигурацию
зайдешь в одну укажешь что подставлять автоматом
зайдешь в другую и отменишь...
все на каждой конфигурации будет по своему, и учетные записи будут разные (если надо)
(24) не совсем так... логин в оутлуке тут непричем...
26 NikVars
 
27.08.08
15:39
Ребята, СПАСИБО! Буду пробовать! Как только будет инфо, выложу в эту ветку.
27 NikVars
 
27.08.08
17:00
(24) Попробовал
myItem = myNameSpase.CreateItem(0);
{}: Поле агрегатного объекта не обнаружено (CreateItem)
Похоже, что это метод только Application, а не GetNamespace
28 Filin396
 
27.08.08
18:49
В оутлуке в хелпе должна быть объектная модель. Поройся там, может чего найдеш.
29 smaharbA
 
28.08.08
06:11
(27) все верно, и делай от апп
30 NikVars
 
28.08.08
17:09
Так как время поджимало, то решил проблему с подстановкой подписи читая файл подписи, как указал (11). Rovan - СПАСИБО!!! Правда пришлось повыпендриваться, так как в 1С команда Текст.Открыть(ВременныйФайл) не понимает путь с переменной %USERPROFILE%.
Вот код:
Процедура ПереброскаВПочтовика()
ПутьДляФайловПодписи="%USERPROFILE%\Application Data\Microsoft\Signatures\";
myOlApp = CreateObject("Outlook.Application");
       myItem = myOlApp.CreateItem(0); //olMailItem=0
   ВременныйФайл=КаталогВременныхФайлов()+"111.tmp";
   //выводим список имен файлов во временный файл
КомандаСистемы("dir "+""""+ПутьДляФайловПодписи+"*.*"" /b >"+ВременныйФайл);
   Текст=СоздатьОбъект("Текст");
   Если ФС.СуществуетФайл(ВременныйФайл) = 1 Тогда
       //Открываем файл и со списком подписей и ищем текстовый!!!
       Текст.КодоваяСтраница(1);
       Текст.Открыть(ВременныйФайл);
       Для Н=1 По Текст.КоличествоСтрок() Цикл
           Стр0=СокрЛП(Текст.ПолучитьСтроку(Н));
           Если Найти(Стр0,".txt")=СтрДлина(Стр0)-3 Тогда
               ИмяФайлаПодписи=Стр0;Прервать;
           КонецЕсли;
       КонецЦикла;//Н=1    
   КонецЕсли;
   //Перебрасываем подпись по временный файл временного каталога.
//Приходится так делать, так как Текст.Открыть(ВременныйФайл) не понимает путь с переменной %USERPROFILE%
   КомандаСистемы("type "+""""+ПутьДляФайловПодписи+ИмяФайлаПодписи+""" >"+ВременныйФайл);
    //Адрес
    myRecipient = myItem.Recipients.Add("axm2000@mail.ru");
    myRecipient.Type=1;
    //Тема
    myItem.Subject = "Счет № …..";
    //Тело
    myItem.Body ="Счет находится в прикрепленном файле…";
//Добавляем подпись!!!!
   Если ФС.СуществуетФайл(ВременныйФайл) = 1 Тогда
       Текст.Открыть(ВременныйФайл);
       Для Н=1 По Текст.КоличествоСтрок() Цикл
           Стр0=СокрЛП(Текст.ПолучитьСтроку(Н));
           myItem.Body=myItem.Body+Стр0;
       КонецЦикла;//Н=1    
   КонецЕсли;
    //Аттачменты
    myAttachments = myItem.Attachments();
    myAttachments.Add( "C:\\1cFiletmp.xls", 1, 1, "Счет № ...");
    ФС.УдалитьФайл("C:\\1cFiletmp.xls");
    ФС.УдалитьФайл(ВременныйФайл );
    //myItem.Display();
    myItem.Send();
КонецПроцедуры
Ошибка? Это не ошибка, это системная функция.