КОМПОНЕНТА ROM-Mail, без вложения отправляет, а с файлом - нет (7.7)
Показывать по
10
20
40
сообщений
- 1
- 2
23.05.2011
13:05
#11
Попробую поискать - правда уже 1 год прошел. щас выложу процедуру с dial mail, все равно лучше сработало. уже год с помощью нее отправляю файлы заказов, накладные и тд.
24.05.2011
17:40
#12
"Процедура ПолучитьПисьма()
Если ЗагрузитьВнешнююКомпоненту("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."
Если ЗагрузитьВнешнююКомпоненту("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
- 2
Читают тему
(гостей: 1)