Глава 8 Интернет-технологии
Работа с электронной почтой
В связи с бурным развитием интернет-программирования поддержка сервиса электронной почты стала весьма распространенной задачей для программистов.
Чтобы эффективно решить задачу доступа к электронной почте, пользователю, в своей программе, необходимо понять основы ее устройства. Электронная почта представляет собой совокупность протоколов, регламентирующих обмен данными по сети, а также программных средств, реализующих эти протоколы и предоставляющих пользователю соответствующие интерфейсы. Основными протоколами являются протоколы передачи (отсылки) и чтения писем, которые работают поверх TCP/IP (Transmission Control Protocol/ Internet Protocol — протокол управления передачей данных Интернет). Для передачи сообщений по TCP-соединению подавляющее большинство программных средств пользуется протоколом SMTP (Simple Mail Transfer Protocol). Для приема почтовых сообщений в Интернете обычно используется протокол РОРЗ (Post Office Protocol 3).
Непосредственное использование в конфигурациях системы ''1С:Предприятие" команд протоколов SMTP и РОРЗ не представляется возможным. В связи с этим для работы с электронной почтой будут использоваться средства более высокого уровня (внешние компоненты, приложения и стандартные объекты системы).
Использование команды mailto
Самый простой способ подготовить письмо для отправки — это просто открыть окно создания нового письма почтового клиента, используемого в системе по умолчанию, воспользовавшись при этом системной командой mailto: (ЛИСТИНГ 8.1).
і Листинг 8.1. Создание нового сообщения через почтового клиента
И Открывает окно нового сообщения с заполненными полями // ’’Кому
1", "Тема" и "Текст сообщения”.
ЗапуститьПриложение("mailto:mav@erpg.ru;boss§erpg.ru?subject= Пример%20темы&ЬосІу=Здавствуйте! %0сЩоступ%20открыт. ") ;
// Открывает окно нового сообщения с заполненным адресом получателя
ЗапуститьПриложение("");
// Открывает окно нового сообщения с заполненным адресом получателя и полями "Копия" и "Скрытая копия"
ЗапуститьПриложение("mailto:mav@erpg.ru?subject=npnMep%20TeMbi&cc= erpg§erpg.ru&bcc=");
Синтаксис команды mailto:
mailto :<KoMy>?subject=<TeMa>&cc=<KonHH>&bcc=<CKpbrranKonHH>?&body= <Текст>. Рассмотрим параметры команды:
П subject — тема (заголовок) письма;
О с с — строка с адресами электронной почты, перечисленными через точку с запятой, указывающая адресатов копии сообщения;
О Ьсс — строка с адресами электронной почты, перечисленными через точку с запятой, указывающая адресатов скрытой копии сообщения;
П body — текст сообщения без пробелов и знаков переноса строк.
^ЦВнимание^І
Обратите внимание, что текст, следующий после команды mailto:, должен быть без пробелов. Для указания пробела в тексте используется метка <,-2 0, а для указания символа переноса строки — sOd.
Использование интерфейса MAPI
Для совместимости и стандартизации программного доступа к приложениям, которые работают с электронной почтой, Microsoft разработала набор интерфейсов, называемых MAPI (Messaging Application Program Interface). Архитектура MAPI описывает так называемую подсистему MAPI, которая обеспечивает взаимодействие клиентских приложений с различными службами почтовой системы, такими как служба хранения информации, транспортная служба и т. д. Все почтовые клиенты, которые предназначены для функционирования в операционной системе Microsoft Windows, должны поддерживать интерфейсы MAPI. С другой стороны, MAPI — это прикладной интерфейс, который был создан для того, чтобы разработчики на раз-
личных языках программирования, в том числе и на встроенном языке системы "1С:Предприятие", имели бы возможность добавлять в свои приложения функцию для работы с электронной почтой. С точки зрения прикладной программы, подсистема MAPI — это набор динамических библиотек, содержащих функции и объектно-ориентированные интерфейсы, благодаря которым взаимодействуют клиентские и серверные части почтовых приложений. Это значит, что, если в системе функционирует почтовый клиент, совместимый с MAPI (а их подавляющее большинство), то можно обратиться к нему через MAPI-интерфейс посредством некоторых вызовов и выполнить нужные операции, например, сформировать и отправить письмо. При этом пользователь обращается к почтовому клиенту, используемому в системе по умолчанию, и всего лишь "поручает" ему выполнить необходимые действия. Как он это сделает, зависит лишь от его настроек. Отсюда возникают и минусы, и плюсы.
Основной минус в том, что MAPI ограничивает возможности программирования набором своих интерфейсов и функциональными возможностями почтового клиента. Более того, различные почтовые клиенты могут иметь различный набор команд.
Плюсы состоят в том, что всегда можно найти отправленное системой письмо в папке Исходящие или Отправленные, а полученное — в папке Входящие почтового клиента. При этом не нужно заботиться о подключении к Интернету (почтовый клиент сам все отправит при первом подключении).
Корпорация Microsoft поставляет элемент управления MSMAPI32.OCX, содержащий простые компоненты ActiveX, позволяющие работать с MAPI из среды любых языков программирования, поддерживающих OLE-автоматизацию. ActiveX содержит два объекта: MAPI Session и MAPlMessage. MAPisession отвечает за установление и окончание сеанса связи с провайдером Интернета. Его функции и свойства позволяют задать параметры установления соединения, а затем, при необходимости, разорвать его. MAPiMessages предоставляет функции и свойства для работы с почтовыми сообщениями.
Оба объекта можно создать в конфигурации системы "1С:Предприятие". Для версии 7.7 — используется функция СоздатьОбъект, а для версии 8.0 —
Новый СОМОбъект.
Для инициализации сеанса связи (сессии) необходимо вызвать функцию signOn объекта MAPisession, а для того чтобы использовать объект MAPiMessages, нужно связать его С объектом MAPISession (ЛИСТИНГ 8.2). Для завершения сессии вызывается функция signoff объекта MAPisession.
MessageCtrl = СоздатьОбъект("MSMAPI.MAPIMessages");
// Задаем имя пользователя
SessionCtrl.UserName = "MyName";
// Задаем пароль пользователя
SessionCtrl.Password = "MyPassword";
// Открываем сессию
SessionCtrl.SignOn();
// Связываем элементы управления, используя идентификатор сессии
MessageCtrl.SessionID = SessionCtrl.SessionID;
//
// Закрываем сессию
SessionCtrl.SignOff();
Свойства UserName и Password объекта MAPISession задают имя профиля и пароль доступа к нему, если в качестве почтовой системы используется Microsoft Mail. Если же применяется Microsoft Outlook, эти свойства ни на что не влияют, а в качестве активной учетной записи используется учетная запись, выставленная по умолчанию.
Для чтения входящих писем используется метод Fetch, после вызова которого заполняется коллекция сообщений объекта MAPIMessages. После заполнения коллекции переменная MessageCtrl содержит письмо с индексом, который определяется свойством Msglndex.
В листинге 8.3 приведен пример вывода содержания писем, находящихся в папке Входящие.
сем через интерфейс MAPI
Листинг 8.3. Чтение входящих
¦НМММЯПНПМННВНЯННІ
// Элемент управления Session
SessionCtrl = СоздатьОбъект("MSMAPI.MAPISession");
// Элемент управления Messages
MessageCtrl = СоздатьОбъект("MSMAPI.MAPIMessages");
// Открываем сессию
SessionCtrl.SignOn();
// Связываем элементы управления, используя идентификатор сессии
MessageCtrl.SessionID = SessionCtrl.SessionID;.
// Выбирать для отображения все почтовые сообщения.
// Если вы хотите отображать только непрочитанные сообщения,
// нужно присвоить свойству FetchUnreadOnly значение -1 (Истина)
.285
MessageCtrl.FetchUnreadOnly =0; // Ложь // Выбрать письма MessageCtrl.Fetch();
Для Ном = 0 по MessageCtrl.MsgCount - 1 Цикл // Установить индекс для сообщения MessageCtrl.Msglndex = Ном;
// Сформировать текст из темы и тела почтового сообщения
ТекстПисьма = "Тема: ” + MessageCtrl .MsgSubjecc + "Текст: +
MessageCtrl.MsgNoteText;
Сообщить(ТекстПисьма);
КонецЦикла;
// Закрываем сессию
SessionCtrl.SignOff();
С помощью данного кода будет получен список всех тем и текстов писем из папки Входящие. Свойства MsgSubject И MsgNoteText объекта MAPiMessages возвращают тему и содержание письма. Возможно получить доступ и к другой информации, заложенной в письмах. Например, для вывода имени и электронного адреса отправителя можно использовать свойства MsgOrigDisplayName И MsgOrigAddress соответственно, СВОЙСТВО MsgDateReceived будет содержать дату получения письма.
Для создания письма снова используется объект MAPIMessages. Перед отправкой нужно задать несколько необходимых параметров и, если нужно, присоединить файлы (листинг 8.4).
р-----------¦------------------г—.....................-.....-.........—.....—..........................-"Г,- •
j Листинг 8.4. Отправка письма через интерфейс MAPI
I. .__________.__________________________________________________ іі ___________1_____________________ііііі. 1
// Элемент управления Session
SessionCtrl = СоздатьОбъект("MSMAPI.MAPISession");
// Элемент управления Messages
MessageCtrl = СоздатьОбъект("MSMAPI.MAPiMessages");
// Открываем сессию
SessionCtrl.SignOn();
// Связываем элементы управления, используя идентификатор сессии
MessageCtrl.SessionID = SessionCtrl.SessionID;
// Подготовиться к отправке сообщения
MessageCtrl.Compose();
И Установить e-mail получателя
MessageCtrl.RecipAddress = "";
// Установить тему сообщения
MessageCtrl .MsgSubject = "Заголовок тестового письма"; // З аполнить тело сообщения
MessageCtrl.MsgNoteText = "Это тестовое письмо";
// Присоединяем к письму два файла
MessageCtrl.AttachmentIndex = 0;
MessageCtrl.AttachmentPathName = ("C:\filel.txt”);
MessageCtrl.Attachmentlndex = 1;
MessageCtrl.AttachmentPathName ~ ( ”0:\f .i le2 . txt" ) ;
/ / Отправить без отображения стандартного диалога отправки сообщения
MessageCtrl.Send(0);
// З акрываем сессию
SessionCtrl.SignOff() ;
Примечание_^
Указывая в качестве параметра метода send значение "Истина" (-1), можно разрешить показ окна Создание нового письма.
Использование компоненты V7Plus.dll
Внешняя компонента V7Plus.dll состоит из четырех объектов: ?7маі1, V7SysInfo, V7HttpReader И XMLParser.
_Примечание
В данной главе будет рассматривается только объект работы с электронной почтой — ?7МаіІ, который позволяет работать с любым почтовым клиентом, работающим через MAPI (например, Microsoft Outlook Express или Microsoft Outlook).
Инициализация внешней компоненты осуществляется с помощью метода ЗагрузитьВнешнююКомпоненту("V7Plus.dll"), а для доступа к свойствам и методам объекта необходимо вызвать функцию СоздатьОбъект ("Addin. ?7Маі1"), которая возвращает ссылку на объект WMail.
Рассмотрим общий алгоритм получения писем:
1. Установка соединения с помощью метода подключиться.
287
2. Инициализация процесса приема сообщений с помощью метода ВыбратьСообщения.
3. Организация цикла получения сообщений с помощью метода ПолучитьСообщение.
4. С ПОМОЩЬЮ методов ПрочйтатьСообщение И ПолучитьФайл МОЖНО ПОЛучить доступ к тексту сообщения и присоединенным файлам.
5. С помощью свойств заголовок и Текст можно получить доступ к заголовку сообщения и его тексту.
6. Завершение работы с почтой происходит с помощью метода Отключиться.
Пример реализации данного алгоритма приведен в листинге 8.5.
имиааикияк
¦ ¦ . . і'И ІЯ ¦: : , , , ,
Листинг 8.5. Чтение входящих писем через компоненту V7PIUS.all
¦ПИ HwBBB Ни
_________ .... . ; ... ..... Щ ..
Jiepei.i Путь, ИмяФайла;
// Загрузка компоненты V /Plus.сП!
ЗагрузитьВнешнююКомпоненту("?7 Plus.dll");
Почта = СоздатьОбъект("Addin.?7Маі1");
ТекстДок=Создать0бъект("Текст");
// Инициализируем сеанс работы с почтой в соответствии
выбранным на закладке свойств компоненты типом почты и параметрами подключения
Почта.Подключиться();
// Инициализируем процесс получения сообщений
Почта.ВыбратьСообщения();
Пока Почта,ПолучитьСообщение() = 1 Цикл
// Получаем адрес, с которого было отправлено сообщение АдресОтправителя=Почта. ДцресОтправителя();
// Тема сообщения Заголовок=Почта.Заголовок;
// Получаем содержимое сообщения (текст и присоединенные файлы)
Почта.ПрочйтатьСообщение(0) ;
// Текст сообщения
Текст=Почта.Текст;
// Получить имя и каталог следующего присоединенного файла сообщения Пока Почта.ПолучитьФайл(Путь, ИмяФайла) = 1 Цикл ТекстДок.Открыть(Путь+ИмяФайла);
ТекстДок.ТолыхоПросмотр(1);
ТекстДок.Показать(Заголовок);
КонецЦикла;
КонецЦикла;
// Завершает сеанс работы с почтой
Почта.Отключить ся(); .
Алгоритм отправки сообщения будет состоять из следующих шагов.
1. Установка соединения с помощью метода подключиться.
2. Инициализация процесса создания нового сообщения с помощью метода
НовоеСообщение.
3. С помощью метода ДобавитьАдрес можно задать один или несколько адресов получателей.
4. С помощью метода добавитьФайл можно прикрепить один или несколько файлов к сообщению.
5. С помощью свойств Заголовок и текст можно задать заголовок сообщения и его текст.
6. Отправка сообщения происходит посредством вызова метода послать.
7. Завершение работы с почтой происходит с помощью метода Отключиться.
В листинге 8.6 приведен пример отправки сообщения с помощью компоненты V7Plus.dll.
Листинг 8.6. Отправка письма через компоненту V7Plus.dll
// Загрузка компоненты V7Plus.dll
ЗагрузитьВнешнююКомпоненту("V7 Plus.dll");
Почта = СоздатьОбъект("Addin.V7Mail") ;
// Метод Подключиться инициализирует сеанс работы с почтой MAPI // с соответствующими параметрами подключения и паролем.
Почта. Подключить ся ("МАР Г',"",
// Инициализируем создание нового сообщения
Почта.НовоеСообщение();
// Добавляем адрес в список адресов получателей
Почта.ДобавитьАдрес("");
// Добавляем имя нового файла в список присоединенных файлов сообщения
Почта.ДобавитьФайл("C:\file.txt”);
// Тема сообщения
Почта.Заголовокъ "Привет!”;
// Текст сообщения
Почта.Текст="Добрый день! Жду результатов совещания.";
// Отправить сообщение
Почта.Послать () ;
// Завершает сеанс работы с почтой
Почта.Отключиться();
Примечание
Подробное описание всех методов и свойств объекта ?7маіі можно найти в документации к компоненте.
Так как объект WMail компоненты V7Plus.dll работает через интерфейс MAPI, то при работе с ней сохраняются все особенности — плюсы и минусы использования интерфейса MAPI, которые были описаны ранее.
Использование компоненты Rom-Mail.dll
Все вышеописанные методы интеграции с электронной почтой используют интерфейс MAPI. Для работы напрямую с почтовыми серверами через протоколы РОРЗ и SMTP в системе "1С:Прелприятие 7.7" лучше всего использовать компоненту Rom-Mail.dll, которая распространяется бесплатно автором Олегом Ризвановым.
Компонентой поддерживаются следующие функции:
П стандарты MIME, UU-ENCODE;
О кодирование Base64 и QuotedPrintable;
П основные таблицы кодировок кириллицы: DOS, Windows-1251, KOI8-R, MAC;
П сообщения, состоящие из нескольких частей (multipart);
П отправка, получение, сохранение вложенных файлов (attachment);
О отправка тела сообщения в форматах TEKCT(plain/text), HTML(plain/html), RTF(richable);
П доступ как к указанной строке тела сообщения (построчное чтение), так и получение всего тела сообщения сразу;
П использование полей СС (копия) и ВСС (скрытая копия);
П настройка параметров соединения на странице свойств компоненты;
П сохранение соединения (keep alive);
П настройка аутентификации на странице свойств;
П возможность установки произвольного значения полей АдресОтправителя (From) и ИмяОтправителя (FromName), а также оставлять эти значения пустыми;
? выбор вида аутентификации при входе на SMTP-сервер;
П возможность выбора — забирать или оставлять сообщения на сервере;
П возможность установки каталога для сохранения вложений;
П пометка/снятие пометки на удаление;
П 20 направлений перекодировки в различные таблицы кодировок;
П поддержка функции контроля соединения (Ping).
Внешняя компонента ROM-Mail.dll содержит только один объект AddlnMail. В листинге 8.7 приведен пример загрузки внешней компоненты.
. jTA .......’"'ПЖ^МИШІ
..................
!............ ”"Г..................... '......’...............
Листинг 8.7. Загрузка внешней компоненты
_______’ "
// Загрузка внешней компоненты
Если ЗагрузитьВнешш?юКомпоненту("ROM-Mai-l.dll") = 1 Тогда // Создание объекта AddlnMail ВК = СоздатьОбъект("Addin.AddlnMail");
Иначе
Сообщить("Не удалось загрузить ROM-Mail.dll");
Возврат;
КонецЕсли;
Для чтения писем с РОРЗ-сервера необходимо заполнить параметры подключения к нему и вызвать метод подключиться с параметром "Прием" (листинг 8.8). После подключения необходимо в цикле выбрать все сообщения.
Листинг 8.8. Чтение писем с РОРЗ-сервера
// Загрузка внешней компоненты
Если ЗагрузитьВнешнююКомпоне.чту("ROM-Mai!,dli"} = 1 Тогда // Создание объекта AddlnMail ВК = СоздатьОбъект("Addin.AddlnMail");
Иначе
Сообщить("Не удалось загрузить ROM-Mail.dll”);
Возврат;
КонецЕсли;
// NetBIOS-имя или IP-адрес сервера приема сообщений (РОРЗ)
ВК. СерверПриема = "pop.server.ru";
// Порт сервера приема сообщений
ВК.ПортПриема = 110;
// Логин для аутентификации на РОРЗ-сервере
ВК.Логин = "user";
// Пароль для аутентификации на РОРЗ-сервере
ВК. Пароль = "password" ;
// 1 - оставлять письма на РОРЗ-сервере, 0 - удалять письма с сервера
ВК.ОставлятьНаСервере = 1;
// Разрешить/запретить показ модальных окон предупреждений
ВК.ПоказыватьПредупреждения = 0;
// Выполняет подключение к серверу Если ВК.Подключиться("Прием")=0 Тогда
Предупреждение("Не удалось подключиться к серверу!");
Возврат;
КонецЕсли;
// Выборка писем
Для Индекс = 1 По ВК.КоличествоСообщений() Цикл // Получает сообщение с заданным номером ВК.ПолучитьСообщение(Индекс);
// Заполняем данные письма в таблицу значений
ТЗ.НоваяСтрока();
ТЗ.Отправитель = ВК.ИмяОтправителя;
ТЗ. Адрес = ВК.АдресОтправителя;
Т 3.Тема = ВК.Тема;
ТЗ.Получатель = ВК.АдресПолучателя;
T3.MessageID = ВК.IDMessage; // Идентификатор сообщения ТЗ.Копия = ВК.СС;
ТЗ.Тело = ВК.Тело;
// Имя файла-вложения или список файлов (строка, с разделителем ";")
ТЗ.Вложения = ВК.Вложения;
ТЗ.Дата = ВК.ДатаОтправки;
ТЗ.Размер = ВК.Размер; // Размер сообщения в байтах
КонецЦикла;
// Разрывает установленные соединения
ВК.Отключиться ();
В данном примере вся информация о письмах добавляется в таблицу значений с идентификатором тз.
Примечание
Инициализация данной таблицы значений лежит за рамками данного примера.
При получении тела письма оно может быть в произвольной кодировке. Чтобы преобразовать его к удобочитаемому виду, можно воспользоваться методом перекодировать, первым параметром которого указывается текст письма, а вторым — номер направления перекодировки:
1. Из ALT в ISO.
2. Из ALT в KOI.
3. Из ALT в MAC.
4. Из ALT в WIN.
5. Из ISO в ALT.
6. Из ISO в KOI.
Из ISO в MAC.
8. Из ISO в WIN.
9. Из KOI в ALT.
10. Из KOI в ISO.
Из KOI в MAC.
12. Из KOI в WIN.
13. Из MAC в ALT.
14. Из MAC в ISO.
15. Из MAC в KOI.
16. Из MAC в WIN.
17. Из WIN в ALT.
18. Из WIN в ISO.
19. Из WIN в KOI.
20. Из WIN в MAC.
Метод Перекодировать возвращает строку в кодировке, соответствующей номеру направления преобразования.
В цикле выборки писем, после получения очередного письма, при наличии вложенных файлов, можно сохранить их на жестком диске. Ниже приведен пример сохранения всех вложенных файлов в корневом каталоге диска (листинга 8.9).
¦ИИММИМММИМММДДИДММММ|МИЯДИИММММММИММ|І|ИДД|
: Листинг 8.9. Сохранение вложенных файлов на диск
II ...
Для Индекс = 1 По ВК. КоличествоСообщений (•) Цикл ВК,ПолучитьСообщение(Индекс) ;
//
Если ПустоеЗначение (ВК.Вложения) = 0 Тогда
// Получаем тело сообщения с заданным номером ВК.ПолучитьТело(Индекс);
// Выбираем все вложенные файлы письма Для НомерФайла = 1 По ВК.КоличествоФайлов () Цикл // Получение строки с именем файла-вложения ИмяФайла = ВК.ПолучитьФайл (НомерФайла) ;
// Сохранение файла
ВК.СохранитьФайл (НомерФайла, "С:\" + ИмяФайла); КонецЦикла;
КонецЕсли;
КонецЦикла;
Для отправки письма через SMTP-сервер необходимо подключиться к почтовому серверу, заполнить атрибуты письма и вызвать метод отправить.
В листинге 8.! О приведен пример отправки одиночного письма.
Г**і*
,'***
,**'“Т*.^”"*І .................!
стинг 8.10. Отправка письма через SMTP-сервер
// Загрузка внешней компоненты
Если ЗагрузитьВнешнююКо^оненту("ROM-Hail,dll“' = 1 Тогда
// Создание объекта МсЦдМаіІ ВК = СоздатьОбъект("Addin.AddlnMail") ;
Иначе
Сообщить("Не удалось загрузить ROM-Mail.dll");
Возврат;
КонецЕсли;
// NetBIOS-имя или IP-адрес сервера отправки сообщений (SMTP)
ВК.СерверОтправки = "smtp.server.ru";
// Порт сервера отправки сообщений (SMTP)
ВК.ПортОтправки = 25;
// Логин для аутентификации на SMTP-сервере ВК.Логин = "user";
// Пароль для аутентификации на SMTP-сервере ВК.Пароль = "password";
// SMTP-серверу требуется проверка подлинности
ВК.АутентификацияПриОтправке = 1;
// Выполняет подключение к серверу
Если ВК.Подключиться("Отправка") = 0 Тогда
Предупреждение("Не удалось подключиться к серверу!");
Возврат,¦
КонецЕсли;
ВК.АдресОтправителя = "";
ВК.ИмяОтправителя = "Андрей Михайлов";
ВК.ДцресПолучателя = "Получатель]. <>; Получатель2 <>";
ВК.Копия = "ПолучательЗ <>";
ВК.СкрытаяКопия = "Получатель4 <>";
ВК.Тема = "Тема письма",-
ВК.Толо = "Пример отправки письма";
ВК.Вложения = "C:\Temp\example.ert; C:\Temp\Readme.doc";
ВК.KoflMpoBKa="windows-X251";
ВК.ТипПисьма = 0; // text/plain
ВК.Важность =1; // Высокая
ВК.ПодтверждениеДоставки = 0;
ВК.ПодтверждениеПрочтения = 1;
// Выполнить отправку сообщений с SMTP-сервера
Если ВК.Отправить О = 1 Тогда
Предупреждение("Сообщение отправлено!");
Иначе
Предупреждение("Не удалось отправить сообщение!");
КонецЕсли;
// Разрывает установленные соединения
ВК.Отключиться();
Данный пример демонстрирует отправку письма текстового типа. Для его отправки в формате application/rtf или text/html необходимо в свойстве ТипПисьма указать соответственно значение или 2 и выполнить метод за-грузитьИзФайла, который загружает тело письма из указанного файла.
В компоненте ROM-Mail.dll реализован дополнительный метод Ping, который возвращает процент потерь. После выполнения метода свойство PingText содержит результат выполнения метода ping (листинг 8.1 1).
i Листинг 8.11. Использование метода Ping
я^нн^^^^нін_____ін^нннншяв____-________________..........___нн____hi__________I_____I' нии i
// NetBIOS-имя или IP-адрес хоста Host = "erpg.ru";
// Загрузка внешней компоненты
Если ЗагрузитьБнешнююКомпоненту("ROM-Mail.dll"5 = 1 Тогда // Создание объекта AddlnMail ВК = СоздатьОбъект("Addin.AddlnMail");
Иначе
Сообщить("Не удалось загрузить ROM-Mail.dll");
Возврат;
КонецЕсли;
// Отправляем пакет размером 72 байта по протоколу ICMP
ВК.Ping(Host);
// Вывести результат выполнения метода Ping
Сообщить(ВК.PingText);
Результатом выполнения данного кода будет сообщение вида:
"IP-адрес: 194.135.22.201; Байт отправлено: 72; Байт получено: 72; TTL: 128; Потерь ()%".
Компонента ROM-Mail.dll имеет страницу свойств, атрибуты которой устанавливаются из меню Сервис | Параметры системы " 1С:Предприятие". При использовании страницы свойств создавать объект и инициализировать компоненту следует в глобальном модуле.
Использование объекта Почта
В системе "1C:Предприятие" (версия 8.0) для работы с электронной почтой существует объект почта, который является аналогом объекта ?7Маі1 в системе ”1С:Предприятие" (версия 7.7) в том смысле, что он тоже работает по технологии MAPI.
Рассмотрим все объекты, которые необходимо знать при работе с электронной почтой.
? Почта — основной объект, предназначенный для подключения, отключения соединения, а также для отправки и получения писем.
? — содержит информацию о письме, такую как: тема, текст письма, адресаты, вложения и т. п.
? почтовыйАдрес — содержит информацию о почтовом адресе (электронный адрес и имя пользователя).
Гпава 8
296_
О ПочтовыеАдрес — содержит КОЛЛеКЦИЮ Элементов ПочтовыйАдрес.
П почтовоеВложение — содержит информацию о вложенном файле (данные и имя файла).
О ПочтовыеВложения — содержит коллекцию элементов ПочтовоеВложение.
Для подключения к почтовому клиенту используется метод подключиться объекта почта. Метод Подключиться имеет два параметра. Первый — строковое выражение, обозначающее название профиля для подключения, если параметр не указан, то используется профиль пользователя, установленный по умолчанию. Второй параметр — пароль пользователя, если он требуется при подключении к серверу.
В листинге 8.12 приведен пример подключения к почтовому серверу.
Листинг 8.12. Подключение к почтовому серверу
//Создает объект Почта Почта = Новый Почта;
// Подключение к почтовому серверу
Почта.Подключиться("МА?",);
//. . .
// Оключение от почтового сервера
Почта.Отключиться();
Для получения почты с сервера используется метод выбрать объекта Почта. Метод имеет два параметра. Первый — признак выборки только непрочитанных сообщений. Второй — признак выборки только конвертов сообщений (т. е. без вложений).
В листинге 8.13 приведен пример выборки писем из профиля, используемого по умолчанию, и записи информации о письмах в табличное поле
ТабличноеПолеИнтернетПочта.
лая шцновшити дик |  |
. |  |
Листинг 8.13. Чтение сообщений
——---------—-------1---------
// Создает объект Почта Почта = Новый Почта;
// Подключение к почтовому серверу для получения почты
Почта.Подключиться{ , ) ;
МассивПисем = Почта. Выбрать (Ложь, Истина) ;
// Перебираем массив писем
Для каждого Письмо Из МассивПисем Цикл
Добавляем новую строку в табличное поле
СтрокаТП = ТабличноеПолеИнтернетПочта.Добавить();
Попытка
СтрокаТП.ОтКого = Письмо.Отправитель.Адрес;
Исключение
СтрокаТП.ОтКого = Письмо.Отправитель;
КонецПопытки; ,
Получатели =
// Перебираем всех получателей
Для каждого Получатель Из Письмо.Получатели Цикл
Получатели = Получатели + Получатель.Пользователь + +
Получатель.Адрес + ">
КонецЦикла;
СтрокаТП.Кому = Получатели;
СтрокаТП.Тема = Письмо.Тема;
СтрокаТП.Текст = Письмо.Текст;
// Перебираем вложения
Для каждого Вложение Из Письмо.Вложения Цикл // Сохраняем вложение в папке С; \trail
4.
Вложение.Данные.Записать("С:\Mail\" + Вложение.Имя);
КонецЦикла;
КонецЦикла;
// Оключение от почтового сервера
Почта.Отключиться();
/
В приведенном примере есть несколько особенностей:
1. При обращении к свойству отправитель объекта письмо используется КОНСТРУКЦИЯ По пытка...Исключение...КонецПопытки. Это необходимо вследствие того, что свойство Отправитель может возвращать значение типа строка адреса или почтовыйАдрес. Вместо конструкции Попытка. ..Исключение. ..конецПопытки можно анализировать тип возвращаемого значения.
2. Все файлы вложений автоматически сохраняются в папке "С:\Маі1\". Вместо этого можно сохранять данные вложений в реквизиты объектов системы" 1 С: Предприятие 8.0" типа хранилище Значения.
Для отправки писем используется объект почтовоесообщение. В листинге 8.14 приведен пример создания почтового сообщения и его отправки.
I Листинг 8.14, Отправка почтового сообщения
.........................................; ... _
У/ Создаем почтовое сообщение Письмо = Новый ПочтовоеСообщение;
Письмо.Тема = Тема;
Письмо.Текст = Текст;
// Добавляем адресата
Письмо.Получатели.Добавить("");
// Добавляем отправителя
Письмо.Отправитель = "";
// Добавляем файл
Письмо.Вложения.Добавить("с:\plan.txt");
// Добавляем произвольные двоичные данные Архив = Новый ДзоичныеДанные("с:\trade.zip") , Письмо.Вложения.Добавить(Архив,"trade.zip");
// Создаем объект Почта Почта = Новый Почта;
// Отсылаем письмо
Почта.Послать(Письмо);
Примечание
Полный список свойств и методов каждого объекта приведен в документации.
Использование объекта ИнтернетПочта
Объект ИнтернетПочта присутствует только в системе "1C:Предприятие" (версия 8.0) и позволяет работать с электронной почтой напрямую через сервер электронной почты. Другими словами — работа данного объекта не зависит от установленного почтового клиента.
Объект предназначен для доступа к почтовым серверам с целью отправки и получения сообщений. В отличие от объекта почта, который работает по технологии MAPI и требует от пользователя установленного почтового клиента, объект ИнтернетПочта использует интернет-протоколы SMTP и РОРЗ.
Рассмотрим используемые в данном режиме объекты.
О ИнтернетПочта — основной объект, предназначенный для подключения и отключения от почтового сервера, а также для выборки писем с почтового сервера и отправки сообщений.
О интернетПочтовыйПрофиль — содержит информацию об учетной записи пользователя (имя РОРЗ, SMTP-серверов, имя пользователя, пароль и т. п.).
? интернетйочтовоеСообщение — содержит информацию о письме (тема, дата получения, дата отправления, вложения, почтовые адреса отправителя и получателей и т. д.).
О ИнтернетПочтовыйАдрес — содержит информацию о почтовом адресе (электронный адрес и имя пользователя).
П ИнтернетПочтовыеАдреса — содержит коллекцию элементов Интернет -почтовыйАдрес.
П интернетТекстПочтовогоСообщения — содержит текст почтового сообщения и его тип (HTML, простой или размеченный текст).
П интернетТекстыПочтовогоСообщения — содержит коллекцию элементов ИнтернетТекстПочтовогоСообщения.
П ИнтернетПочтовоеВложение — содержит информацию о вложенном файле (данные и имя файла).
П ИнтернетПочтовыеВложения — содержит коллекцию Элементов ИнтернетПочтовоеВложение .
Для подключения к почтовому серверу используется метод Подключиться,
в параметре которого передается значение типа ИнтернетПочтовыйПрофиль.
В листинге 8.15 приведен пример создания профиля пользователя и подключения к почтовому серверу.
Листинг 8.15. Подключение к почтовому серее]
Профиль = Новый ИнтернетПочтовыйПрофиль;
// Адрес SMTP-сервера
Профиль.АдресСервераЗМТР = "smtp.erpg.ru";
// Адрес РОРЗ-сервера
Профиль.АдресСервераРОРЗ = "pop.erpg.ru";
// Порт протокола SMTP
Профиль.ПортЭМТР = 25;
// Порт протокола РОРЗ
Профиль.ПортРОРЗ = 110;
// Логин пользователя
Профиль.Пользователь = "boss";
// Логин пользователя для аутентификации на SMTP-сервере Профиль.ПользовательSMTP = "boss";
// Пароль доступа к почтовому ящику
Профиль,Пароль = "neskaju”;
// Пароль пользователя для аутентификации на SMTP-сервере
Профиль.ПарольSMTP = "tojejneskaju";
// Время ожидания удачного исполнения операции в секундах
Профиль . ВремяОжидания =30;
Почта = Новый ИнтернетПочта;
/ / Подключение к почтовому серверу Попытка
Почта.Подключиться(ПолучитьПрофиль() ) ;
Исключение
Сообщить(ОписаниеОшибки( } ) ;
Возврат;
КонецПопытки/
//...
// Отключение от почтового сервера
Почта.Отключиться() ;
Примечание
При подключении к почтовому серверу используется конструкция Попытка... Исключение. ..КонецПопытки. Это необходимо сделать для подстраховки от неудачного подключения.
Для получения писем с почтового сервера используется метод выбрать объекта ИнтернетПочта, который возвращает массив объектов типа Интернет-ПочтовоеСообщение.
В листинге 8.16 приведен пример получения писем с почтового сервера, профиль для которого был создан ранее.
Листинг8.16. Получение писем с почтового сервера
........................-............................—----.....-.............................J--L.....—.....----
Почта = Новый ИнтернетПочта;
/ / Подключение к почтовому серверу Попытка
Почта.Подключить ся(Профиль);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ТабличноеПолеИнтернетПочта.Очистить()
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки ;
// Отключение от почтового сервера
Почта.Отключиться();
Примечание_
При вызове метода Послать объекта Почта используется конструкция Попытка...Исключение...КонецПопытки, которая необходима для подстраховки от неудачной отправки письма. Полный список свойств и методов каждого объекта приведен в документации.
Работа с протоколом FTP
Аббревиатура FTP расшифровывается как File Transfer Protocol (протокол передачи файлов). Протокол FTP оптимизирован для передачи файлов, это и послужило причиной того, что программы, использующие его, стали частью отдельного сервиса Интернета. Сервис, обеспечивающий доступ к файлам других компьютеров сети по протоколу FTP, носит одноименное название.
Чтобы воспользоваться протоколом FTP, понадобится специальная программа, так называемый FTP-клиент. ІТР-клнеигом может служить браузер (Microsoft Internet Explorer, Netscape Navigator), программа управления файлами FAR, специализированная программа CuteFTP и др.
Для обеспечения программного доступа к протоколу FTP можно использовать либо вызов программы , либо — объект FTP, являющийся частью объектной модели системы "ІСТІрсдприятие" (версия 8.0).
Использование программы
Программа ftp позволяет передавать файлы на удаленный компьютер или получать их оттуда. Она работает с файлами и каталогами удаленного компьютера.
При работе с функциями ftp необходимо запустить на своем компьютере программу , которая связывается с серверной программой, работающей на удаленном компьютере. В дальнейшем, используя возможности ftp, можно задавать выполняемые серверной программой команды, которые транслируются в инструкции.
Для запуска программы ftp в контексте конфигурации системы "ЮПредприятие" (версия 7.7) достаточно вызвать команду КомандаСистемы,
в параметрах которой указать команду ftp с необходимыми параметрами.
Эти параметры помещаются после названия — ftp. Каждый параметр состоит из дефиса (-) и одной буквы и имеет соответствующую команду того же
имени, которая может быть использована внутри ftp.
Примечание_
Следует различать использование опций и соответствующих ftp-команд.
Рассмотрим возможные параметры программы ftp.
П -v — заставляет ftp работать в многословном режиме. В этом режиме сообщения ftp, посланные удаленной машиной, появляются на экране дисплея-приемника. Кроме того, если этот режим используется после завершения передачи каждого файла, то появляется статистическое сообщение, уведомляющее об этом. Данный режим устанавливается по умолчанию, если ftp выполняется интерактивно. Если ftp выполняется в командном режиме, многословный режим выключен. Для того чтобы его включить, надо установить опцию -v. Включить этот режим внутри ftp МОЖНО С ПОМОЩЬЮ команды verbose.
П -d — заставляет ftp работать в режиме отладки. В этом режиме сообщения ftp, посланные ftp в удаленную машину, отображаются на экране дисплея-передатчика. Если не используется эта опция — информация не отображается. Вызвать этот режим в ftp можно также используя команду debug.
О -i — данная опция означает не интерактивную работу.
П -п — опция позволяет предотвратить использование ftp-авторегистрации, во время связи с удаленной машиной. Когда установлен режим авторегистрации, ftp идентифицирует вас автоматически на удаленной маш и нс и регистрирует вас на ней. Если вы используете -п-опнию для отключения автоматической регистрации, вы должны будете использовать команду user, чтобы вручную зарегистрироваться на удаленной машине.
П -д — является причиной лишения имен файлов, созданных в среде операционной системы UNIX, их расширений, например, таких как универсальное — *. Если не используется эта опция, ftp расширяет имена файлов с помощью универсального расширения в списке файлов. Вместо ЭТОЙ ОПЦИИ МОЖНО ИСПОЛЬЗОВаТЬ Команду glob.
П -з:ИмяФайла — определяет выполнение команды ftp в пакетном режиме. В файле, имя которого указывается в параметре, описывается последовательность команд. Данный режим является основным для автоматизации работы с протоколом FTP посредством системы "ІС.'Предприятие".
В листинге 8.18 приведен пример работы с FTP-сервером посредством пакетного файла.
Листинг 8.18. Подключение к FTP-серверу через пакетный файл
і Л*
// Соединение с сервером
ТекстКоманды = "open
// Имя пользователя I user
// Пароль пользователя I password
// Выполняем команды программы ftp //...
// Закрыть связь с сервером
i quit
/ / Имя временного файла
ИмяФайла = КаталогИБО + "ftp\transfer.ftp";
// Создаем временный файл для пакетного выполнения команды ftp Текст = СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(ТекстКоманды);
Текст.Записать(ИмяФайла);
// Выполняем команду ftp в пакетном режиме
КомандаСистемы("?бр -s:" + ИмяФайла);
// Удаляем временный файл
ФС.УдалитьФайл(ИмяФайла);
Из приведенного примера видно, что текст пакетного файла обязательно начинается с команды open, после которой указывается имя сервера. Следующими двумя строками следуют имя пользователя и пароль. Заканчивается текст пакетного файла командой quit.
В табл. 8.1 приведен полный список команд программы ftp.
Таблица8.1. Команды программы ftp
Команда Описание команды
append Добавляет содержимое локального файла в конец удаленного файла.
Например: append <имя локального файла> <имя файла удаленной машины>
ascii Установка режима передачи файлов в формате ASCII (По умолчанию
код всегда ASCII)
] 1 Зак. 722
|
Таблица 8.1 (продолжение) |
Команда |
Описание команды |
bell |
Выдача звукового сигнала по завершении команд. Чтобы прекратить подачу сигнала, нужно снова вызвать эту команду |
binary |
Установка режима передачи файлов в двоичном формате |
bye
или quit |
Закрывает все открытые связи |
cd |
Изменение рабочего каталога на удаленном компьютере. Например: cd /usr/bin |
close |
Завершение сеанса работы ftp и закрытие текущей связи |
debug |
Включение и выключение режима отладки |
delete |
Удаление файла на удаленном компьютере. Например:
delete --'имя файла для удаления> |
dir |
Вывод детального списка каталога удаленного компьютера. Например:
dir /usr/bin.
Если имя каталога не указывать, то будет распечатан текущий каталог удаленного компьютера. Для того чтобы занести результаты выполнения команды в файл, необходимо указать имя выходного файла. Например: dir /usr/bin printfile.
Если необходимо напечатать текущий каталог в файл, необходимо
вызвать команду:
dir . printfile
где означает текущий каталог |
get
или recv |
Копирует файл из удаленного компьютера на локальный. Например:
get <і4мя файла удаленной машины> <имя файла вашей ггашиныХ
Если просто указать имя файла удаленного компьютера, который нужно скопировать, то скопированный файл на вашей машине будет иметь то же самое имя |
glob |
Переключение метасимвольного расширения имен локальных файлов. Эта команда запрещает такое универсальное расширение имен файлов, созданных в среде операционной системы UNIX, как — '*' |
hash |
Переключает вывод символа "#" на экране пользователя после каждого блока данных, который посылается удаленному компьютеру. Размер блоков данных может быть различным в зависимости от версии программного обеспечения. Для того чтобы увидеть текущее состояние данного режима, с командой ftp должен использоваться режим отладки. Эта команда включает и выключает выдачу символа "#" на экран пользователя |
Таблица S. 1 (продолжение)
Команда
led
Is
mdelete
mdir
mget
mkdir
mis
input
Описание команды
Изменяет рабочий каталог, используемый ftp. Например: led /usr/mav.
Если вы не задали имя каталога, то будет использоваться "стартовый" каталог
Распечатывает аббревиатурный список содержания каталога удаленного компьютера, с которого установлена связь. Например:
Is /usr/bin.
Если имя каталога не определено, будет распечатан текущий. Можно также задать команду записи этих данных в файл. Это делается ftp, если указано имя файла локальной машины, куда следует поместить листинг каталога. Например:
Is /usr/bin printfile.
Имя каталога нужно задать до вывода файла (printfile). Например, если вам необходимо распечатать текущий каталог в файл с именем printfile: . printfile
где символ ставится для указания, что каталог текущий Удаляет список файлов на удаленном компьютере. Например:
mdelete <имя 1-го файла> < имя 2-го файла >...
Выводит листинг директории удаленного компьютера, и результат помещается в файл локальной машины. Можно задать список файлов удаленной машины и имя файла локальной машины, куда поместить результат при вызове команды. Например: mdir <имя 1-го файла> <имя 2-го файла>... printfile
Копирование одного или более файлов с удаленного компьютера. Файлы после копирования будут иметь те же имена. Можно указать список файлов для копирования, например:
mget <имя 1-го файла> <имя 2-го файла>...
Создание каталога на удаленном компьютере. Например:
mkdir /u/mydir
Вывод содержимого нескольких каталогов удаленного компьютера. В команде можно задать список файлов удаленного компьютера и имя файла локального компьютера, куда поместить результат при выполнении команды, например:
mis <имя 1-го файла> printfile
Отправка нескольких файлов. Эта команда копирует один или более файлов с локального компьютера на удаленный. На удаленном компьютере файлы будут иметь те же имена. Например: mput <1-й файл> <2-й файл> машины...
|
|
Таблица 8.1 (окончание) |
Команда |
Описание команды |
|
|
open Подключение к протоколу FTP удаленного компьютера. Эта команда
устанавливает связь с удаленным компьютером, в который предполагается передача файлов. Например:
open ftp.server,ru |
prompt Переключение интерактивной подсказки для составных команд. Эта команда переключает запросы к ftp между одноместными (обрабатывают один файл) и многоместными командами (например, такими как mget). Эта команда подключается и отключается при повторном наборе
put Отправка одного файла. Эта команда перемещает файл с локального
или send компьютера на удаленный. Например:
put <'имя локального файла> <имя удаленного файла> или put <имя локального файла>
pwd
quote
Вывод рабочего каталога удаленного компьютера
Отправка произвольных команд ftp, которые поддерживает удаленный сервер. Список доступных команд может быть отображен на экране с помощью команды remotehelp
Получение справочных сведений с удаленного сервера. Эта команда запрашивает помощь ftp на удаленном компьютере, с которым установлена связь на данный момент времени. Запрашиваемая информация сообщает о том, какие команды поддерживает удаленный компьютер
Переименование файла на удаленном компьютере. Например: rename <имя 1-го файла> <имя 2-го файла>
remotehelp
rename
mdir Вывод содержимого нескольких каталогов удаленного компьютера.
Например:
rmdir /usr/mydir
status Выводит текущее состояние режимов bell, form, hash, glob, port, type
type Установка типа передачи файлов. Допустимы двоичный и коды ASCII.
Эта команда аналогична командам ascii и binary. Если не указан тип при вызове команды, то устанавливается ASCII
trace Переключение трассировки пакетов. Эта команда включается и от
ключается при ее повторным наборе
user Отправка сведений о новом пользователе. Команда позволяет поль
зователю идентифицировать самого себя на удаленном компьютере при установлении связи. Например: user mike cat myaccount
verbose Переключение режима вывода сообщений. Данная команда включается и выключается при повторном наборе. В режиме отладки протокольные сообщения, посланные удаленной машиной, появляются на терминале локальной машины. Кроме того, в этом режиме отображается статистика процесса вывода после передачи каждого файла
В листинге 8.19 приведен пример работы пакетного режима команды ftp при работе с файлами.
Листинг 8.19. Пример работы пакетного режима команды ftp
// Соединение с сервером ТекстКоманды = "open // Имя пользователя
I user
// Пароль пользователя
I password
// Получить файл с сервера на локальную машину Iget file.rtf c:\file.rtf
I get file.mp3 c:\mp3\file.mp3'
// Записать файл на сервер с локальной машины
Iput c:\file.htm file.htm Iput c:\docs\file.txt file.txt
// Удалить файл с сервера [delete file.rtf
// Создать новый каталог на FTP-сервере Imkdir newdir
// Закрыть связь с сервером
I quit
// Имя временного файла
ИмяФайла = КаталогИБ() + "ftp\transfer.ftp";
// Создаем временный файл для пакетного выполнения команды ftp Текст = СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(ТекстКоманды);
Текст.Записать(ИмяФайла);
// Выполняем команду ftp в пакетном режиме
КомандаСистемы("ftp -s:" + ИмяФайла);
// Удаляем временный файл
ФС.УдалитьФайл(ИмяФайла);
Использование объекта ПГРСоединение
В системе "ІС.'Прсдприятие" (версия 8.0) для работы с удаленными компьютерами через протокол FTP предназначен объект РТРСоединение, С помощью данного объекта можно выполнять типовые действия с файлами, например, такие как: скачивать и закачивать файлы, переименовывать их, обращаться к их свойствам, создавать каталоги и т. д.
Для установления соединения с FTP-сервером проще всего воспользоваться конструктором объекта ктРСоеданение, который имеет следующие параметры:
О Сервер — сервер, с которым осуществляется соединение;
О порт — порт сервера, с которым осуществляется соединение (по умолчанию 21);
О имя пользователя — имя пользователя на указанном сервере;
П пароль пользователя — пароль пользователя на указанном сервере;
G прокси — значение типа интернетПрокси (прокси, используемый для соединения с сервером);
? пассивное соединение — булево значение, определяющее тип ftp-соединения (по умолчанию — ложь).
Поле установки соединения с помощью метода УстановитьТекущийКаталог можно указать текущий каталог сервера, с которым будет происходить работа в дальнейшем. Далее можно работать с файлами и каталогами удаленного компьютера. В листинге 8.20 приведен пример вывода содержимого каталога в табличное поле.
Листинг 8.20. Вывод содержимого каталога
НННІ ______________.. .... I— HHHIHKfl : ------------------------____aLJ.J // Соединение с удаленным сервером
FTP = Новый РТРСоединение("ftp.server.ru",21,"user","password",,);
// Установка текущего каталога
FTP.УстановитьТекущийКаталог("httpd/www/");
// Получить массив файлов, расположенных в текущем каталоге МассивФайлов = FTP.НайтиФайлы("",);
// Выбрать файлы их массива
Для каждого Файл Из МассивФайлов Цикл
// Добавить информацию о файле в табличное поле СтрокаТП = ТабличноеПолеФайлы.Добавить();
СтрокаТП,Имя = Файл.Имя;
СтрокаТП.ПолноеИмя = Файл.ПолноеИмя;
// Определяем, соответствует ли файловый объект файлу
Если Файл.ЭтоФайл() Тогда
СтрокаТП.ВремяИзменения = Файл.ПолучитьВремяИзменения () ;
СтрокаТП.Размер = Файл.Размер();
КонецЕсли;
КонецЦикла;
Для удаления файлов на сервере предназначен метод удалить объекта ЕТРСоединение.
В программном коде, приведенном в листинге 8.21, показаны примеры удаления одного файла и группы файлов.
™ggg-------ШИ
Листинг 8.21. Удаление файлов на удаленном компьютере
НННННННвННВиЯМНЯНННННННВНШНННННННННЯВЯНИВЯНІ
// Соединение с удаленным сервером
FTP = Новый ЕТРСоединение("ftp.server.ru",21,"user","password",,);
// Установка текущего каталога
ЕТР.УстановитьТекущийКаталог("usr/mav/");
Попытка
// Удаляет файл на сервере
FTP.Удалить("data.txt");
// Удаляет группу файлов на сервере
FTP.Удалить("tmp/", "*.txt");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Во втором вызове метода Удалить, в коде, который представлен в листинге 8.21, используется маска, по которой определяются файлы, подлежащие удалению.
Для копирования файла с удаленного компьютера на локальный предназначена команда получить. В параметрах этой команды указывается имя файла источника и имя файла локального компьютера (листинг 8.22).
Іистинг 8.22.
аила с удаленного компьютера на локальный
й
I
/ / Соединение с удаленным сервером
FTP = Новый ЕТРСоединение("ftp.server.ru",21,"user","password",,);
// Установка текущего каталога
ЕТР.УстановитьТекущийКаталог("usr/mav/");
// Выбор папки для сохранения файла
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог,Каталог = “с;\";
Диалог.Заголовок = "Выберите папку для сохранения...";
Диалог.МножественныйВыбор = Ложь;
Если Диалог.Выбрать') Тогда Попытка
// Сохраняет файл из указанного адреса на локальный компьютер
// Имя файла удаленного компьютера содержится в переменной <ИмяФайла>
FTP.Получить(ИмяФайла, Диалог.Каталог + "\" + ИмяФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
В приведенном примере для определения локального каталога, в котором сохраняется файл, используется объект ДиалогВыбораФайла, описание методов и свойств которого можно найти в документации.
Для обратного действия, т. е. для копирования файла с локального компьютера на удаленный, используется метод записать. Пример использования этого метода приведен в листинге 8.23.
'¦¦'і
Листинг 8.23. Копирование файла с локального компьютера на удаленный і
// Соединение с удаленным сервером
FTP = Новый ІГТРСоединение("ftp.server.ru",21,"user","password", , );
// Установка текущего каталога
FTP.УстановитьТекущийКаталог("usr/mav/");
// Выбор файла для загрузки файла на ftp
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог. Каталог =
,5 с: \
ЕІ;
Диалог. Заголовок = "Выберите файл для загрузки на ftp..
Диалог.МножественныйВыбор = Ложь;
Если Диалог.Выбрать() Тогда Попытка
// Из полного имени выделяем только имя файла
ИмяФайла = Сред(Диалог.ПолноеИмяФайла, СтрДлина(Диалог.Каталог)+1); // Записывает файл с локального компьютера на ftp FTP.Записать(Диалог.ПолноеИмяФайла, ИмяФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Содержание раздела