gifts2017

Пара универсальных веб-функций для получения данных из 1С.

Опубликовал Evil Grym (Evilgrym) в раздел Программирование - Практика программирования

Две универсальные веб-функции, позволяющие получить данные через веб-сервис в виде таблицы значений или массив таблиц значений.

На практике, используя лишь эти функции, можно организовать взаимодействие с очень сложным сайтом, при этом от программиста 1С требуется всего лишь выдавать  веб-программисту тексты запросов. Что крайне положительно сказывается на скорости разработки комплексного решения.

Также может быть использовано для организации обмена данными между различными  конфигурациями 1С, для  онлайн-интеграции разных баз, например для построения сводных отчетов по нескольким базам. Объемы передаваемых данных порядка полумиллиона записей не составляют проблемы.

В качестве параметра принимают специальным образом сформированную структуру,  а на выходе дают сериализованную ТЗ или массив ТЗ. После десериализации получившиеся ТЗ могут быть использованы в качестве параметра запроса, т.к. являются типизированными (ограничение - для универсальности, результат запроса должен состоять из простых типов).

Для сайтов используется плоская структура (почему-то проблематично сформировать сложную структуру на php,  поэтому параметры должны иметь имена построенные так Парам_Имяпараметравзапросе , Парам_ отрезается при парсинге структуры) , для 1С классическая структура 1С.

//*********  ПРИМЕР ИСПОЛЬЗОВАНИЯ ****************//
АдресWSDL="http://10.250.205.11:8080/skd/ws/buh_exchange.1cws?wsdl";       
    TargetNamespace="http://localhost/ave_skd"; 
    DefinitionsName="buh_exchange"; 
    PortName="buh_exchangeSoap12";    
    
    
    Определение=Новый WSОпределения(СокрЛП(АдресWSDL));  // без пароля
    
    Прокси = Новый WSПрокси(Определение,
    СокрЛП(TargetNamespace),//targetNamespace из WSDL
    СокрЛП(DefinitionsName),//definitions name из  WSDL 
    СокрЛП(PortName),       // port name из WSDL 
    0);

    
    ТекстЗапросаЧерезWS=  "    ВЫБРАТЬ
|        Города.Наименование,
|        Города.Код
|    ИЗ
|        Справочник.Города КАК Города
|    ГДЕ
|        (Города.Наименование ПОДОБНО &Параметр1
|                ИЛИ Города.Наименование ПОДОБНО &Параметр2)
 |"; // Сгенерировано в GtG's Консоль запросов. 13.07.2015 15:27:17


    
    Параметры=Новый Структура;
    
    Параметры.Вставить("Запрос",ТекстЗапросаЧерезWS);
    
    СтруктураПараметров=Новый Структура;
    СтруктураПараметров.Вставить("Параметр1","%ы%");
    СтруктураПараметров.Вставить("Параметр2","%э%");
    
    Параметры.Вставить("ПараметрыЗапроса",СтруктураПараметров);
    
    
    ХДТО_Параметры=СериализаторXDTO.ЗаписатьXDTO(Параметры);
    
    
    ХДТОРезТЗ=Прокси.Universal_Query_Function__TZ_Result(ХДТО_Параметры);
    
    ТЗ=СериализаторXDTO.ПрочитатьXDTO(ХДТОРезТЗ);
    
    Элементыформы.табзнач.значение=ТЗ;
    Элементыформы.табзнач.СоздатьКолонки();

 

//=============================== НА САЙТЕ ==========================//


$wsdl = new SoapClient(WSDL_URL);
$query = 'ВЫБРАТЬ первые 10 Гы.Наименование, Гы.Код ИЗ Справочник.контрагенты КАК Гы ГДЕ (Гы.Наименование ПОДОБНО &Параметр1 ИЛИ Гы.Наименование ПОДОБНО &Параметр2)';
$params = array(
    'Property' => array(
        array(
            'name' => 'Запрос',
            'Value' => $query
        ),
        array(
            'name' => 'Парам_Параметр1',
            'Value' => '%й%'
        ),
        array(
            'name' => 'Парам_Параметр2',
            'Value' => '%я%'
        )
    )
);
$products = $wsdl->Universal_Query_Function__TZ_Result(array('IncomingData' => $params));
print_r($products);

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Текст функций
.zip 1,13Kb
18.04.16
4
.zip 1.0.0.0 1,13Kb 4 Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа