Закажите бесплатную презентацию продуктов РосБизнесСофт прямо сейчас!
Встроенное API позволяет обмениваться данными Системы с любым сторонним приложением в формате XML.
Например, с помощью API можно сделать интеграцию с:
Для того, чтобы пользователь имел доступ по API, в т.ч. для подключения через мобильное приложение, ему нужно поставить соответствующую галочку в «Настройках».

Обычно создается специальный пользователь для работы с API.
API интерфейс работает по адресу:
https://client__.rbs360.ru/api/xml/
Все запросы к API отправляются в POST.
Структура запроса отражает структуру данных объектов в «Конфигурации» кроме служебных объектов.
Для работы с API можно использовать вспомогательный класс на PHP. Подробное описание класса см. ниже.
Запросы системе передаются последовательно, один за другим. Команды должны быть обернуты в корневой тег.
Каждый запрос представлен тегом. Тег всегда должен иметь параметр type (list, edit и т. д.), в котором необходимо передать корректный тип запроса.
Также можно передать в качестве атрибута тега параметр «uid», несущий в себе уникальный идентификатор запроса. В это случае, при ответе системы этот идентификатор будет возвращен (это удобно для внутреннего различения запросов внутри системы). Если идентификатор не передан, он будет сгенерирован автоматически.
Пример запроса:
<?xml version="1.0" encoding="utf8" ?> <request> <action type="edit" uid="80085"> … </action> </request>
Авторизация в системе производится запросом типа «auth». При этом, если указаны верные данные, система сгенерирует и вернет 64-символьный идентификатор сессии. Этот идентификатор необходимо в передавать системе в последующих запросах в заголовке в виде Cookie с названием «sess_id».
Запрос на авторизацию:
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="auth" uid="80085">
<login>my_login</login>
<password>my_password</password>
</action>
</request>Ответ системы:
<?xml version="1.0" encoding="utf8" ?>
<response>
<action type="auth" uid="80085">
<sess_id>
646C57622DA4C91D027624F0426CC18478795291E1574F1A6C20BDC185D8B749
</sess_id>
</action>
</response>Возможные ошибки авторизации:
Чтение данных имеет тип «list». Каждая запрашиваемая структура должна быть обернута в тег с параметрами:
Пример:
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="references.companies">
...
</structure>
</action>
</request>Ниже указано, как модифицировать запрос, чтобы получить только необходимые данные.
Чтобы выбрать определенные поля объекта, нужно добавить в запрос тег и оберните в него теги с названиями полей (в том количестве и порядке, в котором они вам необходимы).
Пример:
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="references.companies">
<fields>
<id />
<name />
<date />
</fields>
</structure>
</action>
</request>Ответ системы:
<?xml version="1.0" encoding="utf8" ?>
<response>
<action type="list" uid="80085">
<structure name="references.companies" id="1">
<fields>
<id>1</id>
<name>ООО "Apple"</name>
<date>01.04.1976</date>
</fields>
</structure>
...
</action>
</response>Для выборки вложенных структур, передайте тег внутри тега с названием поля-указателя, затем примените правила из этого раздела. Количество уровней вложенности не ограничено. Указывать тип структуры на вложенных уровнях не требуется.
Пример: выберем номер счета и его табличную часть (название номенклатуры и количество)
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="documents.orders">
<fields>
<number />
<products>
<structure>
<fields>
<name />
<number />
</fields>
</structure>
</products>
</fields>
</structure>
</action>
</request>Для фильтрации (отбора) объекта используется тег «filters». Т.к. к выборке объектов можно применить сразу несколько фильтров (выполняется условие «И»), то используется вложенный тег «filter».
Состав тега:
Пример: вывести счета с суммой больше 10000
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="documents.orders">
<fields>
<number />
</fields>
<filters>
<filter>
<field>total</field>
<operation>></operation>
<value>10000</value>
</filter>
</filters>
</structure>
</action>
</request>Пример: вывести счета с суммой больше 10000 и с номерами больше 10
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="documents.orders">
<fields>
<number />
</fields>
<filters>
<filter>
<field>total</field>
<operation>></operation>
<value>10000</value>
</filter>
<filter>
<field>number</field>
<operation>></operation>
<value>10</value>
</filter>
</filters>
</structure>
</action>
</request>При фильтрации по полю типа «указатель» (pointer), например по «Контрагенту», в поле value указывается значение id «Контрагента»:
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="documents.orders">
<fields>
<number />
</fields>
<filters>
<filter>
<field>owner</field>
<operation>=</operation>
<value>777</value>
</filter>
</filters>
</structure>
</action>
</request>Условие «ИЛИ» применить между фильтрами нельзя.
Чтобы отсортировать вывод по определенному «полю» используйте тег «order».
Состав тега:
Типа упорядочивания:
Пример: вывести контрагентов, упорядоченных по дате добавления, начиная с самого позднего
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="references.companies">
<fields>
<name />
</fields>
<orders>
<order>
<field>date</field>
<type>DESC</type>
</order>
</orders>
</structure>
</action>
</request>Для ограничения количества вывода записей используется тег «limits». Тег обычно используется для по страничного выводу данных.
Состав тега:
Пример: вывести не более 100 контрагентов, начиная с первого (нулевого) элемента
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="references.companies">
<fields>
<name />
</fields>
<limit>
<first>0</first>
<number>100</number>
</limit>
</structure>
</action>
</request>Для редактирования объектов используется синтаксис чтения (описанный выше) и передавайте внутри наследников тега необходимые значения.
Пример: поменять поле «Должность» у «Сотрудника» с id=25 на «Генеральный директор»
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="edit" uid="80085">
<structure name="references.employees" id="25">
<fields>
<position>Генеральный директор</position>
</fields>
</structure>
</action>
</request>При успешном выполнении запроса система вернет:
<?xml version="1.0" encoding="utf8" ?>
<response>
<action type="edit" uid="80085">
<result>true</result>
</action>
</response>В случае ошибки при выполнении запроса в ответе от Системы будет описание ошибки в теге «error».
В качестве значений полей можно использовать и другие структуры, рекурсивно.
Пример: в «Номенклатуре» с id=100 установим страну, найденную по имени. Важно, чтобы фильтр страны по имени вернул только 1 объект (нужно использовать тег «limit»)
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="edit">
<structure name="references.products" id="100">
<fields>
<country>
<structure name="references.countries">
<filters>
<filter>
<field>name</field>
<operation>=</operation>
<value>Китай</value>
</filter>
</filters>
</structure>
</country>
</fields>
</structure>
</action>
</request>Если необходимо взять из справочника другое поле (не id), например поле «code» из справочника «Страна»:
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="edit">
<structure name="references.products" id="100">
<fields>
<country>
<structure name="references.countries">
<field>code</field>
<filters>
<filter>
<field>name</field>
<operation>=</operation>
<value>Китай</value>
</filter>
</filters>
</structure>
</country>
</fields>
</structure>
</action>
</request>Пример: все «Номенклатуры» в табличной части «Счета» (с id=100) с названием «Молоко» изменят название на «Хлеб».
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="edit">
<structure name="documents.orders" id="100">
<fields>
<products>
<structure name="products">
<fields>
<name>Хлеб</name>
</fields>
<filters>
<filter>
<field>name</field>
<operation>=</operation>
<value>Молоко</value>
</filter>
</filters>
</structure>
</products>
</fields>
</structure>
</action>
</request>Пример: в табличную часть «Номенклатура» документа «Счет» добавить позицию «Морковь»
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="edit">
<structure name="documents.orders" id="100">
<fields>
<products>
<structure name="products" type="add">
<fields>
<name>Морковь</name>
</fields>
</structure>
</products>
</fields>
</structure>
</action>
</request>(уточняется)
Для добавления используется метод «add».
Чтобы созданный объект бы не помечен на удаление (серым), поле visible надо присваивать значение «1».
Важно: для добавления по API объекта типа «Документ» (documents) необходимо в запросе в самом начале списка полей указывать поля «number» и «date», иначе возникнет ошибка.
Пример: добавить «Счет» с номером «2 » и одной позицией в табличной части «Номенклатура» с названием «Капуста»
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="add">
<structure name="documents.orders">
<fields>
<number>2</number>
<visible>1</visible>
<products>
<structure name="products">
<fields>
<name>Капуста</name>
</fields>
</structure>
</products>
</fields>
</structure>
</action>
</request>Пример: добавить новую «папку» в справочнике «Номенклатура»
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="add">
<structure name="references.products">
<fields>
<is_group>1</is_group>
<name>Тестовая папка</name>
<visible>1</visible>
<parent>0</parent>
</fields>
</structure>
</action>
</request>Для добавления сразу нескольких объектов в одном запрос необходимо использовать вложенность структуры (structure).
Пример: добавим 2 контрагента за один запрос
<?xml version="1.0" encoding="utf8"?>
<request>
<action type="add">
<structure name="references.companies">
<fields>
<name>Петр</name>
<visible>1</visible>
</fields>
</structure>
<structure name="references.companies">
<fields>
<name>Иван</name>
<visible>1</visible>
</fields>
</structure>
</action>
</request>Ответ системы:
<response>
<action type="add" uid="64d75d54200ca">
<structure>
<status>true</status>
<id>1</id>
</structure>
<structure>
<status>true</status>
<id>2</id>
</structure>
</action>
</response>Где «id» = ID нового созданного объекта.
Для удаления объекта используйте синтаксис ниже. Обязательно нужно указывать ID объекта. Можно удалить сразу несколько объектов.
Пример: удалить сотрудника с id=25
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="del" uid="80085">
<structure name="references.companies" id="3">
</structure>
<structure name="references.companies" id="25">
</structure>
</action>
</request>Помеченный объект на удаление можно восстановить, поменяв у объекта поле visible на «1».
Важно:
Для стирания используйте синтаксис ниже. Обязательно нужно указывать ID объекта. Можно стереть сразу несколько объектов.
Пример: стереть (удалить) сотрудника с id=25
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="wipe" uid="80085">
<structure name="references.employees" id="25">
</structure>
</action>
</request>Важно:
Пример:
<?xml version='1.0' encoding='utf8'?>
<request>
<action type='getAllStructures' uid='80085'>
</action>
</request>Результат:
<?xml version='1.0' encoding='utf8' ?>
<response>
<action type='getAllStructures' uid='80085'>
<structures>
<structure name='documents.business_trip' en='' ru='Командировки'>
</structure>
<structure name='positions.table_43' type='set' en='' ru='Билеты'>
</structure>
...
</structures>
</action>
</response>Вывод происходит с учетом вложенные табличных частей «Объекта».
Пример:
<?xml version='1.0' encoding='utf8'?>
<request>
<action type='getStructure' uid='80085'>
<structures>
<name>documents.orders</name>
</structures>
</action>
</request>Результат:
<?xml version='1.0' encoding='utf8' ?>
<response>
<action type='getStructure' uid='80085'>
<structures>
<structure name='documents.orders' en='' ru='Счета'>
<fields>
<date type='date' en='' ru='Дата'>
</date>
<id type='numeric' en='' ru='id'>
</id>
...
<products type='set'>
<structure name='positions.table_1' en='Products' ru='Номенклатура'>
<fields>
<name type='varchar' en='' ru='Наименование'>
</name>
<id type='numeric' en='' ru=''>
</id>
<visible type='boolean' en='' ru=''>
</visible>
<owner type='delayed' object='documents.orders' en='' ru='Счет'>
</owner>
<product type='pointer' object='references.products' en='' ru='Номенклатура'>
</product>
...
</fields>
</structure>
</products>
...
</fields>
</structure>
</structures>
</action>
</response>Изображение возвращается в base64.
Для получения изображения поле в «Объекте» должно быть типа «Указатель» (Pointer) на объект «References.images».
Пример: получить имя и фотографию сотрудников
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="list" uid="80085">
<structure name="references.employees">
<fields>
<name />
<photo/>
</fields>
</structure>
</action>
</request>Результат:
<response>
<action type="list" uid="80085">
<structure name="references.employees" key="2">
<fields>
<name>Дмитрий И.</name>
<photo>LzlqLzRBQVFTa1pKUmdBQkFRRUEzQURjQUFELzJ3QkRBQWdHQ...</photo>
</fields>
</structure>
</action>
</response>Пример:
<?xml version='1.0' encoding='utf8' ?>
<request>
<action type='getDatetime' uid='80085'>
<format>d.m.Y H:i:s</format>
</action>
</request>Результат:
<?xml version='1.0' encoding='utf8' ?>
<response>
<action type='getDatetime' uid='80085'>
<result>2022-09-02 14:03:15</result>
</action>
</response>
Прикрепление файла к определенному объекту.
Пример: прикрепить файл с именем «file.txt» c содержанием «Text file» в документ «Ремонт» с id=1
<?xml version='1.0' encoding='utf8' ?>
<request>
<action type='fileAdd' uid='80085'>
<structure name='documents.repair' id='1'>
<fields>
<name>file.txt</name>
<content>Text file</content>
</fields>
</structure>
</action>
</request>Для добавления изображения к «Объекту» необходимо выбрать доступный «Тип изображения» (../settings/references/image_types), а также указать полное название объекта, его ID и поле с типом references.images (например: photo). Само изображение должно передаваться в base64.
Важно: При отправке запроса «imagesUploads» в header запроса необходимо передавать все cookies, получение при запросе авторизации в API.
Пример:
<?xml version='1.0' encoding='utf8' ?>
<request>
<action type='imagesUploads' uid='80085'>
<structure name='references.products' id='7'>
<field>photo</field>
<type>products</type>
<content>iVBORw0KGgoAAAANSUhEUgAAAIwAAAAvCAYAAAAxSCJ+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozQzE4QzdBODdDNDRFODExOUI4N0Y0OTQzOTgyQTE0RiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGODE2MzZGMjQ0N0UxMUU4QTM0NEM2RUYzNzlBNEE4NCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGODE2MzZGMTQ0N0UxMUU4QTM0NEM2RUYzNzlBNEE4NCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNDMThDN0E4N0M0NEU4MTE5Qjg3RjQ5NDM5ODJBMTRGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNDMThDN0E4N0M0NEU4MTE5Qjg3RjQ5NDM5ODJBMTRGIi8+IDwvcmRmOkRlc2NyaXB0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</content>
</structure>
</action>
</request>Результат:
<response>
<action type="imagesUploads" uid="80085">
<structure>
<status>1</status>
</structure>
</action>
</response>Пример:
<?xml version="1.0" encoding="utf8" ?>
<request>
<action type="getProductPriceStock" uid="80085">
<prod_id>777</prod_id>
<prod_price_id>1</prod_price_id>
<prod_stock_id>2</prod_stock_id>
</action>
</request>Где:
Результат:
<action type="getProductPriceStock" uid="80085">
<price>100</price>
<stock>10</stock>
</action>
</response>Где:
Для экранирования специальных символов типа «<» и «>» необходимо обернуть вышеперечисленные символы в конструкцию:
<![CDATA[что-то]]>
Пример: Отобрать документы «Счета» с «Датой» больше (>) 01.01.2022
<request>
<action type="list" uid="80085">
<structure name="documents.orders">
<fields>
<number />
</fields>
<filters>
<filter>
<field>date</field>
<operation><![CDATA[>]]></operation>
<value>2022-01-01</value>
</filter>
</filters>
</structure>
</action>
</request>Класс доступен по ссылке.
Для начала работы с классом необходимо создать подключение к Системе.
Пример:
$api = new Xml_api(string $url, string $login, string $password);
Где:
select(string $structure [array $fields = array()], [array $filters = array()]);
Где:
array("id", "name", "surname")array(array("field"=>"id", "operation"=>"=", "value"=>"1"))add(string $structure, [array $fields]);
Где:
array("name" => "Вася", "surname" => "Петров")Важно: не рекомендуется задавать явно поле «id», поскольку это первичный ключ, система поддерживает работу с этим поле самостоятельно.
update(string $structure, [array $fields = array()], [array $filters = array()]);
Где:
array("name"=>"Вася"', "surname"=>"Петров")array (array("field" => "id", "operation" => "=", "value" => "1"))Остальные методы подробно описаны в самом классе.
В примере используется готовый PHP-класс, доступный по ссылке.
<?php
// Подключаем класс (https://github.com/rbs360/API-XML)
require_once("xrm_xml_api.php");
// Авторизация (Адрес системы, логин, пароль от пользователя системы у которого стоит флаг "Доступ по API")
$xml_instance = new Xml_api("http://___URL___/api/xml", "___LOGIN___", "___PASSWORD___");
// cоздание нового контрагента
$xrm_copmany = $xml_instance->add("references.companies", array(
"date" => date("Y-m-d",time()),
"email" => "info@rbs-crm.ru",
"name" => "Рога и копыта",
"phone" => "74997056975",
"city" => "Москва",
"visible" => 1,
"responsible" => 2,
"type" => 1)
);
// Получаем ID нового контрагента
$xrm_company_id = $xrm_copmany->action->id;
if($xrm_company_id > 0){
// cоздание контакного лица
$xrm_insert_contact = $xml_instance->add("references.contacts", array(
"owner" => $xrm_company_id,
"name" => "Иван Петров",
"first_name" => "Иван",
"surname" => "Петров",
"position" => "Менеджер",
"phone" => "74997056975",
"email" => "info@rbs-crm.ru",
"responsible" => 2,
"visible" => 1)
);
// Получаем ID нового контактного лица
$xrm_contact_id = $xrm_insert_contact->action->id;
// Создание нового юр лица
$xrm_insert_details = $xml_instance->add("references.companies_details", array(
"owner" => $xrm_company_id,
"name" => "ООО Рога и копыта",
"visible" => 1)
);
// Создание новой сделки
$xrm_insert_deal = $xml_instance->add(
"documents.deals",
array(
"owner" => $xrm_company_id,
"date" => date("Y-m-d H:i:s", time()),
"expected_date_close" => date("Y-m-d H:i:s", time()),
"name" => "Название сделки",
"description" => "Описание сделки",
"funnel_sales" => 1,
"deals_result" => 3,
"total" => 10000,
"responsible" => 2,
"currency" => 1,
"stage" => 2,
"contact" => $xrm_contact_id,
"phone" => "74997056975",
"mobile" => "79117056975",
"email" => "info@rbs-crm.ru",
// UTM
"utm_source" => "yandex",
"utm_campaign" => "my",
"utm_medium" => "rbs1",
"utm_term" => "crm",
"visible" => 1)
);
echo "Сделка успешно создана!";
}
?>Результат:
При успешном выполнении кода в Системе создадутся «Контрагент», «Юридическое лицо», «Контактное лицо» и «Сделка. Все объекты будут связаны между собой.
Если необходима проверка на дубли «Контрагента», то для этого нужно сделать дополнительный запрос чтения Контрагентов по фильтру, например по полю «Наименование» или «Телефон».