Имя: Пароль:
1C
1С v8
Загрузить исходящие письма из OUTLOOK через COM "Outlook.Application"!
0 vudich
 
13.12.15
15:35
Вопрос:в самой теме.
Пользователи работают с почтой только через OUTLOOK,требуется загрузить письма в 1с(типовая,"Управление торговым предприятием для Украины", редакция 1.2.-последний релиз,платформа 1С:Предприятие 8.3 (8.3.6.2299)).
Вся проблема в том,что Входящие письма загружаю без проблем,а Исходящих не вижу в Отладчике-может кто подскажет?
Использовал стандартный метод "Почта" вначале,но потребовалось загрузка писем из кучи папок и подпапок,пришлось использовать "Outlook.Application",но исходящих писем не могу загрузить.
P.S.:Еще раз повторяю пользователи работают с почтой через "OUTLOOK",А НЕ 1С
1 vudich
 
13.12.15
16:42
Неужели знатоков COM-объекта "Outlook.Application" нету?))
2 kotletka
 
13.12.15
17:43
Отправленные или исходящие? Исходящие очищаются аутлуком после отправки
3 vudich
 
13.12.15
17:51
Может не понимаю:
в OUTLOOK пользователь нажимает отправить-письмо попадает в "Исходящие"-доступ к данным письма есть-а из 1с эти данные как получить?
4 kotletka
 
13.12.15
17:52
Письмо после отправить отправляется адресату?
5 kotletka
 
13.12.15
17:53
Исходящие-это еще не отправленные, они существуют ровно до тех пор пока письмо не отправилось
6 kotletka
 
13.12.15
18:00
Ну и народ не заморачивается, у каждого сотра делают настройки что все исходящие копию отправляют на 1 адрес, т.е. скрытая копия всегда идет на спец адрес, а оттуда входящие заливаются в 1с
7 vudich
 
13.12.15
18:02
СП за ответ--по сути просто дублировать отпраленные письма на другой адресс-я правильно понял?)А как же загрузить письма которые уже есть отправленными?
8 kotletka
 
13.12.15
18:03
Ну и навскидку что сам делал, брал из отсюда, обегвл все папкиhttp://forum.infostart.ru/forum26/topic101937/
9 kotletka
 
13.12.15
18:07
И отсюда у папки отправленные есть номер помдефолту, у атулука есть метрд получения папки https://msdn.microsoft.com/en-us/library/office/aa210275(v=office.11).aspx
10 vudich
 
13.12.15
18:09
Спасибо большое за ответы:буду пробовать.
11 kotletka
 
13.12.15
18:11
Set myNameSpace = Application.GetNameSpace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(6)... Перебором найди дефолтный номер у отправленных, у меня 6 это большого размера письма
12 PR третий
 
13.12.15
18:16
(0)
&НаКлиенте
Процедура Импортировать(Команда)
    
    Попытка
        Outlook = Новый COMОбъект("Outlook.Application");
    Исключение
        Сообщить("Не удается создать объект Outlook по причине: " + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    OutlookMAPI = Outlook.GetNameSpace("MAPI");
    
    Входящие = ПолучитьПапкуВходящие(OutlookMAPI);
    Удаленные = ПолучитьПапкуУдаленные(OutlookMAPI);
    Отправленные = ПолучитьПапкуОтправленные(OutlookMAPI);
    СоответствиеАдресовИменам = ПолучитьСоответствиеАдресовИменам(OutlookMAPI);
    ИдентификаторыВходящихПисем = ПолучитьИдентификаторыВходящихПисем();
    ИдентификаторыИсходящихПисем = ПолучитьИдентификаторыИсходящихПисем();
    
    Количество = 1;
    ОбщееКоличество = Входящие.Items.Count() + Отправленные.Items.Count() + Удаленные.Items.Count();
    
    ВремяНачала = ТекущаяДата();
    
    ИмпортироватьПисьмаИзПапки(Истина, Входящие, Количество, ОбщееКоличество, ВремяНачала, СоответствиеАдресовИменам, ИдентификаторыВходящихПисем);
    ИмпортироватьПисьмаИзПапки(Истина, Удаленные, Количество, ОбщееКоличество, ВремяНачала, СоответствиеАдресовИменам, ИдентификаторыВходящихПисем);
    ИмпортироватьПисьмаИзПапки(Ложь, Отправленные, Количество, ОбщееКоличество, ВремяНачала, СоответствиеАдресовИменам, ИдентификаторыИсходящихПисем);
    
    Состояние();
    
КонецПроцедуры

&НаКлиенте
Функция ПолучитьПапкуВходящие(OutlookMAPI)
    
    Возврат OutlookMAPI.GetDefaultFolder(6);
    
КонецФункции

&НаКлиенте
Функция ПолучитьПапкуУдаленные(OutlookMAPI)
    
    Возврат OutlookMAPI.GetDefaultFolder(3);
    
КонецФункции

&НаКлиенте
Функция ПолучитьПапкуОтправленные(OutlookMAPI)
    
    Возврат OutlookMAPI.GetDefaultFolder(5);
    
КонецФункции
13 vudich
 
13.12.15
18:22
Outlook = Новый COMОбъект("Outlook.Application");
    //поиск задач
    myNameSpace = Outlook.GetNamespace("MAPI");
    ПочтаСтр = УправлениеКонтактнойИнформацией.ПолучитьEmailИзКонтактнойИнформации(ПараметрыСеанса.ТекущийПользователь);
    //Сообщить("Почта пользователя: "+ ПочтаСтр);
    //Сообщить("Количество почт в Оутлук: "+ myNameSpace.Folders.Count());
    Для Инд = 1 ПО myNameSpace.Folders.Count() Цикл
        Если ПочтаСтр = myNameSpace.Folders.Item(Инд).Name Тогда
            COMНабор = myNameSpace.Folders.Item(Инд);
            //Сообщить("Количество папок в почте Оутлук: "+ COMНабор.Folders.Count());
            Для н = 1 ПО COMНабор.Folders.Count() Цикл
                ВложНаборПисем = COMНабор.Folders.Item(н);
                Если ВложНаборПисем.DefaultMessageClass <> "IPM.Note" Тогда
                    Продолжить;
                КонецЕсли;    
                ЗаполнитьТЗ(ВложНаборПисем.Items);
                Для ш = 1 ПО ВложНаборПисем.Folders.Count() Цикл
                    //Сообщить("Количество папок: "+ ВложНаборПисем.Folders.Count() + " в папке: " + COMНабор.Folders.Item(н).Name);
                    Письма = ВложНаборПисем.Folders.Item(ш);
                    ЗаполнитьТЗ(Письма.Items);
                    Для в = 1 ПО Письма.Folders.Count() Цикл
                        //Сообщить("Количество папок: "+ Письма.Folders.Count() + " в папке: " + ВложНаборПисем.Folders.Item(ш).Name);
                        Пис = Письма.Folders.Item(в);
                        ЗаполнитьТЗ(Пис.Items);
                        Для у = 1 ПО Пис.Folders.Count() Цикл
                            //Сообщить("Количество писем: "+ Пис1.Items.Count + " в последней папке: " + ВложНаборПисем.Folders.Item(в).Name);
                            Пис1 = Пис.Folders.Item(у);
                            ЗаполнитьТЗ(Пис1.Items);
                        КонецЦикла;    
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЕсли;    
    КонецЦикла;
14 vudich
 
13.12.15
18:23
мой код--перебрал папки, заходил и в "Исходящие"-Количество 0
15 vudich
 
13.12.15
18:27
Все разобрался:kotletka(2) был пра---я смотрел исходящие,которые "OUTLOOK" удаляет,а следующую папку(отправленные) я не видел.Сорри затупил
Тему можна закрыть
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший