КОМПОНЕНТА ROM-Mail, без вложения отправляет, а с файлом - нет (7.7)

Новая тема
Показывать по 10 20 40 сообщений
Попробую поискать - правда уже 1 год прошел. щас выложу процедуру с dial mail, все равно лучше сработало. уже год с помощью нее отправляю файлы заказов, накладные и тд.
"Процедура ПолучитьПисьма()
Если ЗагрузитьВнешнююКомпоненту("DialMail.dll")=0 Тогда
Сообщить("Не удалось обнаружить компоненту DialMail.dll!");
Возврат ;
КонецЕсли;
Попытка
ПолучениеПочты = СоздатьОбъект("AddIn.POP3");
ZIP = СоздатьОбъект("AddIn.ZIP");  
ZIP.ПутьКБиблиотекам = КаталогПрограммы();
SystComm = СоздатьОбъект("AddIn.SystComm");

ПолучениеПочты.ВестиЛогФайл = 0;
Исключение
Сообщить("Не удалось создать объекты из компоненты DialMail.dll!");
Возврат ;
КонецПопытки;

ПолучениеПочты.РабочийКаталог = СокрЛП(Константа.РабочийКаталог);
КаталогДляПрисоединенныхФайлов = СокрЛП(Константа.РабочийКаталог);
СписокФайлов   = СоздатьОбъект("СписокЗначений");
СписокПараметров = СоздатьОбъект("СписокЗначений");
СписокПараметров.Установить("Процесс","загрузкапочта");

Если ПолучениеПочты.Подключиться("pop.mail.ru",110,Сокрлп(Константа.ЭлектроннаяПочта),"Пароль")=0 тогда
Предупреждение("Не смогли подключиться к POP3-серверу");
Возврат ;
КонецЕсли;

Сообщить("Подключились к почтовому серверу!");

ВсегоПисемНаСервере=ПолучениеПочты.КоличествоПисем;

Сообщить("Всего писем на сервере - "+Строка(ВсегоПисемНаСервере));
Если ВсегоПисемНаСервере = 0 Тогда
ПолучениеПочты.Отключиться();
Возврат;
КонецЕсли;


Сообщить("Получаем письма...!");

Если ПолучениеПочты.ПолучитьвсеПисьма(1,1,0,) = 0 Тогда    
Предупреждение("Ошибка получения писем");
Возврат;
КонецЕсли;

ВсегоПисемНаКомпьютере = ПолучениеПочты.КоличествоПисемВРабочемКаталоге;
ПорядковыйНомерСправочника = 0;//для запоминания строки со справочником в СпискеФайлов
Для ш = 1 по ВсегоПисемНаКомпьютере Цикл
ПолучениеПочты.Распаковатьписьмо(ш);
Для СчетчикКолваПрисоединФайлов = 1 По Получениепочты.КоличествоПрисоединенныхФайлов Цикл
ИмяТекущегоФайла = ПолучениеПочты.СохранитьПрисоединенныйФайл(СчетчикКолваПрисоединФайлов,КаталогДляПрисоединенныхФайлов);  
Если Найти(ИмяТекущегоФайла,"Spr")<>0 Тогда//это справочник
ПорядковыйНомерСправочника = СписокФайлов.РазмерСписка()+1;//типа следующий будет по списку
КонецЕсли;
//проверим на архив
Если Найти(ИмяТекущегоФайла,".zip")<>0 Тогда
ИмяТекущегоФайла = Разархивировать(КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
КонецЕсли;
СписокФайлов.ДобавитьЗначение(ИмяТекущегоФайла);
КонецЦикла;  
КонецЦикла;

ПолучениеПочты.ОчиститьРабочийКаталог();
//теперь пройдемся по всем строкам списка    
//сначала справочник
Если ПорядковыйНомерСправочника<>0 Тогда
ИмяТекущегоФайла = СписокФайлов.ПолучитьЗначение(ПорядковыйНомерСправочника);
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем справочник...!");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаСПР.ert");
СписокФайлов.УдалитьЗначение(ПорядковыйНомерСправочника);
КонецЕсли;
//теперь грузим все остальные файлы
Для ш=1 По СписокФайлов.РазмерСписка() Цикл
ИмяТекущегоФайла = СписокФайлов.ПолучитьЗначение(ш);
Если Найти(ИмяТекущегоФайла,"prm") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем поступление...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\Загрузкапоступления.ert");
ИначеЕсли Найти(ИмяТекущегоФайла,"sps") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем списание...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаСписание.ert");
ИначеЕсли Найти(ИмяТекущегоФайла,"opr") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем оприходование...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаОприход.ert");
ИначеЕсли Найти(ИмяТекущегоФайла,"per") = 1 Тогда
СписокПараметров.Установить("ИмяФайла",КаталогДляПрисоединенныхФайлов+ИмяТекущегоФайла);
Сообщить("Загружаем переоценку...");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\ЗагрузкаПереоценка.ert");
КонецЕсли;
КонецЦикла;

Сообщить("Все файлы загружены");
ПолучениеПочты.Отключиться();
КонецПроцедуры

Процедура получает письма в каталог, записывая при этом названия файлов, а потом проходится по ним и загружает сначала справочник (цены и новые элементы), потом все документы (Поступление, списание, оприходование, переоценку). ZIP - это компонента zip.dll для архивирования файла справочника, а то когда скорость интернета маленькая - грузит мин 20."
Читают тему
(гостей: 1)

Быстрый переход