На практике, используя лишь эти функции, можно организовать взаимодействие с очень сложным сайтом, при этом от программиста 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);