Попытка ОтправитьПоПочте2(ТекСтрока); // работает с Батом Исключение Попытка ОтправитьПоПочте1(ТекСтрока); // работает с Аутлуком, но переспрашивает при отправке Исключение Сообщить_и_записать("Ошибка при отправке почты - "+ОписаниеОшибки(),СтатусСообщения.Важное); КонецПопытки; КонецПопытки; Процедура ОтправитьПоПочте1(ТекСтрока) Почта = Новый Почта; Сообщение = Новый ПочтовоеСообщение; //Работает с Аутглуком, но переспрашивает при отправке //не работает с Батом 3.60 Почта.Подключиться("name@mysite.dp.ua","password"); Сообщение.Вложения.Добавить(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование)); Сообщение.Получатели.Добавить(ТекСтрока.филиал.email); Сообщение.Тема ="Проигнорированные документы в офисе. Письмо сгенерированно роботом"; Сообщение.Текст="Проверьте, будь ласка эти документы ПОСЛЕ получения обновления из офиса. Ваши изменения в этих документах не попали в базу. Откройте прикрепленный файл"; Почта.Послать(Сообщение); Почта.Отключиться(); УдалитьФайлы(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование)); КонецПроцедуры Процедура ОтправитьПоПочте2(ТекСтрока) ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль; ПочтовыйПрофиль.АдресСервераPOP3 = "pop3.mysite.dp.ua"; ПочтовыйПрофиль.АдресСервераSMTP = "smtp.mysite.dp.ua"; ПочтовыйПрофиль.ПортSMTP = 25; ПочтовыйПрофиль.ПортPOP3 = 110; ПочтовыйПрофиль.Пользователь = "name"; ПочтовыйПрофиль.Пароль = "password"; ПочтовыйПрофиль.ВремяОжидания = 60; Сообщение = Новый ИнтернетПочтовоеСообщение ; Сообщение.Вложения.Добавить(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование)); Сообщение.Получатели.Добавить(ТекСтрока.филиал.email); Сообщение.Тема ="Проигнорированные документы в офисе. Письмо сгенерированно роботом"; Сообщение.ИмяОтправителя="Обмен"; Сообщение.Отправитель="name@mysite.dp.ua"; Текст = Сообщение.Тексты.Добавить("Проверьте, будь ласка эти документы ПОСЛЕ получения обновления из офиса. Ваши изменения в этих документах не попали в базу. Откройте прикрепленный файл"); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Почта = Новый ИнтернетПочта(); Почта.Подключиться(ПочтовыйПрофиль); Почта.Послать(Сообщение); Почта.Отключиться(); УдалитьФайлы(ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование)); КонецПроцедуры
ПутьМозиллы = """C:/Program Files/Mozilla Thunderbird/thunderbird.exe"""; Текст = Новый ЗаписьТекста(КаталогОбмена + "sendfiletofilial"+Строка(ТекСтрока.филиал.наименование)+".bat", КодировкаТекста.OEM); Текст.ЗаписатьСтроку("@echo off"); Текст.ЗаписатьСтроку("@echo Отправка проигнорированных писем на филиал"+Строка(ТекСтрока.филиал.наименование)); СтрокаЗапуска = " -compose to='"+ТекСтрока.филиал.email+"',cc='name@mysite.dp.ua',subject=""Проигнорированные документы в офисе. Письмо сгенерированно роботом"",body=""Проигнорированные документы в офисе. Письмо сгенерированно роботом"",attachment=""file://"; Файл = """"+ПолучитьИмяФайлаПодразделения(ТекСтрока.филиал.наименование)+""""; Текст.ЗаписатьСтроку(ПутьМозиллы+СтрокаЗапуска +Файл); Текст.ЗаписатьСтроку("del "+Файл); Текст.Закрыть(); ЗапуститьПриложение(КаталогОбмена + "sendfiletofilial"+Строка(ТекСтрока.филиал.наименование)+".bat",КаталогОбмена)
Процедура КнопкаВыполнитьНажатие(Кнопка) Почта = Новый ИнтернетПочта; Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераPOP3 = "192.168.0.2"; Профиль.Пользователь = "romix"; Профиль.Пароль = "ТутНапишитеПароль"; Почта.Подключиться(Профиль); МассивПисем = Почта.Выбрать(Ложь); Для Каждого Письмо из МассивПисем Цикл Сообщить("Получено письмо с заголовоком: "+Письмо.Тема); Для Каждого Вложение из Письмо.Вложения Цикл Сообщить("Вложение: "+Вложение.ИмяФайла); Вложение.Данные.Записать("c:\tempdata\"+Вложение.ИмяФайла); КонецЦикла; Для Каждого Текст из Письмо.Тексты Цикл Сообщить("Текст: "+Текст.Текст); Текст.Данные.Записать("c:\tempdata\ТекстСообщения.txt"); КонецЦикла; КонецЦикла; КонецПроцедуры
Код //Функция открывает таблицу в MS Excel //Таблица - печатная форма 1С //ИмяЛиста - имя, которое будет присвоено листу книги MS Excel (если не задано, то остается "Sheet1") //ОтображатьЯрлычки - показывать/скрыть ярлычки листов в MS Excel //ОтображатьСетку - показывать/скрыть линии сетки в MS Excel //УдалитьСтроки - позволяет удалить указанное количество верхних строк таблицы //УдалитьСтроки - позволяет удалить указанное количество левых столбцов таблицы Функция глОткрытьТаблицуВExcel(Таблица, ИмяЛиста = "", ОтображатьЯрлычки = 1, ОтображатьСетку = 1, УдалитьСтроки = 0, УдалитьСтолбцы = 0) Экспорт Перем Excel, ExcelWB, ExcelSh, ExcelPS, ИмяФайла, Рез, Зн, Зн1; Если ТипЗначенияСтр(Таблица) <> "Таблица" Тогда Возврат 0; КонецЕсли; Попытка Excel = СоздатьОбъект("Excel.Application") Исключение Сообщить("Не удалось открыть MS Excel","!"); Возврат 0; КонецПопытки; Пока 1=1 Цикл //Подберем уникальное имя для временного файла ИмяФайла = КаталогВременныхФайлов() + "1c" + СтрЗаменить(ТекущееВремя(), ":", ""); Если (ФС.СуществуетФайл(ИмяФайла+".tmp") = 1) или (ФС.СуществуетФайл(ИмяФайла+".xls") = 1) Тогда ФС.УдалитьФайл(ИмяФайла+".tmp"); ФС.УдалитьФайл(ИмяФайла+".xls") Иначе Прервать; КонецЕсли КонецЦикла; Таблица.Записать(ИмяФайла+".tmp", "XLS"); Если ФС.СуществуетФайл(ИмяФайла+".tmp") = 0 Тогда Сообщить("Ошибка записи файла """ + ИмяФайла + "tmp""","!"); Excel = ""; Возврат 0; КонецЕсли; Рез = 1; Попытка ExcelWB = Excel.Workbooks.Add(ИмяФайла+".tmp"); //Откроем временный файл в Excel в режиме шаблона (чтобы не блокировать файл) Попытка //Если на клиентской машине не установлен принтер, обращение к настройкам страницы вызывает ошибку. Поэтому работаем в "Попытка ... КонецПопытки" ExcelPS = ExcelWB.Sheets(1).PageSetup; //Исправим спецсимволы в колонтитулах Зн = ExcelPS.LeftHeader; Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.LeftHeader = Зн1 КонецЕсли; Зн = ExcelPS.CenterHeader; Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.CenterHeader = Зн1 КонецЕсли; Зн = ExcelPS.RightHeader; Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.RightHeader = Зн1 КонецЕсли; Зн = ExcelPS.LeftFooter; Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.LeftFooter = Зн1 КонецЕсли; Зн = ExcelPS.CenterFooter; Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.CenterFooter = Зн1 КонецЕсли; Зн = ExcelPS.RightFooter; Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.RightFooter = Зн1 КонецЕсли; Исключение КонецПопытки; ExcelWB.SaveAs(ИмяФайла+".xls", -4143); //Сохраним, чтобы обновить формат файла до текущего (xlNormal = -4143) ExcelWB.Close(0); //Закроем книгу ... ExcelWB = Excel.Workbooks.Add(ИмяФайла+".xls"); //... и вновь откроем в режиме шаблона Попытка ExcelSh = ExcelWB.Sheets(1); Если ПустаяСтрока(ИмяЛиста) = 0 Тогда //Зададим имя ярлычка ExcelSh.Name = ИмяЛиста КонецЕсли; Если ОтображатьЯрлычки = 1 Тогда //Сделаем видимыми ярлычки листов ExcelWB.Windows(1).DisplayWorkbookTabs = 1; ExcelWB.Windows(1).TabRatio = 0.6 //... и отодвинем горизонтальную полосу прокрутки от левого края КонецЕсли; Если ОтображатьСетку = 0 Тогда //Скроем линии сетки ExcelWB.Windows(1).DisplayGridlines = 0 КонецЕсли; Если УдалитьСтроки > 0 Тогда //Удалим верхние строки ExcelSh.Range(ExcelSh.Rows(1), ExcelSh.Rows(УдалитьСтроки)).Delete() КонецЕсли; Если УдалитьСтолбцы > 0 Тогда //Удалим левые столбцы ExcelSh.Range(ExcelSh.Columns(1), ExcelSh.Columns(УдалитьСтолбцы)).Delete() КонецЕсли; Исключение КонецПопытки; ExcelWB.Saved = 0; Исключение Сообщить("Ошибка открытия файла в MS Excel","!"); Рез = 0 КонецПопытки; Попытка Excel.Visible = 1 Исключение КонецПопытки; ExcelWB = ""; ExcelSh = ""; ExcelPS = ""; Excel = ""; ФС.УдалитьФайл(ИмяФайла+".tmp"); ФС.УдалитьФайл(ИмяФайла+".xls"); Возврат Рез КонецФункции //глОткрытьТаблицуВExcel