SQL запросы (версия 3.xx)/amoCRM: различия между версиями
Zombrine (обсуждение | вклад) |
Jugin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Для работы с данными amoCRM можно использовать стандартные SQL запросы, которые буду преобразованы в формат [https:// | Для работы с данными amoCRM можно использовать стандартные SQL запросы, которые буду преобразованы в формат [https://www.amocrm.ru/developers/content/crm_platform/platform-abilities API amoCRM]. | ||
Поддерживаются SQL - операторы: | Поддерживаются SQL - операторы: | ||
* '''select''' - выборка данных. В списке полей можно указать только * - все поля. | * '''select''' - выборка данных. В списке полей можно указать только * - все поля. | ||
** '''where''' - позволяет указать условие выборки. Поддерживается только условие отбора id =. | ** '''where''' - позволяет указать условие выборки. Поддерживается только условие отбора id =. | ||
** '''order''' - позволяет указать порядок сортировки. Может быть использовано только для данных, где API amoCRM позволяет использовать сортировку данных. | |||
** '''limit''' - позволяет указать начальное значение выборки и количество строк. Например: limit 50 или limit 10, 50 | ** '''limit''' - позволяет указать начальное значение выборки и количество строк. Например: limit 50 или limit 10, 50 | ||
* '''insert''' - вставка данных, позволяет указать список полей и константы значений, выражения не поддерживаются | * '''insert''' - вставка данных, позволяет указать список полей и константы значений, выражения не поддерживаются. | ||
* '''update''' - изменение данных, позволяет указать список изменяемых полей и единственное условие отбора: where id =. | * '''update''' - изменение данных, позволяет указать список изменяемых полей и единственное условие отбора: where id =. | ||
Помимо стандартного синтаксиса SQL, в запросах к источнику данных amoCRM можно использовать вставки родного синтаксиса | Помимо стандартного синтаксиса SQL, в запросах к источнику данных amoCRM можно использовать вставки родного синтаксиса API amoCRM. Для этого используется конструкция /! !/. | ||
Если по каким то причинам стандартный синтаксис SQL не подходит, можно использовать вызовы методов | Если по каким то причинам стандартный синтаксис SQL не подходит, можно использовать вызовы методов API amoCRM напрямую, без преобразования. Для этого следует вместо SQL запроса указать конструкцию: | ||
/! {Method: <название метода API>, | /! {Method: <название метода API>, | ||
Type: <тип запроса>, | Type: <тип запроса>, | ||
Params: <передаваемые параметры | Params: <передаваемые параметры>} !/ | ||
Например: | Например: | ||
/! {Method: 'contacts | /! {Method: 'contacts', Type: 'GET', Params: {width: 'customers'}} !/ | ||
Подробное описание формата вызова родных методов | Подробное описание формата вызова родных методов API amoCRM можно посмотреть [https://www.amocrm.ru/developers/content/crm_platform/platform-abilities здесь]. | ||
Помимо этого можно использовать функцию, которая вернет нужный объект, например такого вида: | Помимо этого можно использовать функцию, которая вернет нужный объект, например такого вида: | ||
Строка 27: | Строка 27: | ||
/! | /! | ||
function () { | function () { | ||
return {Method: 'contacts | return {Method: 'contacts', | ||
Type: 'GET', | Type: 'GET', | ||
Params: { | Params: {width: 'customers'}} ; | ||
} | } | ||
!/ | !/ | ||
Строка 43: | Строка 42: | ||
Более сложный вариант функции с вызовом метода REST API amoCRM и формированием результата: | Более сложный вариант функции с вызовом метода REST API amoCRM и формированием результата: | ||
/! | /! | ||
function () { | function () { | ||
var Res = this. | var Res = this.Select ('contacts', 'GET'); | ||
return this.MakeResult ( | return this.MakeResult (Res, 'contacts'); | ||
} | } | ||
!/ | !/ | ||
Строка 54: | Строка 54: | ||
/! | /! | ||
function () { | function () { | ||
var Res = this.CallMethod ('contacts | var Res = this.CallMethod ('contacts', 'POST', {...}); | ||
return null; | return null; | ||
} | } |
Версия 09:25, 5 октября 2020
Для работы с данными amoCRM можно использовать стандартные SQL запросы, которые буду преобразованы в формат API amoCRM. Поддерживаются SQL - операторы:
- select - выборка данных. В списке полей можно указать только * - все поля.
- where - позволяет указать условие выборки. Поддерживается только условие отбора id =.
- order - позволяет указать порядок сортировки. Может быть использовано только для данных, где API amoCRM позволяет использовать сортировку данных.
- limit - позволяет указать начальное значение выборки и количество строк. Например: limit 50 или limit 10, 50
- insert - вставка данных, позволяет указать список полей и константы значений, выражения не поддерживаются.
- update - изменение данных, позволяет указать список изменяемых полей и единственное условие отбора: where id =.
Помимо стандартного синтаксиса SQL, в запросах к источнику данных amoCRM можно использовать вставки родного синтаксиса API amoCRM. Для этого используется конструкция /! !/.
Если по каким то причинам стандартный синтаксис SQL не подходит, можно использовать вызовы методов API amoCRM напрямую, без преобразования. Для этого следует вместо SQL запроса указать конструкцию:
/! {Method: <название метода API>, Type: <тип запроса>, Params: <передаваемые параметры>} !/
Например:
/! {Method: 'contacts', Type: 'GET', Params: {width: 'customers'}} !/
Подробное описание формата вызова родных методов API amoCRM можно посмотреть здесь.
Помимо этого можно использовать функцию, которая вернет нужный объект, например такого вида:
/! function () { return {Method: 'contacts', Type: 'GET', Params: {width: 'customers'}} ; } !/
Или функцию, которая выполнит необходимые действия и вернет результат, например так:
/! function () { return this.Query ('select * from contacts'); } !/
Более сложный вариант функции с вызовом метода REST API amoCRM и формированием результата:
/! function () { var Res = this.Select ('contacts', 'GET'); return this.MakeResult (Res, 'contacts'); } !/
Если функция не возвращает записи, например в результате изменения или удаления данных, она должна вернуть значение null:
/! function () { var Res = this.CallMethod ('contacts', 'POST', {...}); return null; } !/
Если необходимо выбрать контакты с определенным статусом сделки, то в следующем запросе необходимо указать id статуса, который можно узнать, выбрав данные из таблицы "Сделки":
/! function () { var Res = this.Query ('select * from contacts'); var AddRes = this.Query ('select * from leads where status_id = 15097975'); return Res.Join (AddRes, 'id', 'main_contact_id'); } !/
Помимо этого SQL-запросы к этому источнику данных могут содержать комментарии в виде /* */ и содержать несколько запросов разделенных символами // на новой строке.
Назад к SQL-запросам.