Имя: Пароль:
1C
 
Отослать Через Outlook c хранилищем
,
0 Mebius777
 
07.03.17
15:45
Процедура ОтослатьЧерезOutlockНажатие(Элемент)
    Если Не ЭтотОбъект.ЭтоНовый() Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХранилищеДополнительнойИнформации.Наименование,
                   |    ХранилищеДополнительнойИнформации.ВидДанных,
                   |    ХранилищеДополнительнойИнформации.ИмяФайла,
                   |    ХранилищеДополнительнойИнформации.Объект,
                   |    ХранилищеДополнительнойИнформации.Хранилище,
                   |    ХранилищеДополнительнойИнформации.ТекстФайла
                   |ИЗ
                   |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.рм_обзвон_Задача КАК рм_обзвон_Задача
                   |        ПО ХранилищеДополнительнойИнформации.Объект = рм_обзвон_Задача.Ссылка
                   |ГДЕ
                   |    ХранилищеДополнительнойИнформации.Объект = &Объект";
    Запрос.УстановитьПараметр("Объект", ЭтотОбъект.Ссылка);
    РезультатВыборкиФайлов = Запрос.Выполнить().Выбрать();
    Иначе
        Сообщить("Документ не сохранен, для правильной работы сохраните документ!");
    КонецЕсли;
    Если СокрЛП(Строка(ЭтотОбъект.ВидЗадачи))=СокрЛП(Строка(Перечисления.ВидыСобытий.ЭлектронноеПисьмо)) Тогда
        Попытка
                     Outlook = Новый COMОбъект("Outlook.Application");
                     ЕстьОшибка = 0;
        Исключение
                     Сообщить("Не удалось создать объект Outlook.Application");
                     ЕстьОшибка = 1;
        КонецПопытки;
        
        Если ЕстьОшибка = 0 Тогда
            Письмо = Outlook.CreateItem(0);
            Если Значениезаполнено(ЭтотОбъект.АдресПочты) Тогда
                          Письмо.Recipients.Add(АдресПочты);  
            КонецЕсли;
            Письмо.Subject  =  ЭтотОбъект.Тема;
            Письмо.Body  =  ЭтотОбъект.ТелоПисьма;
//Для Каждого ЭлементТЧФайлы Из ТЧФайлы Цикл
            Пока РезультатВыборкиФайлов.Следующий() Цикл
                ИмяФайла = КаталогВременныхФайлов() + СокрЛП(РезультатВыборкиФайлов.ИмяФайла);
                Письмо.Attachments.Add(ИмяФайла);//?
            КонецЦикла;
            Попытка
            Письмо.Display();
        
            Исключение
                    
            КонецПопытки;
                    
            Попытка
                    
                Outlook.visible = истина;
                    
            Исключение
                    
            КонецПопытки;
        КонецЕсли;  
        КонецЕсли;    
КонецПроцедуры
1 Mebius777
 
07.03.17
15:46
Выдает ошибку: Ошибка при вызове метода контекста (Add)
                Письмо.Attachments.Add(ИмяФайла);//?
по причине:
Произошла исключительная ситуация (Microsoft Outlook): Невозможно найти файл. Проверьте правильность его пути и имени.
2 Mebius777
 
07.03.17
15:48
Ошибку видите? Если открыть справочник с хранилищем, то файл можно открыть. Т.е. файл существует.
3 mexanik_96
 
07.03.17
15:49
контекст какой?
4 mexanik_96
 
07.03.17
15:50
в Add серьезно не поток байтов а путь к файлу? мне кажется он там бинарь ждет...
5 Mebius777
 
07.03.17
15:56
А разве идет не бинарь?
ИмяФайла = КаталогВременныхФайлов() + СокрЛП(РезультатВыборкиФайлов.ИмяФайла);

Вот аналогичный код тоже отправляет бинарь:
                 ИмяФайлаXls= (КаталогВременныхФайлов()+СтрЗаменить(Лев(ЭтаФорма.Заголовок, СтрДлина(ЭтаФорма.Заголовок)-1), ":", "")+".XLSX");
                 ИмяФайлаXls= СтрЗаменить(ИмяФайлаXls, "Проведен", "");

                 ИмяФайлаXls= СтрЗаменить(ИмяФайлаXls, """", "");
6 mexanik_96
 
07.03.17
15:58
(5) аналогичный код работает? контекст выполнения какой в (0)?
7 mexanik_96
 
07.03.17
16:01
https://msdn.microsoft.com/ru-ru/library/office/ff868540.aspx тут вот в сапмле вряд ли путь к файлу стрим байтов как я понял
8 Mebius777
 
07.03.17
16:04
Работает.
9 Lexey_
 
07.03.17
16:05
(0) СокрЛП(Строка(ЭтотОбъект.ВидЗадачи))=СокрЛП(Строка(Перечисления.ВидыСобытий.ЭлектронноеПисьмо)) вот это, конечно, сильно
10 Mebius777
 
07.03.17
16:05
Аналогичный код полностью рабочий.
11 Lexey_
 
07.03.17
16:06
(10) отладчик в руки и смотри
12 Mebius777
 
07.03.17
16:10
Я два замка в квартиру поставил. А у Вас один? Если дверь поменяю, то два замка пригодятся.
Смотрел отладчик виснит. Выдает ошибку.
Елки-палки ерунда какая-то. Ничего не делал. Перезагрузил конфигуратор, выключил outlook. Не пересохранял. Работает.
13 Mebius777
 
07.03.17
16:11
Перегрелся на солнышке.
14 Mebius777
 
07.03.17
16:13
Прав пользователя не хватало. Вот в чем причина с Com/ole работы.