====== API :: FlexField. Работа с Гибкими Полями ======
В системе реализован программный интерфейс для получения, добавления и изменения данных о гибких полях. Данные выгружаются по http протоколу. Формат на выбор - xml или json.
===== Что такое "Гибкие Поля" =====
Механизм "Гибких Полей" позволяет добавить новые колонки к любому справочнику в системе (товары, клиенты, магазины и др).
Настроенные Гибкие Поля можно посмотреть в административной консоли в меню "Настройки" -> "Гибкие поля"
===== Пример использования Гибких Полей =====
Например, Вы продаете одежду и настроили для справочника "Клиенты" гибкое поле "Размер". Теперь для каждого клиента возможно указать размер его одежды. Указать значение можно двумя способами.
1. **Первый способ** - через административный интерфейс в карточке Клиента (меню Клиенты). В карточке появится новая графа "Размер", в котором можно задать нужное значение
2. **Второй способ** - программно через API. Чтобы задать значение гибкого поля через API, необходимо к стандартному [[doc:dev:api:customer|запросу на изменение/добавление Клиента]] добавить еще один параметр в формате: [**ИмяПоля**]=[**Значение**]
В качестве **ИмяПоля** можно указать как пользовательское название поля (пример: "Размер"), так и его системное имя: attribute1, .., attribute15. Конкретный номер атрибута для каждого гибкого поля можно посмотреть в административном интерфейсе настройках гибких полей (**Настройки** -> **Гибкие поля** -> **Номер атрибута**)
Пример запроса на изменение гибкого поля "Размер" для Клиента с ID=1 через API:
[[http://mycompany.virtpos.ru/api/customer/update?apikey=MySecret&id=1&Размер=XL]]
===== Функции API для работы с Гибкими Полями =====
Для работы с Гибкими Полями в API предусмотрены следующие методы:
* **listTables** - получение списка справочников системы, которые поддерживают добавление Гибких Полей
* **index** - получение данных о настроенных Гибких Полях
* **update** - добавление или изменение Гибкого Поля
* **delete** - удаление настроенного ранее Гибкого Поля
----
===== listTables :: Получение списка справочников =====
Запрос возвращает список справочников системы, которые поддерживают работу с Гибкими Полями. Эти системные названия используются в других запросах в качестве параметра **table_name**.
==== Пример вызова =====
Пример запроса на получение списка справочников:
http://mycompany.virtpos.ru/api/flexField/listTables?apikey=MySecret&format=xml
==== Параметры запроса ====
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
==== Пример ответа ====
1
frexfield.tables
5
organisation
Юридическое лицо
----
===== index :: Запрос на получение данных =====
==== Пример вызова ====
Пример запроса на получение данных о настроенных Гибких Полях:
http://mycompany.virtpos.ru/api/flexField?apikey=MySecret&format=xml
==== Параметры запроса ====
* **apikey** (get или post) - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - код Гибкого Поля, для которого надо вернуть данные. Если не указан, то возвращаются данные обо всех настроенных полях.
* **table_name** (get only) - системное название справочника. Если указано, то возвращаются поля только для этого справочника
* **name** (get only) - название Гибкого Поля. Если указано, то возвращаются поля только с таким названием
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info
==== Пример ответа сервера ====
Ниже приведен пример ответа сервера в формате XML
1
flexfield
1
32
warehouse
Площадь помещения
2
text
Y
2016-08-12 18:21:38
2016-08-12 18:21:38
----
===== update :: добавление/изменение Гибкого Поля =====
Для обновления конкретного гибкого поля надо передать:
* либо его идентификатор (параметр **id**)
* либо пару справочник + название_поля (параметры **table_name** и **name**)
==== Пример вызова ====
Пример запроса на изменение данных о гибком поле:
http://mycompany.virtpos.ru/api/flexField/update?apikey=MySecret&create_if_not_exist=0&enabled=N
==== Параметры запроса ====
* **apikey** (get или post) - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - код товарной группы, данные которой надо обновить
* **table_name** (get only) - системное название таблицы, в которой надо изменить (добавить) поле. Используется для однозначной идентификации записи вместе с параметром **name**
* **name** (get only) - название гибкого поля, которое надо изменить (добавить). Используется для однозначной идентификации записи вместе с параметром **table_name**
* **create_if_not_exist** (get only) - если "1", то при неудачном поиске гибкое поле будет добавлено в систему.
* **attr_type** (get или post) - тип гибкого поля. Принимает значения: list (выбор из списка) или text(текстовые данные)
* **enabled** (get или post) - признак активно поле или нет. Принимает значения: Y (активно) или N (неактивно)
* **default_value** (get или post) - значение по умолчанию
* **list_values** (get или post) - список возможных значений гибкого поля. Используется с типом поля list. Список возможных значений передается в виде строки, разделенной запятыми. Лишних пробелов быть не должно. Пример: "Да,Нет,Возможно"
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращается id записи, которая была обновлена или добавлена.
* Флаг **isnew** равен "1", если запись была создана, и "0" если обновлена.
==== Пример ответа сервера ====
1
11
1
----
===== delete :: Удаление Гибкого Поля =====
Функция настроенное ранее удаляет Гибкое Поле. Для удаления конкретного гибкого поля надо передать:
* либо его идентификатор (параметр **id**)
* либо пару: справочник + название_поля (параметры **table_name** и **name**)
==== Пример вызова =====
Пример запроса на удаление гибкого поля:
http://mycompany.virtpos.ru/api/flexField/delete?apikey=MySecret&format=xml&id=2
==== Параметры запроса ====
* **apikey** (get или post) - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - идентификатор гибкого поля, которое надо удалить
* **table_name** (get only) - системное название таблицы, в которой надо удалить поле. Используется для однозначной идентификации записи вместе с параметром **name**
* **name** (get only) - название гибкого поля, которое надо удалить. Используется для однозначной идентификации записи вместе с параметром **table_name**
==== Пример ответа ====
1