Профессиональные решения для 1С 8.2 Суббота, 21.10.2017, 18:56
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поделиться ссылкой


Главная » 2013 » Октябрь » 27 » Отслеживание почтовых отправлений в 1С 8.2
17:05
Отслеживание почтовых отправлений в 1С 8.2
Многие компании ведут бизнес, пользуясь услугами почтовых организаций, при этом весьма удобным является сервис по отслеживанию посылок, при помощи которого можно узнавать текущий статус отправления и приблизительно прогнозировать дату его доставки. Многие сайты, как самих почтовых компаний, так и сторонних организаций, предоставляют такую услугу бесплатно. Некоторые вводят защитный код с картинки, чтобы сообщения не забирал робот, другие ограничивают число запросов в интервал времени. Например, хороший сервис предоставляет сайт http://gdetoedet.ru , сервис на котором предоставляется бесплатно и не требует ввода сгенерированного кода с картинки. На этом сайте также предоставляются услуги при регистрации, снимающая ограничение на интервалы обновления информации и возможность подключения оповещения по СМС, а также есть отслеживание перемещения посылки на мировой карте. Однако, нас интересует некоторая автоматизация получения информации о посылке, которую можно получить без какого-либо API или специального подключения к базе данных. Мы можем просто прочитать с помощью 1С HTML страницу с информацией о посылке, и , проанализировав ее содержимое, получить таблицу статусов в формате, который может использоваться в 1С, т.е. в виде таблицы значений. Такая обработка является специализированной, так как работает с кодом конкретного сайта, к тому же при изменении разметки страницы, может оказаться неработоспособной. Однако, она демонстрирует возможность автоматизации  получения разного рода информации со страниц HTML.
Пример работы обработки представлен на картинке:
 
Код обработки выглядит следующим образом:


Функция РазложитьНаСтроки(Знач Стр,Разделитель)
    Сп = Новый Массив;

    поз = найти(Стр,Разделитель);
    Пер=0;
    Пока поз <> 0 цикл
        Пер=Пер+1;
        Если Пер>1 Тогда
            Сп.Добавить(Лев(Разделитель,1)+Лев(Стр,поз-1));
        КонецЕсли;
        стр = Сред(Стр,поз+1);
        поз = найти(стр,Разделитель);
    КонецЦикла;   
    Сп.Добавить(Лев(Разделитель,1)+стр);
    НовСп=Новый Массив;
    Для Каждого ТекСтр из Сп Цикл
         ТекСтр=СтрЗаменить(ТекСтр,Символы.ПС,"");
        ТекСтр=СтрЗаменить(ТекСтр,Символы.Таб,"");
        НовСп.Добавить(ТекСтр);
    КонецЦикла;
    Возврат НовСп;
КонецФункции
Функция ВыделитьТекст(Знач ТТ)
    ТТ=СокрЛП(ТТ);
    Найден=истина;
    Пока Найден Цикл
        Найден=Ложь;
        Поз1=Найти(ТТ,"<");
        Поз2=Найти(ТТ,">");
        Если Поз1<>0 и Поз2<>0 и Поз2>Поз1 Тогда
            Найден=Истина;
            Фраг=Сред(ТТ,Поз1,Поз2-Поз1+1);
            ТТ=СтрЗаменить(ТТ,Фраг,"");
        КонецЕсли;
    КонецЦикла;
    Возврат ТТ;
КонецФункции
Процедура КоманднаяПанель1НайтиПосылку(Кнопка)
    ТабСтатусов.Очистить();   
    ТЗ=Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Ряд");
    ТЗ.Колонки.Добавить("Колонка");
    ТЗ.Колонки.Добавить("Кол");
    URL="http://gdetoedet.ru/track/"+Номер;
    http = Новый COMОбъект("Microsoft.XmlHttp");
    http.open("GET", URL, False);         
    http.send();
    ПолныйТекстСайта =http.responseText;
    http = Неопределено;
    поз1=Найти(ПолныйТекстСайта,"<table class=""b-status-table"">");
    ПолныйТекстСайта=Сред(ПолныйТекстСайта,поз1);
    поз2=Найти(ПолныйТекстСайта,"</table>");
    ТекстТаб=Сред(ПолныйТекстСайта,1,поз2+7);
    Строки=РазложитьНаСтроки(ТекстТаб,"<tr");
    Сч=0;
    Для Каждого ТекЭл из Строки Цикл
        Сч=Сч+1;
        Если Сч<2 Тогда
            Продолжить;
        КонецЕсли;
        Колонки=РазложитьНаСтроки(ТекЭл,"<td");
        СчКол=0;
        Для Каждого ТекСтр из Колонки Цикл
            СчКол=СчКол+1;
            Нов=ТЗ.Добавить();
            Нов.Ряд=Сч;
            Если Найти(ТекСтр,"class=""b-status__move-to-map map-move-to""")>0 Тогда
                Нов.Кол=5;
            ИначеЕсли  Найти(ТекСтр,"class=""b-index b-right-popover""")>0 Тогда
                Нов.Кол=6;
            ИначеЕсли  Найти(ТекСтр,"class=""b-status-tbl__dep""")>0 Тогда
                Нов.Кол=8;
            ИначеЕсли  Найти(ТекСтр,"class=""b-status""")>0 Тогда
                Нов.Кол=7;
            Иначе
                Нов.Кол=СчКол;
            КонецЕсли;               
            Нов.Колонка=ТекСтр;
        КонецЦикла;
    КонецЦикла;
    НомСтр=0;
    Сч=0;
    Для Каждого ТекСтр из ТЗ Цикл
        Если НомСтр<>ТекСтр.Ряд Тогда
            Нов=ТабСтатусов.Добавить();
            НомСтр=ТекСтр.Ряд;
        КонецЕсли;
        ТТ=ВыделитьТекст(ТекСтр.Колонка);
        Если ТекСтр.Кол=1 Тогда
            Нов.День=ТТ;
        ИначеЕсли ТекСтр.Кол=3 Тогда
            Нов.Дата=ТТ;
        ИначеЕсли ТекСтр.Кол=4 Тогда
            Нов.Время=ТТ;
        ИначеЕсли ТекСтр.Кол=5 Тогда
            Нов.Отделение=ТТ;
        ИначеЕсли ТекСтр.Кол=6 Тогда
            Нов.Индекс=ТТ;
        ИначеЕсли ТекСтр.Кол=7 Тогда
            Нов.Статус=ТТ;
        ИначеЕсли ТекСтр.Кол=8 Тогда
            Нов.Расшифровка=ТТ;
        КонецЕсли;
    КонецЦикла;
    ЭтаФорма.ЭлементыФормы.ПолеHTMLДокумента1.Перейти(URL);
КонецПроцедуры
Процедура КоманднаяПанель1Закрыть(Кнопка)
    ЭтаФорма.Закрыть();
КонецПроцедуры
 
Код 1С добавлен на сайт при помощи оригинальной обработки
Существуют и другие варианты обработки информации о посылках, например, на некоторых сайтах, в частности http://myparcels.ru , можно зарегистрироваться и добавить посылки для отслеживания в личном кабинете, данные будут приходить на email. Обработать электронные письма для 1С не проблема. Возможно, через некоторое время я выложу вариант такой обработки. 
Обработку можно скачать в каталоге файлов ОтслеживаниеПочтовогоОтправления.epf
Просмотров: 1758 | Добавил: Programmer1C | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Октябрь 2013  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Создать сайт
  • Современная Ароматерапия
  • Биодобавки из США
  • Заработок для web-мастера

  • Рейтинг@Mail.ru
    www.professional-1c.ru © 2017
    Бесплатный хостинг uCoz