Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #43, ИЮНЬ 2004 г.

Электронная торговля и электронная отчетность

kIlka (kilka@linkin-park.ru)

Спецвыпуск Xakep, номер #043, стр. 043-080-3


Теперь самое время создать внешний отчет 1С, при помощи которого можно было бы загружать в наш интернет-магазинчик прайс из справочника "Номенклатура". Итак, поехали.

Сформируем строку, содержащую список товаров:

CпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");

СпрНоменклатура.ВыбратьЭлементы();

Пока СпрНоменклатура.ПолучитьЭлемент() = 1 Цикл // Получаем элементы из справочника

Прайс = Прайс + "<ware name = ";

Прайс = Прайс + Строка(Элемент.ПолнНаименование);

Прайс = Прайс + " ></ware>";

КонецЦикла;

Возврат Прайс;

Как видишь, в письме используется некое подобие XML. Это очевидное решение серьезно облегчит анализ пришедших приказаний. Тем более что по мере роста нашего магазина наверняка понадобятся новые команды. Логично будет обозначать их новыми тегами. При анализе пришедших по почте данных, на стороне web магазина можно воспользоваться богатым арсеналом .NET Framework для работы с XML. Например, классом XmlTextReader.

Теперь нужно отправить созданную строку по почте. Отправить письмо из-под 1С, в общем-то, несложно. Можно воспользоваться средствами, предоставляемыми стандартной библиотекой 1С – V7Plus.dll:

ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll"); // Подключаем внешнюю компоненту

Почта = СоздатьОбъект("AddIn.V7Mail");

Почта.Подключиться("MAPI");

Почта.ДобавитьАдрес("wmdshop@mail.ru");

Почта.Послать();

Почта.Отключиться();

Однако этот способ далеко не самый лучший. 1С использует для отправки почты MAPI. Т.е. почта отсылается при помощи Outlook Express. Связка 1С – Outlook работает не идеально. Кроме того, при отправлении каждого письма Windows навязчиво интересуется, нужно ли разрешать программе отправлять почту от твоего имени, что сильно раздражает. Поэтому, на мой взгляд, лучше воспользоваться внешней компонентой ROM Mail, которая работает с SMTP и POP3 серверами напрямую (ее, а также кучу других весьма полезных примочек к 1С можно скачать по адресу 1c.hippo.ru):

ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ROM-Mail.dll");

Почта=СоздатьОбъект("AddIn.AddInMail");

… // Задаем значения полей .СерверОтправки, .ПортОтправки, .Логин, .Пароль.

Почта.Подключиться("Отправка");

Почта.АдресПолучателя = "wmdshop@mail.ru"; // Тут, как ты догадался, адрес твоей почты

Почта.Тело = СформироватьПрайс();

Почта.Отправить()

Почта.Отключиться();

Теперь осталось принять это сообщение. Очевидно, что этим регулярно (по таймеру) должна заниматься некая отдельная программа, запущенная на сервере. Однако в рамках нашего примера я решил поручить эту задачу ASP - процедуре Session_Start() файла Global.asax. Это процедура запускается каждый раз, когда на сайт заходит новый пользователь. А в принципе, построить на ее основе полноценное С# приложение нетрудно. Странно, но факт – в .NET Framework нет поддержки POP3 (есть только SMTP). Поэтому придется воспользоваться внешней компонентой, которых существует множество. Я попробовал несколько, и самой удобной мне показалась Soft Artisans POP3 (скачиваем по адресу www.gotdotnet.com).

В общем виде это выглядит так:

Назад на стр. 043-080-2  Содержание  Вперед на стр. 043-080-4