Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Загрузка файла в базу 1С. (число прочтений - 6651 )
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Загрузка файла в базу 1С.
Ответ #15 - 20. Мая 2008 :: 11:08
Печать  
chessman писал(а) 20. Мая 2008 :: 09:27:
спасиб.
разобрался.

решение в студию Подмигивание
п.с. для последователей
  
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Загрузка файла в базу 1С.
Ответ #16 - 28. Мая 2008 :: 07:10
Печать  
Сори, что долго не отвечал.

Для доступа к почте по протоколам POP3 и SMTP рекомендую http://www.rom1c.narod.ru/rom_mail.html
У меня эти протоколы не живут, поэтому приходится использовать интерфейс MAPI.

В обоих случаях идея такова - получаем доступ к почтовику, загоняем сообщения например в ТЗ, а дальше представляем это в виде удобного интерфейса.
Я не стал заморачиваться с ВК, а решил это на основе стандартной технологии OLE.
Для примера взял код на Бейсике с сайта Микрософта.

Т.к. объектная модель Outlook'а достаточно сложная, предлагаю установить оч. полезную компоненту
http://www.dimastr.com/outspy/

Из хотелок не удалось получить доступ к некоторым параметрам письма, как то - адрес отправителя и подобным. Собственно доступ-то получить удается, но система безопастности выкидывает при этом окошко для подтвержления доступа. Вот тут написано об этом подробнее http://www.mapilab.com/ru/support/articles/vb_outlook_security_1.html. На этом же ресурсе можно скачать ВК, которая обходит эту защиту, но мне не удалось ее прикрутить к 1C. Из -за отсутствия времени забил на это.

Вот, что получилось:
//=========================================
Процедура ЗагрузитьВложенияИзПочты(Конт, ОбъектШифрования = "", НомерСтроки) Экспорт
     РасшТЗ = СоздатьОбъект("РасшТаблицаЗначений");      
     РасшТЗ.НоваяКолонка("Сообщение");
     РасшТЗ.НоваяКолонка("Дата"        , "Дата"  , , , "Дата сооб." , 12);
     РасшТЗ.НоваяКолонка("Вложения", "Строка", , , "Вложения"   , 40);
     РасшТЗ.НоваяКолонка("Тема"        , "Строка", , , "Тема сообщ.", 40);
     РасшТЗ.ВидимостьКолонки("Сообщение", 0);
     
     ПочтовыйКлиент = CreateObject("Outlook.Application");
     Почта          = ПочтовыйКлиент.GetNamespace("MAPI");
     ПапкаВходящие  = Почта.GetDefaultFolder(6);
     
     вспНачДата     = СтрЗаменить(Строка(Формат(ТекущаяДата() - 5, "ДДДММГГГ")), ".", "/");
     Последние      = ПапкаВходящие.Items.Restrict("[ReceivedTime] > '" + вспНачДата + "'");
     Попытка
           КолвоСообщений = Последние.Count();
     Исключение
           DoMessageBox("Сообщения, за последние 5 дней, не найдены!");
           Возврат;
     КонецПопытки;
         
     Состояние("Получение списка сообщений...");
     
     Попытка
           текСообщение = Последние.GetFirst();
           While 1 >0 Do
                 If текСообщение.Attachments.Count() = 0 Then
                       текСообщение = Последние.GetNext();
                       Продолжить;
                 EndIf;
                 
                 СписокВложений = "";
                 For i = 1 To текСообщение.Attachments.Count() Do
                       Файл           = текСообщение.Attachments.Item(i);
                       СписокВложений = СписокВложений + СокрЛП(Файл.FileName) + ", ";
                 EndDo;                                
                   
                 РасшТЗ.НоваяСтрока();
                 РасшТЗ.Сообщение = текСообщение;
                 РасшТЗ.Дата      = текСообщение.ReceivedTime;
                 РасшТЗ.Тема      = текСообщение.Subject;
                 РасшТЗ.Вложения  = Лев(СписокВложений, СтрДлина(СписокВложений) - 2);
                 
                 текСообщение = Последние.GetNext();
           EndDo;
     Исключение
           
     КонецПопытки;
     
     If РасшТЗ.КоличествоСтрок() = 0  Then
           DoMessageBox("Нет сообщений с вложениями за последние 5 дней!");
           Возврат;
     EndIf;
     
     РасшТЗ.Сортировать("Дата-", );
     РасшТЗ.ОтметитьЗначения();
                     
     Попытка
           Файл = СоздатьОбъект("ФС");
           Флаг = 0;
           РасшТЗ.ВыбратьСтроки();
           While РасшТЗ.ПолучитьСтроку() >0 Do
                 If РасшТЗ.Пометка() > 0 Then
                       Сообщение = РасшТЗ.Сообщение;
                       For i = 1 To Сообщение.Attachments.Count() Do
                             вложФайл = Сообщение.Attachments.Item(i);
                             вложФайл.SaveAsFile("C:\temp\" + вложФайл.FileName);
                             вспЗагрузитьДокумент(Конт, ОбъектШифрования, НомерСтроки, вложФайл.FileName, "C:\temp\" + вложФайл.FileName, 0);
                             Файл.УдалитьФайл("C:\temp\" + вложФайл.FileName);
                             Флаг = 1;
                       EndDo;      
                 EndIf;
           EndDo;
     
           If Флаг = 1 Then
                 DoMessageBox("Документ(ы) успешно добавлен(ы)!");
           EndIf;
     Исключение
           Сообщить(ОписаниеОшибки());
     КонецПопытки;      
КонецПроцедуры
//====================

РасшТаблицаЗначений это самописный класс для отметки значений в ТЗ, как это сделано в СпискеЗначений.
« Последняя редакция: 28. Мая 2008 :: 10:40 - chessman »  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Загрузка файла в базу 1С.
Ответ #17 - 15. Января 2009 :: 12:08
Печать  
Для загрузки из почты можно сделать удобный интерфейс
  

Clipboard02_002.jpg ( 135 KB | Загрузки )
Clipboard02_002.jpg
Наверх
 
IP записан
 
g00d
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 68
Зарегистрирован: 13. Ноября 2006
Re: Загрузка файла в базу 1С.
Ответ #18 - 21. Января 2009 :: 19:01
Печать  
chessman писал(а) 15. Января 2009 :: 12:08:
Для загрузки из почты можно сделать удобный интерфейс

красивая реализация
а саму обработку можно попросить ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Загрузка файла в базу 1С.
Ответ #19 - 22. Января 2009 :: 09:41
Печать  
Для начала качаем http://www.mapilab.com/ru/dev/mapiprop/
Нужна для обхода системы безопастности Outlooka.

Немного поменял форму.
Глюки стандартны - прорисовка Outlooka, после потери фокуса 1С. На модальной форме эта проблема не возникала.

Из хотелок:
- прикрутить дерево каталогов, как в Outlooke.
- для вывода тела письма нужно какой-то другой ActiveХ искать.

Поделитесь, кто-как отправляет почту через Exchange из 1С. Нужно сделать рассылку расчетных листов.

  

02.ert ( 47 KB | Загрузки )
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Загрузка файла в базу 1С.
Ответ #20 - 23. Января 2009 :: 06:54
Печать  
chessman писал(а) 22. Января 2009 :: 09:41:
Поделитесь, кто-как отправляет почту через Exchange из 1С. Нужно сделать рассылку расчетных листов.


Вопрос снят. Отправляю напрямую из 1С в обход системы безопастности Outlook'а.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать