From dae8491c9fd45306108239684dcff06c5a0d8d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B0=D1=82=D1=8C=D1=8F=D0=BD=D0=B0=20=D0=A4=D0=B0?= =?UTF-8?q?=D1=80=D0=B1=D0=B5=D1=80?= Date: Fri, 3 Apr 2026 18:37:20 +0400 Subject: [PATCH] garbagecollect --- README.md | 1335 +++++++++++++++++++++++++++++++++++++++++ bitrix/crm.lua | 1434 +++++++++++++++++++++++++++++++++++++++++++++ config/bitrix.lua | 5 + config/config.lua | 52 ++ test.lua | 46 ++ utils/array.lua | 43 ++ utils/log.lua | 90 +++ utils/url.lua | 30 + 8 files changed, 3035 insertions(+) create mode 100644 README.md create mode 100644 bitrix/crm.lua create mode 100755 config/bitrix.lua create mode 100755 config/config.lua create mode 100644 test.lua create mode 100755 utils/array.lua create mode 100644 utils/log.lua create mode 100644 utils/url.lua diff --git a/README.md b/README.md new file mode 100644 index 0000000..5c92809 --- /dev/null +++ b/README.md @@ -0,0 +1,1335 @@ +# Bitrix CRM API Lua SDK + +```local crm = require("bitrix.crm")``` + + +```crm.post(url,data,full)``` + +## Items + + +#### Получить поля элемента crm.item.fields + +[crm.item.fields](https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-fields.html) + +```crm.item.fields(entityTypeId,useOriginalUfNames)``` + + +#### Создать новый элемент CRM crm.item.add + +[crm.item.add](https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-add.html) + +```crm.item.add(entityTypeId,fields,useOriginalUfNames)``` + + +#### Обновить элемент crm.item.update + +[crm.item.update](https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-update.html) + +```crm.item.update(entityTypeId,id,fields,useOriginalUfNames)``` + + +#### Удалить элемент crm.item.delete + +[crm.item.delete](https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-delete.html) + +```crm.item.delete(entityTypeId,id)``` + + +#### Получить список элементов crm.item.list + +[crm.item.list](https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-list.html) + +```crm.item.list(entityTypeId,sel,fields,filter,order,useOriginalUfNames,start)``` + +## Deals + + +#### Получить сделку по Id crm.deal.get + +[crm.deal.get](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-get.html) + +```crm.deal.get(id)``` + + +#### Получить список сделок crm.deal.list + +[crm.deal.list](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-list.html) + +```crm.deal.list(sel,filter,order,start)``` + + +#### Создать новую сделку crm.deal.add + +[crm.deal.add](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-add.html) + +```crm.deal.add(fields)``` + + +#### Изменить сделку crm.deal.update + +[crm.deal.update](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-update.html) + +```crm.deal.update(id,fields)``` + + +#### Удалить сделку crm.deal.delete + +[crm.deal.delete](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-delete.html) + +```crm.deal.delete(id)``` + + +#### Получить поля сделки crm.deal.fields + +[crm.deal.fields](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-fields.html) + +```crm.deal.fields()``` + + +#### Получить товары сделки crm.deal.productrows.get + +[crm.deal.productrows.get](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-productrows-get.html) + +```crm.deal.productrows.get(id)``` + + +#### Установить товары в сделку crm.deal.productrows.set + +[crm.deal.productrows.set](https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-productrows-set.html) + +```crm.deal.productrows.set(id,rows)``` + + +#### Получить пользовательское поле сделок по Id crm.deal.userfield.get + +[crm.deal.userfield.get](https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-get.html) + +```crm.deal.userfield.get(id)``` + + +#### Создать новое пользовательское поле для сделок crm.deal.userfield.add + +[crm.deal.userfield.add](https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-add.html) + +```crm.deal.userfield.add(fields)``` + + +#### Удалить пользовательское поле сделок crm.deal.userfield.delete + +[crm.deal.userfield.delete](https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-delete.html) + +```crm.deal.userfield.delete(id)``` + + +#### Изменить существующее пользовательское поле сделок crm.deal.userfield.update + +[crm.deal.userfield.update](https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-update.html) + +```crm.deal.userfield.update(id,fields,LIST)``` + + +#### Получить список пользовательских полей сделок crm.deal.userfield.list + +[crm.deal.userfield.list](https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-list.html) + +```crm.deal.userfield.list(order,filter)``` + + +#### Добавить контакт к сделке crm.deal.contact.add + +[crm.deal.contact.add](https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-add.html) + +```crm.deal.contact.add(id,fields)``` + + +#### Удалить контакт из указанной сделки crm.deal.contact.delete + +[crm.deal.contact.delete](https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-delete.html) + +```crm.deal.contact.delete(id,contact_id)``` + + +#### Добавить несколько контактов к сделке crm.deal.contact.items.set + +[crm.deal.contact.items.set](https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-items-set.html) + +```crm.deal.contact.items.set(id,items)``` + + +#### Получить набор контактов, связанных со сделкой crm.deal.contact.items.get + +[crm.deal.contact.items.get](https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-items-get.html) + +```crm.deal.contact.items.get(id)``` + + +#### Удалить набор контактов, связанных с указанной сделкой crm.deal.contact.items.delete + +[crm.deal.contact.items.delete](https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-items-delete.html) + +```crm.deal.contact.items.delete(id)``` + + +#### Получить поля настройки шаблона регулярной сделки по Id crm.deal.recurring.get + +[crm.deal.recurring.get](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-get.html) + +```crm.deal.recurring.get(id)``` + + +#### Создать новую регулярную сделку crm.deal.recurring.add + +[crm.deal.recurring.add](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-add.html) + +```crm.deal.recurring.add(fields)``` + + +#### Удалить существующую настройку для шаблона регулярной сделки crm.deal.recurring.delete + +[crm.deal.recurring.delete](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-delete.html) + +```crm.deal.recurring.delete(id)``` + + +#### Получить список полей шаблона регулярной сделки crm.deal.recurring.fields + +[crm.deal.recurring.fields](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-fields.html) + +```crm.deal.recurring.fields()``` + + +#### Изменить существующую настройку для шаблона регулярной сделки crm.deal.recurring.update + +[crm.deal.recurring.update](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-update.html) + +```crm.deal.recurring.update(id,fields)``` + + +#### Получить список настроек шаблонов регулярных сделок crm.deal.recurring.list + +[crm.deal.recurring.list](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-list.html) + +```crm.deal.recurring.list(order,filter,sel)``` + + +#### Создать новую сделку из шаблона crm.deal.recurring.expose + +[crm.deal.recurring.expose](https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-expose.html) + +```crm.deal.recurring.expose(id)``` + + +#### Получить параметры карточки crm.deal.details.configuration.get + +[crm.deal.details.configuration.get](https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-get.html) + +```crm.deal.details.configuration.get(scope,userId,extras)``` + + +#### Сбросить параметры карточки crm.deal.details.configuration.reset + +[crm.deal.details.configuration.reset](https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-reset.html) + +```crm.deal.details.configuration.reset(scope,userId,extras)``` + + +#### Установить параметры индивидуальной карточки crm.deal.details.configuration.set + +[crm.deal.details.configuration.set](https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-set.html) + +```crm.deal.details.configuration.set(scope,userId,data,extras)``` + + +#### Установить общую карточку для всех пользователей crm.deal.details.configuration.forceCommonScopeForAll + +[crm.deal.details.configuration.forceCommonScopeForAll](https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-force-common-scope-for-all.html) + +```crm.deal.details.configuration.forceCommonScopeForAll(extras)``` + +## Leads + + +#### Получить лид по Id crm.lead.get + +[crm.lead.get](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-get.html) + +```crm.lead.get(id)``` + + +#### Получить список лидов crm.lead.list + +[crm.lead.list](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-list.html) + +```crm.lead.list(sel,filter,order,start)``` + + +#### Создать новый лид crm.lead.add + +[crm.lead.add](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-add.html) + +```crm.lead.add(fields)``` + + +#### Изменить лид crm.lead.update + +[crm.lead.update](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-update.html) + +```crm.lead.update(id,fields,params)``` + + +#### Удалить лид crm.lead.delete + +[crm.lead.delete](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-delete.html) + +```crm.lead.delete(id)``` + + +#### Получить поля лида crm.lead.fields + +[crm.lead.fields](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-fields.html) + +```crm.lead.fields()``` + + +#### Получить лид по Id crm.lead.get + +[crm.lead.get](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-get.html) + +```crm.lead.productrows.get(id)``` + + +#### Добавить товары в лид crm.lead.productrows.set + +[crm.lead.productrows.set](https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-productrows-set.html) + +```crm.lead.productrows.set(id,rows)``` + + +#### Получить поле по коду crm.lead.userfield.get + +[crm.lead.userfield.get](https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-get.html) + +```crm.lead.userfield.get(id)``` + + +#### Добавить поле crm.lead.userfield.add + +[crm.lead.userfield.add](https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-add.html) + +```crm.lead.userfield.add(fields,LIST)``` + + +#### Удалить поле crm.lead.userfield.delete + +[crm.lead.userfield.delete](https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-delete.html) + +```crm.lead.userfield.delete(id)``` + + +#### Изменить поле crm.lead.userfield.update + +[crm.lead.userfield.update](https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-update.html) + +```crm.lead.userfield.update(id,fields,LIST)``` + + +#### Получить список полей crm.lead.userfield.list + +[crm.lead.userfield.list](https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-list.html) + +```crm.lead.userfield.list(order,filter)``` + + +#### Добавить привязку контакта к лиду crm.lead.contact.add + +[crm.lead.contact.add](https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-add.html) + +```crm.lead.contact.add(id,fields)``` + + +#### Получить поля связи лид-контакт crm.lead.contact.fields + +[crm.lead.contact.fields](https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-fields.html) + +```crm.lead.contact.fields()``` + + +#### Удалить привязку контакта к лиду crm.lead.contact.delete + +[crm.lead.contact.delete](https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-delete.html) + +```crm.lead.contact.delete(id,contact_id)``` + + +#### Прикрепить список контактов к лиду crm.lead.contact.items.set + +[crm.lead.contact.items.set](https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-items-set.html) + +```crm.lead.contact.items.set(id,items)``` + + +#### Получить список связанных контактов crm.lead.contact.items.get + +[crm.lead.contact.items.get](https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-items-get.html) + +```crm.lead.contact.items.get(id)``` + + +#### Удалить список контактов у лида crm.lead.contact.items.delete + +[crm.lead.contact.items.delete](https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-items-delete.html) + +```crm.lead.contact.items.delete(id)``` + + +#### Получить параметры карточки crm.lead.details.configuration.get + +[crm.lead.details.configuration.get](https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-get.html) + +```crm.lead.details.configuration.get(scope,userId,extras)``` + + +#### Сбросить параметры карточки crm.lead.details.configuration.reset + +[crm.lead.details.configuration.reset](https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-reset.html) + +```crm.lead.details.configuration.reset(scope,userId,extras)``` + + +#### Установить параметры индивидуальной карточки crm.lead.details.configuration.set + +[crm.lead.details.configuration.set](https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-set.html) + +```crm.lead.details.configuration.set(scope,userId,data,extras)``` + + +#### Установить общую карточку для всех пользователей crm.lead.details.configuration.forceCommonScopeForAll + +[crm.lead.details.configuration.forceCommonScopeForAll](https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-force-common-scope-for-all.html) + +```crm.lead.details.configuration.forceCommonScopeForAll(extras)``` + +## Contacts + + +#### Получить контакт по Id crm.contact.get + +[crm.contact.get](https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-get.html) + +```crm.contact.get(id)``` + + +#### Получить список контактов crm.contact.list + +[crm.contact.list](https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-list.html) + +```crm.contact.list(sel,filter,order,start)``` + + +#### Создать новый контакт crm.contact.add + +[crm.contact.add](https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-add.html) + +```crm.contact.add(fields)``` + + +#### Изменить контакт crm.contact.update + +[crm.contact.update](https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-update.html) + +```crm.contact.update(id,fields,params)``` + + +#### Удалить контакт crm.contact.delete + +[crm.contact.delete](https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-delete.html) + +```crm.contact.delete(id)``` + + +#### Получить поля контакта crm.contact.fields + +[crm.contact.fields](https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-fields.html) + +```crm.contact.fields()``` + + +#### Получить пользовательское поле контактов по Id crm.contact.userfield.get + +[crm.contact.userfield.get](https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-get.html) + +```crm.contact.userfield.get(id)``` + + +#### Создать пользовательское поле для контактов crm.contact.userfield.add + +[crm.contact.userfield.add](https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-add.html) + +```crm.contact.userfield.add(fields,LIST)``` + + +#### Удалить пользовательское поле контактов crm.contact.userfield.delete + +[crm.contact.userfield.delete](https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-delete.html) + +```crm.contact.userfield.delete(id)``` + + +#### Изменить существующее пользовательское поле контактов crm.contact.userfield.update + +[crm.contact.userfield.update](https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-update.html) + +```crm.contact.userfield.update(id,fields,LIST)``` + + +#### Получить список пользовательских полей контактов crm.contact.userfield.list + +[crm.contact.userfield.list](https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-list.html) + +```crm.contact.userfield.list(order,filter)``` + + +#### Добавить компанию к указанному контакту crm.contact.company.add + +[crm.contact.company.add](https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-add.html) + +```crm.contact.company.add(id,fields)``` + + +#### Получить поля для связи контакт-компания crm.contact.company.fields + +[crm.contact.company.fields](https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-fields.html) + +```crm.contact.company.fields()``` + + +#### Удалить компанию из указанного контакта crm.contact.company.delete + +[crm.contact.company.delete](https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-delete.html) + +```crm.contact.company.delete(id,company_id)``` + + +#### Установить набор компаний, связанных с указанным контактом crm.contact.company.items.set + +[crm.contact.company.items.set](https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-items-set.html) + +```crm.contact.company.items.set(id,items)``` + + +#### Получить набор компаний, связанных с указанным контактом crm.contact.company.items.get + +[crm.contact.company.items.get](https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-items-get.html) + +```crm.contact.company.items.get(id)``` + + +#### Очистить набор компаний, связанных с указанным контактом crm.contact.company.items.delete + +[crm.contact.company.items.delete](https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-items-delete.html) + +```crm.contact.company.items.delete(id)``` + + +#### Получить параметры карточки crm.contact.details.configuration.get + +[crm.contact.details.configuration.get](https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-get.html) + +```crm.contact.details.configuration.get(scope,userId,extras)``` + + +#### Сбросить параметры карточки crm.contact.details.configuration.reset + +[crm.contact.details.configuration.reset](https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-reset.html) + +```crm.contact.details.configuration.reset(scope,userId,extras)``` + + +#### Установить параметры индивидуальной карточки crm.contact.details.configuration.set + +[crm.contact.details.configuration.set](https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-set.html) + +```crm.contact.details.configuration.set(scope,userId,data,extras)``` + + +#### Установить общую карточку для всех пользователей crm.contact.details.configuration.forceCommonScopeForAll + +[crm.contact.details.configuration.forceCommonScopeForAll](https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-force-common-scope-for-all.html) + +```crm.contact.details.configuration.forceCommonScopeForAll(extras)``` + +## Companies + + +#### Получить информацию о компании crm.company.get + +[crm.company.get](https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-get.html) + +```crm.company.get(id)``` + + +#### Получить список компаний по фильтру crm.company.list + +[crm.company.list](https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-list.html) + +```crm.company.list(sel,filter,order,start)``` + + +#### Создать новую компанию crm.company.add + +[crm.company.add](https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-add.html) + +```crm.company.add(fields)``` + + +#### Обновить существующую компанию crm.company.update + +[crm.company.update](https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-update.html) + +```crm.company.update(id,fields,params)``` + + +#### Удалить компанию crm.company.delete + +[crm.company.delete](https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-delete.html) + +```crm.company.delete(id)``` + + +#### Получить описание полей компании crm.company.fields + +[crm.company.fields](https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-fields.html) + +```crm.company.fields()``` + + +#### Получить пользовательское поле компаний по идентификатору crm.company.userfield.get + +[crm.company.userfield.get](https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-get.html) + +```crm.company.userfield.get(id)``` + + +#### Создать новое пользовательское поле для компаний crm.company.userfield.add + +[crm.company.userfield.add](https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-add.html) + +```crm.company.userfield.add(fields,LIST)``` + + +#### Удалить пользовательское поле компаний crm.company.userfield.delete + +[crm.company.userfield.delete](https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-delete.html) + +```crm.company.userfield.delete(id)``` + + +#### Обновить существующее пользовательское поле компаний crm.company.userfield.update + +[crm.company.userfield.update](https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-update.html) + +```crm.company.userfield.update(id,fields,LIST)``` + + +#### Получить список пользовательских полей компаний по фильтру crm.company.userfield.list + +[crm.company.userfield.list](https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-list.html) + +```crm.company.userfield.list(order,filter)``` + + +#### Добавить контакт к указанной компании crm.company.contact.add + +[crm.company.contact.add](https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-add.html) + +```crm.company.contact.add(id,fields)``` + + +#### Получить описание полей для связи компания-контакт crm.company.contact.fields + +[crm.company.contact.fields](https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-fields.html) + +```crm.company.contact.fields()``` + + +#### Удалить контакт из указанной компании crm.company.contact.delete + +[crm.company.contact.delete](https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-delete.html) + +```crm.company.contact.delete(id,contact_id)``` + + +#### Установить набор контактов, связанных с указанной компанией crm.company.contact.items.set + +[crm.company.contact.items.set](https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-items-set.html) + +```crm.company.contact.items.set(id,items)``` + + +#### Получить набор контактов, связанных с указанной компанией crm.company.contact.items.get + +[crm.company.contact.items.get](https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-items-get.html) + +```crm.company.contact.items.get(id)``` + + +#### Очистить набор контактов, связанных с указанной компанией crm.company.contact.items.delete + +[crm.company.contact.items.delete](https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-items-delete.html) + +```crm.company.contact.items.delete(id)``` + + +#### Получить параметры карточки crm.company.details.configuration.get + +[crm.company.details.configuration.get](https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-get.html) + +```crm.company.details.configuration.get(scope,userId,extras)``` + + +#### Сбросить параметры карточки crm.company.details.configuration.reset + +[crm.company.details.configuration.reset](https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-reset.html) + +```crm.company.details.configuration.reset(scope,userId,extras)``` + + +#### Установить параметры индивидуальной карточки crm.company.details.configuration.set + +[crm.company.details.configuration.set](https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-set.html) + +```crm.company.details.configuration.set(scope,userId,data,extras)``` + + +#### Установить общую карточку для всех пользователей crm.company.details.configuration.forceCommonScopeForAll + +[crm.company.details.configuration.forceCommonScopeForAll](https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-force-common-scope-for-all.html) + +```crm.company.details.configuration.forceCommonScopeForAll(extras)``` + +## Quotes + + +#### Получить коммерческое предложение по идентификатору crm.quote.get + +[crm.quote.get](https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-get.html) + +```crm.quote.get(id)``` + + +#### Получить список предложений по фильтру crm.quote.list + +[crm.quote.list](https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-list.html) + +```crm.quote.list(sel,filter,order,start)``` + + +#### Добавить коммерческое предложение crm.quote.add + +[crm.quote.add](https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-add.html) + +```crm.quote.add(fields)``` + + +#### Изменить коммерческое предложение crm.quote.update + +[crm.quote.update](https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-update.html) + +```crm.quote.update(id,fields,params)``` + + +#### Удалить коммерческое предложение crm.quote.delete + +[crm.quote.delete](https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-delete.html) + +```crm.quote.delete(id)``` + + +#### Получить поля коммерческого предложения crm.quote.fields + +[crm.quote.fields](https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-fields.html) + +```crm.quote.fields()``` + + +#### Получить пользовательские поля предложений по идентификатору crm.quote.userfield.get + +[crm.quote.userfield.get](https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-get.html) + +```crm.quote.userfield.get(id)``` + + +#### Создать пользовательское поле для предложений crm.quote.userfield.add + +[crm.quote.userfield.add](https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-add.html) + +```crm.quote.userfield.add(fields)``` + + +#### Удалить пользовательское поле предложений crm.quote.userfield.delete + +[crm.quote.userfield.delete](https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-delete.html) + +```crm.quote.userfield.delete(id)``` + + +#### Изменить пользовательское поле предложений crm.quote.userfield.update + +[crm.quote.userfield.update](https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-update.html) + +```crm.quote.userfield.update(id,fields,LIST)``` + + +#### Получить список пользовательских полей предложений по фильтру crm.quote.userfield.list + +[crm.quote.userfield.list](https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-list.html) + +```crm.quote.userfield.list(order,filter)``` + +## Addreses + + +#### Получить список адресов по фильтру crm.address.list + +[crm.address.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-list.html) + +```crm.address.list(sel,filter,order,start)``` + + +#### Добавить адрес crm.address.add + +[crm.address.add](https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-add.html) + +```crm.address.add(fields)``` + + +#### Изменить адрес реквизита crm.address.update + +[crm.address.update](https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-update.html) + +```crm.address.update(fields)``` + + +#### Удалить адрес crm.address.delete + +[crm.address.delete](https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-delete.html) + +```crm.address.delete(fields)``` + + +#### Получить описание полей адреса crm.address.fields + +[crm.address.fields](https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-fields.html) + +```crm.address.fields()``` + +## Requisites + + +#### Получить реквизит по id crm.requisite.get + +[crm.requisite.get](https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-get.html) + +```crm.requisite.get(id)``` + + +#### Получить список реквизитов по фильтру crm.requisite.list + +[crm.requisite.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-list.html) + +```crm.requisite.list(sel,filter,order,start)``` + + +#### Добавить реквизит crm.requisite.add + +[crm.requisite.add](https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-add.html) + +```crm.requisite.add(fields)``` + + +#### Обновить реквизит crm.requisite.update + +[crm.requisite.update](https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-update.html) + +```crm.requisite.update(id,fields,params)``` + + +#### Удалить реквизит и связанные объекты crm.requisite.delete + +[crm.requisite.delete](https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-delete.html) + +```crm.requisite.delete(id)``` + + +#### Получить поля реквизита crm.requisite.fields + +[crm.requisite.fields](https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-fields.html) + +```crm.requisite.fields()``` + + +#### Получить банковский реквизит по id crm.requisite.bankdetail.get + +[crm.requisite.bankdetail.get](https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-get.html) + +```crm.requisite.bankdetail.get(id)``` + + +#### Получить список банковских реквизитов по фильтру crm.requisite.bankdetail.list + +[crm.requisite.bankdetail.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-list.html) + +```crm.requisite.bankdetail.list(sel,filter,order,start)``` + + +#### Создать новый банковский реквизит crm.requisite.bankdetail.add + +[crm.requisite.bankdetail.add](https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-add.html) + +```crm.requisite.bankdetail.add(fields)``` + + +#### Изменить банковский реквизит crm.requisite.bankdetail.update + +[crm.requisite.bankdetail.update](https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-update.html) + +```crm.requisite.bankdetail.update(id,fields,params)``` + + +#### Удалить банковский реквизит crm.requisite.bankdetail.delete + +[crm.requisite.bankdetail.delete](https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-delete.html) + +```crm.requisite.bankdetail.delete(id)``` + + +#### Получить описание полей банковских реквизитов crm.requisite.bankdetail.fields + +[crm.requisite.bankdetail.fields](https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-fields.html) + +```crm.requisite.bankdetail.fields()``` + + +#### Получить пользовательское поле по id crm.requisite.userfield.get + +[crm.requisite.userfield.get](https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-get.html) + +```crm.requisite.userfield.get(id)``` + + +#### Получить список пользовательских полей реквизита по фильтру crm.requisite.userfield.list + +[crm.requisite.userfield.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-list.html) + +```crm.requisite.userfield.list(sel,filter,order,start)``` + + +#### Создать новое пользовательское поле реквизита crm.requisite.userfield.add + +[crm.requisite.userfield.add](https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-add.html) + +```crm.requisite.userfield.add(fields)``` + + +#### Изменить пользовательское поле реквизита crm.requisite.userfield.update + +[crm.requisite.userfield.update](https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-update.html) + +```crm.requisite.userfield.update(id,fields,params)``` + + +#### Удалить пользовательское поле реквизита crm.requisite.userfield.delete + +[crm.requisite.userfield.delete](https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-delete.html) + +```crm.requisite.userfield.delete(id)``` + + +#### Получить связь реквизита с объектом crm.requisite.link.get + +[crm.requisite.link.get](https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-get.html) + +```crm.requisite.link.get(entityTypeId,entityId)``` + + +#### Получить список связей реквизитов crm.requisite.link.list + +[crm.requisite.link.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-list.html) + +```crm.requisite.link.list(sel,filter,order,start)``` + + +#### Зарегистрировать связь реквизитов с объектом crm.requisite.link.register + +[crm.requisite.link.register](https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-register.html) + +```crm.requisite.link.register(fields)``` + + +#### Удалить связь реквизита с объектом crm.requisite.link.unregister + +[crm.requisite.link.unregister](https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-unregister.html) + +```crm.requisite.link.unregister(entityTypeId,entityId)``` + + +#### Получить описание полей связи реквизитов crm.requisite.link.fields + +[crm.requisite.link.fields](https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-fields.html) + +```crm.requisite.link.fields()``` + + +#### Получить поля шаблона реквизитов по id crm.requisite.preset.get + +[crm.requisite.preset.get](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-get.html) + +```crm.requisite.preset.get(id)``` + + +#### Получить список шаблонов реквизитов по фильтру crm.requisite.preset.list + +[crm.requisite.preset.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-list.html) + +```crm.requisite.preset.list(sel,filter,order,start)``` + + +#### Создать шаблон crm.requisite.preset.add + +[crm.requisite.preset.add](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-add.html) + +```crm.requisite.preset.add(fields)``` + + +#### Изменить шаблон реквизита crm.requisite.preset.update + +[crm.requisite.preset.update](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-update.html) + +```crm.requisite.preset.update(id,fields)``` + + +#### Удалить шаблон реквизита crm.requisite.preset.delete + +[crm.requisite.preset.delete](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-delete.html) + +```crm.requisite.preset.delete(id)``` + + +#### Получить описание полей шаблона реквизитов crm.requisite.preset.fields + +[crm.requisite.preset.fields](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-fields.html) + +```crm.requisite.preset.fields()``` + + +#### Получить список стран для шаблона crm.requisite.preset.countries + +[crm.requisite.preset.countries](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-countries.html) + +```crm.requisite.preset.countries()``` + + +#### Получить настраиваемое поле шаблона реквизитов по id crm.requisite.preset.field.get + +[crm.requisite.preset.field.get](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-get.html) + +```crm.requisite.preset.field.get(id,preset)``` + + +#### Получить список всех настраиваемых полей заданного шаблона реквизитов crm.requisite.preset.field.list + +[crm.requisite.preset.field.list](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-list.html) + +```crm.requisite.preset.field.list(preset)``` + + +#### Добавить настраиваемое поле в шаблон реквизитов crm.requisite.preset.field.add + +[crm.requisite.preset.field.add](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-add.html) + +```crm.requisite.preset.field.add(preset,fields)``` + + +#### Изменить настраиваемое поле заданного шаблона реквизитов crm.requisite.preset.field.update + +[crm.requisite.preset.field.update](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-update.html) + +```crm.requisite.preset.field.update(id,preset,fields)``` + + +#### Удалить настраиваемое поле из шаблона реквизитов crm.requisite.preset.field.delete + +[crm.requisite.preset.field.delete](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-delete.html) + +```crm.requisite.preset.field.delete(id,preset)``` + + +#### Получить описание настраиваемых полей шаблона реквизитов crm.requisite.preset.field.fields + +[crm.requisite.preset.field.fields](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-fields.html) + +```crm.requisite.preset.field.fields()``` + + +#### Получить поля, доступные для добавления в шаблон реквизитов crm.requisite.preset.field.availabletoadd + +[crm.requisite.preset.field.availabletoadd](https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-available-to-add.html) + +```crm.requisite.preset.field.availabletoadd(preset)``` + +## Multifields + + +#### Получить описание множественных полей crm.multifield.fields + +[crm.multifield.fields](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/multifield/crm-multifield-fields.html) + +```crm.multifield.fields()``` + +## Enums + + +#### Получить описание полей перечисления crm.enum.fields + +[crm.enum.fields](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-fields.html) + +```crm.enum.fields()``` + + +#### Получить элементы перечисления «Тип владельца» crm.enum.ownertype + +[crm.enum.ownertype](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-owner-type.html) + +```crm.enum.ownertype()``` + + +#### Получить id объектов, к которым можно привязать заказ crm.enum.getorderownertypes + +[crm.enum.getorderownertypes](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-get-order-owner-types.html) + +```crm.enum.getorderownertypes()``` + + +#### Получить элементы перечисления «Тип содержания» crm.enum.contenttype + +[crm.enum.contenttype](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-content-type.html) + +```crm.enum.contenttype()``` + + +#### Получить элементы перечисления «Тип активности» crm.enum.activitytype + +[crm.enum.activitytype](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-type.html) + +```crm.enum.activitytype()``` + + +#### Получить элементы перечисления «Приоритет активности» crm.enum.activitypriority + +[crm.enum.activitypriority](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-priority.html) + +```crm.enum.activitypriority()``` + + +#### Получить элементы перечисления «Направление активности» crm.enum.activivtydirection + +[crm.enum.activivtydirection](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-direction.html) + +```crm.enum.activivtydirection()``` + + +#### Получить элементы перечисления «Тип уведомления о начале активности» crm.enum.activitynotifytype + +[crm.enum.activitynotifytype](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-notify-type.html) + +```crm.enum.activitynotifytype()``` + + +#### Получить элементы перечисления «Тип адреса» crm.enum.addresstype + +[crm.enum.addresstype](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-address-type.html) + +```crm.enum.addresstype()``` + + +#### Получить элементы перечисления «Статус» crm.enum.activitystatus + +[crm.enum.activitystatus](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-status.html) + +```crm.enum.activitystatus()``` + +## Statuses + + +#### Получить элемент справочника по идентификатору crm.status.get + +[crm.status.get](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-get.html) + +```crm.status.get(id)``` + + +#### Создать новый элемент справочника crm.status.add + +[crm.status.add](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-add.html) + +```crm.status.add(fields)``` + + +#### Удалить элемент справочника crm.status.delete + +[crm.status.delete](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-delete.html) + +```crm.status.delete(id)``` + + +#### Получить описание полей справочника crm.status.fields + +[crm.status.fields](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-fields.html) + +```crm.status.fields()``` + + +#### Обновить существующий элемент справочника crm.status.update + +[crm.status.update](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-update.html) + +```crm.status.update(id,fields)``` + + +#### Получить список элементов справочника по фильтру crm.status.list + +[crm.status.list](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-list.html) + +```crm.status.list(order,filter)``` + + +#### Получить элемент справочника по его символьному идентификатору crm.status.entity.items + +[crm.status.entity.items](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-entity-items.html) + +```crm.status.entity.items(entityId)``` + + +#### Получить типы справочников crm.status.entity.types + +[crm.status.entity.types](https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-entity-types.html) + +```crm.status.entity.types()``` + +## Categories + + +#### Получить воронку по Id crm.category.get + +[crm.category.get](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-get.html) + +```crm.category.get(entityTypeId,id)``` + + +#### Добавить новую воронку crm.category.add + +[crm.category.add](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-add.html) + +```crm.category.add(entityTypeId,fields)``` + + +#### Добавить новую воронку crm.category.add + +[crm.category.add](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-add.html) + +```crm.category.update(entityTypeId,id,fields)``` + + +#### Удалить воронку crm.category.delete + +[crm.category.delete](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-delete.html) + +```crm.category.delete(entityTypeId,id)``` + + +#### Получить поля воронки crm.category.fields + +[crm.category.fields](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-fields.html) + +```crm.category.fields(entityTypeId)``` + + +#### Обновить воронку crm.category.update + +[crm.category.update](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-update.html) + +```crm.category.update(entityTypeId,id,fields)``` + + +#### Получить список воронок crm.category.list + +[crm.category.list](https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-list.html) + +```crm.category.list(entityTypeId)``` + +## Timelines + + +#### Получить информацию о комментарии crm.timeline.comment.get + +[crm.timeline.comment.get](https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-get.html) + +```crm.timeline.comment.get(id)``` + + +#### Получить список комментариев crm.timeline.comment.list + +[crm.timeline.comment.list](https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-list.html) + +```crm.timeline.comment.list(sel,filter,order,start)``` + + +#### Добавить комментарий crm.timeline.comment.add + +[crm.timeline.comment.add](https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-add.html) + +```crm.timeline.comment.add(fields)``` + + +#### Обновить комментарий crm.timeline.comment.update + +[crm.timeline.comment.update](https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-update.html) + +```crm.timeline.comment.update(id,fields)``` + + +#### Удалить комментарий crm.timeline.comment.delete + +[crm.timeline.comment.delete](https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-delete.html) + +```crm.timeline.comment.delete(id)``` + + +#### Получить поля комментария crm.timeline.comment.fields + +[crm.timeline.comment.fields](https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-fields.html) + +```crm.timeline.comment.fields()``` + + +#### Получить информацию о заметке crm.timeline.note.get + +[crm.timeline.note.get](https://apidocs.bitrix24.ru/api-reference/crm/timeline/note/crm-timeline-note-get.html) + +```crm.timeline.note.get(ownerTypeId,ownerId,itemType,itemId)``` + + +#### Сохранить заметку crm.timeline.note.save + +[crm.timeline.note.save](https://apidocs.bitrix24.ru/api-reference/crm/timeline/note/crm-timeline-note-save.html) + +```crm.timeline.note.save(ownerTypeId,ownerId,itemType,itemId,text)``` + + +#### Удалить заметку crm.timeline.note.delete + +[crm.timeline.note.delete](https://apidocs.bitrix24.ru/api-reference/crm/timeline/note/crm-timeline-note-delete.html) + +```crm.timeline.note.delete(ownerTypeId,ownerId,itemType,itemId)``` + diff --git a/bitrix/crm.lua b/bitrix/crm.lua new file mode 100644 index 0000000..ca978d0 --- /dev/null +++ b/bitrix/crm.lua @@ -0,0 +1,1434 @@ +local json = require('cjson') +local cURL = require("cURL") +local log = require('utils.log') +local url = require('utils.url') +local config = require('config.bitrix') +local array = require('utils.array') + +local _M = {} +_M.result = nil +log.outfile = 'logs/bitrix_'..os.date('%Y-%m-%d')..'.log' +log.level = 'trace' +_M.base = config.url..'/rest/'..config.user..'/'..config.token..'/'; +_M.res = {} +_M.format = config.format +_M.item = {} +_M.deal = {} +_M.deal.productrows = {} +_M.deal.userfield = {} +_M.deal.contact = {} +_M.deal.contact.items = {} +_M.deal.recurring = {} +_M.deal.contact.item = {} +_M.deal.details = {} +_M.deal.details.configuration = {} +_M.lead = {} +_M.lead.productrows = {} +_M.lead.contact = {} +_M.lead.contact.items = {} +_M.lead.userfield = {} +_M.lead.details = {} +_M.lead.details.configuration = {} +_M.contact = {} +_M.contact.productrows = {} +_M.contact.company = {} +_M.contact.company.items = {} +_M.contact.userfield = {} +_M.contact.details = {} +_M.contact.details.configuration = {} +_M.company = {} +_M.company.productrows = {} +_M.company.userfield = {} +_M.company.contact = {} +_M.company.contact.items = {} +_M.company.contact.item = {} +_M.company.details = {} +_M.company.details.configuration = {} +_M.timeline = {} +_M.timeline.comment = {} +_M.timeline.note= {} +_M.timeline.bindings = {} +_M.timeline.layout = {} +_M.timeline.item = {} +_M.timeline.logmessage = {} +_M.quote = {} +_M.quote.productrows = {} +_M.quote.userfield = {} +_M.address = {} +_M.requisite = {} +_M.requisite.bankdetail = {} +_M.requisite.userfield = {} +_M.requisite.link = {} +_M.requisite.preset = {} +_M.requisite.preset.field = {} +_M.multifield = {} +_M.enum = {} +_M.status = {} +_M.status.entity = {} +_M.category = {} + +local function get_result(str,url,full) + local result, err = pcall(json.decode,str) + if result then + _M.result = json.decode(str) + else + log.error(url..':'..err) + return nil, err + end + if _M.result.result then + if full then return _M.result else return _M.result.result end + end + log.error(url..str) + return nil +end + +function _M.post(url,data,full) + local str = '' + url = _M.base..url + local headers = { + 'Content-Type: application/json', + 'Accept: application/json' + } + local c = cURL.easy{ + url = url, + post = true, + postfields = json.encode(data), + httpheader = headers, + ssl_verifyhost = tonumber(config.ssl), + ssl_verifypeer = tonumber(config.ssl), + writefunction = function(st) + str = str..st + collectgarbage("collect") + return #st + end + } + local ok, err = c:perform() + local code = c:getinfo_response_code() + c:close() + if not ok then return nil, err end + if code ~= 200 then + log.error(url..':'..str) + return nil,str + end + if _M.format == 'json' then + res,err = get_result(str,url,full) + else + res = str + end + if not res then return nil,err end + return res +end + +--[[ + Items +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-fields.html + +function _M.item.fields(entityTypeId,useOriginalUfNames) + return _M.post('crm.item.fields',{['entityTypeId']=entityTypeId,['useOriginalUfNames']=useOriginalUfNames}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-add.html + +function _M.item.add(entityTypeId,fields,useOriginalUfNames) + return _M.post('crm.item.add',{['entityTypeId']=entityTypeId,['fields']=fields,['useOriginalUfNames']=useOriginalUfNames}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-update.html + +function _M.item.update(entityTypeId,id,fields,useOriginalUfNames) + return _M.post('crm.item.update',{['entityTypeId']=entityTypeId,['id']=id,['fields']=fields,['useOriginalUfNames']=useOriginalUfNames}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-delete.html + +function _M.item.delete(entityTypeId,id) + return _M.post('crm.item.delete',{['entityTypeId']=entityTypeId,['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/crm-item-list.html + +function _M.item.list(entityTypeId,sel,fields,filter,order,useOriginalUfNames,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.item.list',{['entityTypeId']=entityTypeId,['select']=sel,['filter']=filter,['order']=order,['useOriginalUfNames']=useOriginalUfNames,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.item.list(entityTypeId,sel,fields,filter,order,useOriginalUfNames,start) + end + return _M.listing +end + +--[[ + Deals +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-get.html + +function _M.deal.get(id) + return _M.post('crm.deal.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-list.html + +function _M.deal.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.deal.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.deal.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-add.html + +function _M.deal.add(fields) + return _M.post('crm.deal.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-update.html + +function _M.deal.update(id,fields) + return _M.post('crm.deal.update',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-delete.html + +function _M.deal.delete(id) + return _M.post('crm.deal.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-fields.html + +function _M.deal.fields() + return _M.post('crm.deal.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-productrows-get.html + +function _M.deal.productrows.get(id) + return _M.post('crm.deal.productrows.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/crm-deal-productrows-set.html + +function _M.deal.productrows.set(id,rows) + return _M.post('crm.deal.productrows.set',{['id']=id,['rows']=rows}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-get.html + +function _M.deal.userfield.get(id) + return _M.post('crm.deal.userfield.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-add.html + +function _M.deal.userfield.add(fields) + return _M.post('crm.deal.userfield.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-delete.html + +function _M.deal.userfield.delete(id) + return _M.post('crm.deal.userfield.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-update.html + +function _M.deal.userfield.update(id,fields,LIST) + return _M.post('crm.deal.userfield.update',{['id']=id,['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/user-defined-fields/crm-deal-userfield-list.html + +function _M.deal.userfield.list(order,filter) + return _M.post('crm.deal.userfield.list',{['order']=order,['filter']=filter}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-add.html + +function _M.deal.contact.add(id,fields) + return _M.post('crm.deal.contact.add',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-delete.html + +function _M.deal.contact.delete(id,contact_id) + return _M.post('crm.deal.contact.delete',{['id']=id,['fields']={['CONTACT_ID']=contact_id}}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-items-set.html + +function _M.deal.contact.items.set(id,items) + return _M.post('crm.deal.contact.items.set',{['id']=id,['items']=items}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-items-get.html + +function _M.deal.contact.items.get(id) + return _M.post('crm.deal.contact.items.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/contacts/crm-deal-contact-items-delete.html + +function _M.deal.contact.items.delete(id) + return _M.post('crm.deal.contact.items.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-get.html + +function _M.deal.recurring.get(id) + return _M.post('crm.deal.recurring.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-add.html + +function _M.deal.recurring.add(fields) + return _M.post('crm.deal.recurring.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-delete.html + +function _M.deal.recurring.delete(id) + return _M.post('crm.deal.recurring.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-fields.html + +function _M.deal.recurring.fields() + return _M.post('crm.deal.recurring.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-update.html + +function _M.deal.recurring.update(id,fields) + return _M.post('crm.deal.recurring.update',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-list.html + +function _M.deal.recurring.list(order,filter,sel) + return _M.post('crm.deal.recurring.list',{['order']=order,['filter']=filter,['select']=sel}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/recurring-deals/crm-deal-recurring-expose.html + +function _M.deal.recurring.expose(id) + return _M.post('crm.deal.recurring.expose',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-get.html + +function _M.deal.details.configuration.get(scope,userId,extras) + return _M.post('crm.deal.details.configuration.get',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-reset.html + +function _M.deal.details.configuration.reset(scope,userId,extras) + return _M.post('crm.deal.details.configuration.reset',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-set.html + +function _M.deal.details.configuration.set(scope,userId,data,extras) + return _M.post('crm.deal.details.configuration.set',{['scope']=id,['userId']=userId,['data']=data,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/deals/custom-form/crm-deal-details-configuration-force-common-scope-for-all.html + +function _M.deal.details.configuration.forceCommonScopeForAll(extras) + return _M.post('crm.deal.details.configuration.forceCommonScopeForAll',{['extras']=extras}) +end + +--[[ + Leads +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-get.html + +function _M.lead.get(id) + return _M.post('crm.lead.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-list.html + +function _M.lead.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.lead.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.lead.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-add.html + +function _M.lead.add(fields) + return _M.post('crm.lead.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-update.html + +function _M.lead.update(id,fields,params) + return _M.post('crm.lead.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-delete.html + +function _M.lead.delete(id) + return _M.post('crm.lead.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-fields.html + +function _M.lead.fields() + return _M.post('crm.lead.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-get.html + +function _M.lead.productrows.get(id) + return _M.post('crm.lead.productrows.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/crm-lead-productrows-set.html + +function _M.lead.productrows.set(id,rows) + return _M.post('crm.lead.productrows.set',{['id']=id,['rows']=rows}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-get.html + +function _M.lead.userfield.get(id) + return _M.post('crm.lead.userfield.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-add.html + +function _M.lead.userfield.add(fields,LIST) + return _M.post('crm.lead.userfield.add',{['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-delete.html + +function _M.lead.userfield.delete(id) + return _M.post('crm.lead.userfield.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-update.html + +function _M.lead.userfield.update(id,fields,LIST) + return _M.post('crm.lead.userfield.update',{['id']=id,['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/userfield/crm-lead-userfield-list.html + +function _M.lead.userfield.list(order,filter) + return _M.post('crm.lead.userfield.list',{['order']=order,['filter']=filter}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-add.html + +function _M.lead.contact.add(id,fields) + return _M.post('crm.lead.contact.add',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-fields.html + +function _M.lead.contact.fields() + return _M.post('crm.lead.contact.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-delete.html + +function _M.lead.contact.delete(id,contact_id) + return _M.post('crm.lead.contact.delete',{['id']=id,['fields']={['CONTACT_ID']=contact_id}}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-items-set.html + +function _M.lead.contact.items.set(id,items) + return _M.post('crm.lead.contact.items.set',{['id']=id,['items']=items}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-items-get.html + +function _M.lead.contact.items.get(id) + return _M.post('crm.lead.contact.items.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/management-communication/crm-lead-contact-items-delete.html + +function _M.lead.contact.items.delete(id) + return _M.post('crm.lead.contact.items.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-get.html + +function _M.lead.details.configuration.get(scope,userId,extras) + return _M.post('crm.lead.details.configuration.get',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-reset.html + +function _M.lead.details.configuration.reset(scope,userId,extras) + return _M.post('crm.lead.details.configuration.reset',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-set.html + +function _M.lead.details.configuration.set(scope,userId,data,extras) + return _M.post('crm.lead.details.configuration.set',{['scope']=id,['userId']=userId,['data']=data,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/leads/custom-form/crm-lead-details-configuration-force-common-scope-for-all.html + +function _M.lead.details.configuration.forceCommonScopeForAll(extras) + return _M.post('crm.lead.details.configuration.forceCommonScopeForAll',{['extras']=extras}) +end + +--[[ + Contacts +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-get.html + +function _M.contact.get(id) + return _M.post('crm.contact.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-list.html + +function _M.contact.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.contact.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.contact.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-add.html + +function _M.contact.add(fields) + return _M.post('crm.contact.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-update.html + +function _M.contact.update(id,fields,params) + return _M.post('crm.contact.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-delete.html + +function _M.contact.delete(id) + return _M.post('crm.contact.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/crm-contact-fields.html + +function _M.contact.fields() + return _M.post('crm.contact.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-get.html + +function _M.contact.userfield.get(id) + return _M.post('crm.contact.userfield.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-add.html + +function _M.contact.userfield.add(fields,LIST) + return _M.post('crm.contact.userfield.add',{['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-delete.html + +function _M.contact.userfield.delete(id) + return _M.post('crm.contact.userfield.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-update.html + +function _M.contact.userfield.update(id,fields,LIST) + return _M.post('crm.contact.userfield.update',{['id']=id,['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/userfield/crm-contact-userfield-list.html + +function _M.contact.userfield.list(order,filter) + return _M.post('crm.contact.userfield.list',{['order']=order,['filter']=filter}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-add.html + +function _M.contact.company.add(id,fields) + return _M.post('crm.contact.company.add',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-fields.html + +function _M.contact.company.fields() + return _M.post('crm.contact.company.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-delete.html + +function _M.contact.company.delete(id,company_id) + return _M.post('crm.contact.company.delete',{['id']=id,['fields']={['COMPANY_ID']=company_id}}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-items-set.html + +function _M.contact.company.items.set(id,items) + return _M.post('crm.contact.company.items.set',{['id']=id,['items']=items}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-items-get.html + +function _M.contact.company.items.get(id) + return _M.post('crm.contact.company.items.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/company/crm-contact-company-items-delete.html + +function _M.contact.company.items.delete(id) + return _M.post('crm.contact.company.items.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-get.html + +function _M.contact.details.configuration.get(scope,userId,extras) + return _M.post('crm.contact.details.configuration.get',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-reset.html + +function _M.contact.details.configuration.reset(scope,userId,extras) + return _M.post('crm.contact.details.configuration.reset',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-set.html + +function _M.contact.details.configuration.set(scope,userId,data,extras) + return _M.post('crm.contact.details.configuration.set',{['scope']=id,['userId']=userId,['data']=data,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/contacts/custom-form/crm-contact-details-configuration-force-common-scope-for-all.html + +function _M.contact.details.configuration.forceCommonScopeForAll(extras) + return _M.post('crm.contact.details.configuration.forceCommonScopeForAll',{['extras']=extras}) +end + +--[[ + Companies +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-get.html + +function _M.company.get(id) + return _M.post('crm.company.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-list.html + +function _M.company.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.company.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.company.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-add.html + +function _M.company.add(fields) + return _M.post('crm.company.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-update.html + +function _M.company.update(id,fields,params) + return _M.post('crm.company.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-delete.html + +function _M.company.delete(id) + return _M.post('crm.company.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/crm-company-fields.html + +function _M.company.fields() + return _M.post('crm.company.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-get.html + +function _M.company.userfield.get(id) + return _M.post('crm.company.userfield.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-add.html + +function _M.company.userfield.add(fields,LIST) + return _M.post('crm.company.userfield.add',{['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-delete.html + +function _M.company.userfield.delete(id) + return _M.post('crm.company.userfield.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-update.html + +function _M.company.userfield.update(id,fields,LIST) + return _M.post('crm.company.userfield.update',{['id']=id,['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/userfields/crm-company-userfield-list.html + +function _M.company.userfield.list(order,filter) + return _M.post('crm.company.userfield.list',{['order']=order,['filter']=filter}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-add.html + +function _M.company.contact.add(id,fields) + return _M.post('crm.company.contact.add',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-fields.html + +function _M.company.contact.fields() + return _M.post('crm.company.contact.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-delete.html + +function _M.company.contact.delete(id,contact_id) + return _M.post('crm.company.contact.delete',{['id']=id,['fields']={['CONTACT_ID']=contact_id}}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-items-set.html + +function _M.company.contact.items.set(id,items) + return _M.post('crm.company.contact.items.set',{['id']=id,['items']=items}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-items-get.html + +function _M.company.contact.items.get(id) + return _M.post('crm.company.contact.items.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/contacts/crm-company-contact-items-delete.html + +function _M.company.contact.items.delete(id) + return _M.post('crm.company.contact.items.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-get.html + +function _M.company.details.configuration.get(scope,userId,extras) + return _M.post('crm.company.details.configuration.get',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-reset.html + +function _M.company.details.configuration.reset(scope,userId,extras) + return _M.post('crm.company.details.configuration.reset',{['scope']=id,['userId']=userId,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-set.html + +function _M.company.details.configuration.set(scope,userId,data,extras) + return _M.post('crm.company.details.configuration.set',{['scope']=id,['userId']=userId,['data']=data,['extras']=extras}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/companies/custom-form/crm-company-details-configuration-force-common-scope-for-all.html + +function _M.company.details.configuration.forceCommonScopeForAll(extras) + return _M.post('crm.company.details.configuration.forceCommonScopeForAll',{['extras']=extras}) +end + +--[[ + Quotes +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-get.html + +function _M.quote.get(id) + return _M.post('crm.quote.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-list.html + +function _M.quote.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.quote.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.quote.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-add.html + +function _M.quote.add(fields) + return _M.post('crm.quote.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-update.html + +function _M.quote.update(id,fields,params) + return _M.post('crm.quote.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-delete.html + +function _M.quote.delete(id) + return _M.post('crm.quote.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/crm-quote-fields.html + +function _M.quote.fields() + return _M.post('crm.quote.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-get.html + +function _M.quote.userfield.get(id) + return _M.post('crm.quote.userfield.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-add.html + +function _M.quote.userfield.add(fields) + return _M.post('crm.quote.userfield.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-delete.html + +function _M.quote.userfield.delete(id) + return _M.post('crm.quote.userfield.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-update.html + +function _M.quote.userfield.update(id,fields,LIST) + return _M.post('crm.quote.userfield.update',{['id']=id,['fields']=fields,['LIST']=LIST}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/quote/user-field/crm-quote-user-field-list.html + +function _M.quote.userfield.list(order,filter) + return _M.post('crm.quote.userfield.list',{['order']=order,['filter']=filter}) +end + +--[[ + Addreses +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-list.html + +function _M.address.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.address.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.address.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-add.html + +function _M.address.add(fields) + return _M.post('crm.address.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-update.html + +function _M.address.update(fields) + return _M.post('crm.address.update',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-delete.html + +function _M.address.delete(fields) + return _M.post('crm.address.delete',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/addresses/crm-address-fields.html + +function _M.address.fields() + return _M.post('crm.address.fields',{}) +end + +--[[ + Requisites +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-get.html + +function _M.requisite.get(id) + return _M.post('crm.requisite.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-list.html + +function _M.requisite.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.requisite.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.requisite.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-add.html + +function _M.requisite.add(fields) + return _M.post('crm.requisite.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-update.html + +function _M.requisite.update(id,fields,params) + return _M.post('crm.requisite.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-delete.html + +function _M.requisite.delete(id) + return _M.post('crm.requisite.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/universal/crm-requisite-fields.html + +function _M.requisite.fields() + return _M.post('crm.requisite.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-get.html + +function _M.requisite.bankdetail.get(id) + return _M.post('crm.requisite.bankdetail.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-list.html + +function _M.requisite.bankdetail.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.requisite.bankdetail.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.requisite.bankdetail.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-add.html + +function _M.requisite.bankdetail.add(fields) + return _M.post('crm.requisite.bankdetail.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-update.html + +function _M.requisite.bankdetail.update(id,fields,params) + return _M.post('crm.requisite.bankdetail.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-delete.html + +function _M.requisite.bankdetail.delete(id) + return _M.post('crm.requisite.bankdetail.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/bank-detail/crm-requisite-bank-detail-fields.html + +function _M.requisite.bankdetail.fields() + return _M.post('crm.requisite.bankdetail.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-get.html + +function _M.requisite.userfield.get(id) + return _M.post('crm.requisite.userfield.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-list.html + +function _M.requisite.userfield.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.requisite.userfield.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.requisite.userfield.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-add.html + +function _M.requisite.userfield.add(fields) + return _M.post('crm.requisite.userfield.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-update.html + +function _M.requisite.userfield.update(id,fields,params) + return _M.post('crm.requisite.userfield.update',{['id']=id,['fields']=fields,['params']=params}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/user-fields/crm-requisite-userfield-delete.html + +function _M.requisite.userfield.delete(id) + return _M.post('crm.requisite.userfield.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-get.html + +function _M.requisite.link.get(entityTypeId,entityId) + return _M.post('crm.requisite.link.get',{['entityTypeId']=entityTypeId,['entityId']=entityId}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-list.html + +function _M.requisite.link.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.requisite.link.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.requisite.link.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-register.html + +function _M.requisite.link.register(fields) + return _M.post('crm.requisite.link.register',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-unregister.html + +function _M.requisite.link.unregister(entityTypeId,entityId) + return _M.post('crm.requisite.link.unregister',{['entityTypeId']=entityTypeId,['entityId']=entityId}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/links/crm-requisite-link-fields.html + +function _M.requisite.link.fields() + return _M.post('crm.requisite.link.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-get.html + +function _M.requisite.preset.get(id) + return _M.post('crm.requisite.preset.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-list.html + +function _M.requisite.preset.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.requisite.preset.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.requisite.preset.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-add.html + +function _M.requisite.preset.add(fields) + return _M.post('crm.requisite.preset.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-update.html + +function _M.requisite.preset.update(id,fields) + return _M.post('crm.requisite.preset.update',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-delete.html + +function _M.requisite.preset.delete(id) + return _M.post('crm.requisite.preset.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-fields.html + +function _M.requisite.preset.fields() + return _M.post('crm.requisite.preset.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/crm-requisite-preset-countries.html + +function _M.requisite.preset.countries() + return _M.post('crm.requisite.preset.countries',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-get.html + +function _M.requisite.preset.field.get(id,preset) + return _M.post('crm.requisite.preset.field.get',{['id']=id,['preset']=preset}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-list.html + +function _M.requisite.preset.field.list(preset) + return _M.post('crm.requisite.preset.field.list',{['preset']=preset}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-add.html + +function _M.requisite.preset.field.add(preset,fields) + return _M.post('crm.requisite.preset.field.add',{['preset']=preset,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-update.html + +function _M.requisite.preset.field.update(id,preset,fields) + return _M.post('crm.requisite.preset.field.update',{['id']=id,['preset']=preset,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-delete.html + +function _M.requisite.preset.field.delete(id,preset) + return _M.post('crm.requisite.preset.field.delete',{['id']=id,['preset']=preset}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-fields.html + +function _M.requisite.preset.field.fields() + return _M.post('crm.requisite.preset.field.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/requisites/presets/fields/crm-requisite-preset-field-available-to-add.html + +function _M.requisite.preset.field.availabletoadd(preset) + return _M.post('crm.requisite.preset.field.availabletoadd',{['preset']=preset}) +end + +--[[ + Multifields +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/multifield/crm-multifield-fields.html + +function _M.multifield.fields() + return _M.post('crm.multifield.fields',{}) +end + +--[[ + Enums +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-fields.html + +function _M.enum.fields() + return _M.post('crm.enum.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-owner-type.html + +function _M.enum.ownertype() + return _M.post('crm.enum.ownertype',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-get-order-owner-types.html + +function _M.enum.getorderownertypes() + return _M.post('crm.enum.getorderownertypes',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-content-type.html + +function _M.enum.contenttype() + return _M.post('crm.enum.contenttype',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-type.html + +function _M.enum.activitytype() + return _M.post('crm.enum.activitytype',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-priority.html + +function _M.enum.activitypriority() + return _M.post('crm.enum.activitypriority',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-direction.html + +function _M.enum.activivtydirection() + return _M.post('crm.enum.activivtydirection',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-notify-type.html + +function _M.enum.activitynotifytype() + return _M.post('crm.enum.activitynotifytype',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-address-type.html + +function _M.enum.addresstype() + return _M.post('crm.enum.addresstype',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-activity-status.html + +function _M.enum.activitystatus() + return _M.post('crm.enum.activitystatus',{}) +end + +--[[ + Statuses +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-get.html + +function _M.status.get(id) + return _M.post('crm.status.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-add.html + +function _M.status.add(fields) + return _M.post('crm.status.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-delete.html + +function _M.status.delete(id) + return _M.post('crm.status.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-fields.html + +function _M.status.fields() + return _M.post('crm.status.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-update.html + +function _M.status.update(id,fields) + return _M.post('crm.status.update',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-list.html + +function _M.status.list(order,filter) + return _M.post('crm.status.list',{['order']=order,['filter']=filter}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-entity-items.html + +function _M.status.entity.items(entityId) + return _M.post('crm.status.entity.items',{['entityId']=entityId}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/status/crm-status-entity-types.html + +function _M.status.entity.types() + return _M.post('crm.status.entity.types',{}) +end + +--[[ + Categories +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-get.html + +function _M.category.get(entityTypeId,id) + return _M.post('crm.category.get',{['entityTypeId']=entityTypeId,['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-add.html + +function _M.category.add(entityTypeId,fields) + return _M.post('crm.category.add',{['entityTypeId']=entityTypeId,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-add.html + +function _M.category.update(entityTypeId,id,fields) + return _M.post('crm.category.update',{['entityTypeId']=entityTypeId,['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-delete.html + +function _M.category.delete(entityTypeId,id) + return _M.post('crm.category.delete',{['entityTypeId']=entityTypeId,['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-fields.html + +function _M.category.fields(entityTypeId) + return _M.post('crm.category.fields',{['entityTypeId']=entityTypeId}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-update.html + +function _M.category.update(entityTypeId,id,fields) + return _M.post('crm.category.update',{['entityTypeId']=entityTypeId,['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/universal/category/crm-category-list.html + +function _M.category.list(entityTypeId) + return _M.post('crm.category.list',{['entityTypeId']=entityTypeId}) +end + + +--[[ + Timelines +--]] + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-get.html + +function _M.timeline.comment.get(id) + return _M.post('crm.timeline.comment.get',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-list.html + +function _M.timeline.comment.list(sel,filter,order,start) + sel = sel or {'*'} + if not start then + _M.listing = {} + start = 0 + end + _M.res = _M.post('crm.timeline.comment.list',{['select']=sel,['filter']=filter,['order']=order,['start']=start},true) + array.merge(_M.listing,_M.res.result) + if _M.res.next then + start = tonumber(_M.res.next) + _M.timeline.comment.list(sel,filter,order,start) + end + return _M.listing +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-add.html + +function _M.timeline.comment.add(fields) + return _M.post('crm.timeline.comment.add',{['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-update.html + +function _M.timeline.comment.update(id,fields) + return _M.post('crm.timeline.comment.update',{['id']=id,['fields']=fields}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-delete.html + +function _M.timeline.comment.delete(id) + return _M.post('crm.timeline.comment.delete',{['id']=id}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/comments/crm-timeline-comment-fields.html + +function _M.timeline.comment.fields() + return _M.post('crm.timeline.comment.fields',{}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/note/crm-timeline-note-get.html + +function _M.timeline.note.get(ownerTypeId,ownerId,itemType,itemId) + return _M.post('crm.timeline.note.get',{['ownerTypeId']=ownerTypeId,['ownerId']=ownerId,['itemType']=itemType,['itemId']=itemId}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/note/crm-timeline-note-save.html + +function _M.timeline.note.save(ownerTypeId,ownerId,itemType,itemId,text) + return _M.post('crm.timeline.note.save',{['ownerTypeId']=ownerTypeId,['ownerId']=ownerId,['itemType']=itemType,['itemId']=itemId,['text']=text}) +end + +-- https://apidocs.bitrix24.ru/api-reference/crm/timeline/note/crm-timeline-note-delete.html + +function _M.timeline.note.delete(ownerTypeId,ownerId,itemType,itemId) + return _M.post('crm.timeline.note.delete',{['ownerTypeId']=ownerTypeId,['ownerId']=ownerId,['itemType']=itemType,['itemId']=itemId}) +end + +return _M diff --git a/config/bitrix.lua b/config/bitrix.lua new file mode 100755 index 0000000..d035725 --- /dev/null +++ b/config/bitrix.lua @@ -0,0 +1,5 @@ +local config = require('config.config') +local _M = config +_M.file = 'bitrix.conf' -- файл конфигурации +_M.read() +return _M.data diff --git a/config/config.lua b/config/config.lua new file mode 100755 index 0000000..78e7c19 --- /dev/null +++ b/config/config.lua @@ -0,0 +1,52 @@ +local json = require('cjson.safe') +local _M = {} +_M.data = {} +_M.comments = {} +_M.file = '' -- файл конфигурации +local key + +function _M.read() + for line in io.lines(_M.file) do + key = string.match(line, '([%w_]+)::') + if (key) then + _M.data[key] = string.match(line, '::(.*) #') + _M.comments[key] = string.match(line, '#(.*)') + if string.find(_M.data[key],'%{%"') or string.find(_M.data[key],'%[%"') then + _M.data[key] = json.decode(_M.data[key]) + end + end + end +end + +function reprint(k,v) + if type(v) == 'table' then + for i,j in pairs(v) do + reprint(i,j) + end + else + print(k..': '..v) + end +end + +function _M.data:write() + local config_file = io.open(_M.file, 'w') + for k,v in pairs(self) do + if type(v) ~= 'function' then + if type(v) == 'table' then v = json.encode(v) end + config_file:write(k..'::'..v..' #'.._M.comments[key]..'\n') + end + end + config_file:close() +end + +function _M.data:print() + for k,v in pairs(self) do + if type(v) ~= 'function' then + if _M.comments[k] then print('\n'.._M.comments[k]:gsub("^%s*(.-)%s*$", "%1")..': \n') end + reprint(k,v) + end + end +end + +return _M + diff --git a/test.lua b/test.lua new file mode 100644 index 0000000..e905330 --- /dev/null +++ b/test.lua @@ -0,0 +1,46 @@ +local json = require('cjson') +local crm = require('bitrix.crm') +local log = require('utils.log') +log.outfile = 'logs/tests_'..os.date('%Y-%m-%d')..'.log' +log.level = 'trace' + +local deal_id = 158811 +local test_date = '2025-01-05' + +local function get_statuses() + log.info('Поля статусов CRM: '..json.encode(crm.status.fields())) + log.info('Статусы сделок : '..json.encode(crm.status.list(nil,{['ENTITY_ID']='DEAL_TYPE'}))) +end + +local function test_deal_get(id) + local result = crm.deal.get(id) + if result.BEGINDATE then log.info('Тест получения сделок: успешно') + else log.error('Тест получения сделок: провален '..json.encode(result)) end + result = crm.deal.productrows.get(id) + if result[1].PRODUCT_ID then log.info('Тест получения продукта сделки: успешно') + else log.error('Тест получения продукта сделки: провален '..json.encode(result)) end +end + +local function test_deal_add_update_delete() + local result = crm.deal.add(id) + if result.BEGINDATE then log.info('Тест получения сделок: успешно') + else log.error('Тест получения сделок: провален '..json.encode(result)) end + result = crm.deal.productrows.get(id) + if result[1].PRODUCT_ID then log.info('Тест получения продукта сделки: успешно') + else log.error('Тест получения продукта сделки: провален '..json.encode(result)) end +end + +local function test_deal_list() + local result = crm.deal.list({'*'},{['STAGE_ID']='NEW',['>DATE_CREATE']=test_date}) + if #result ~= tonumber(crm.res.total) then + log.error('Ошибка обработки листинга сделок '..json.encode(crm.res)) + else + log.info('Тест листинга сделок: успешно') + end +end + +get_statuses() +test_deal_get(deal_id) +test_deal_list() + + diff --git a/utils/array.lua b/utils/array.lua new file mode 100755 index 0000000..51f8c73 --- /dev/null +++ b/utils/array.lua @@ -0,0 +1,43 @@ +local _M = {} + +function _M.keys(t) + local keys = {} + for key,_ in pairs(t) do + table.insert(keys, key) + end + return keys +end + +function _M.merge(t1,t2) + for k,v in pairs(t2) do + table.insert(t1,v) + end + return t1 +end + +function _M.count(t) + local count = 0 + for key,_ in pairs(t) do + count = count + 1 + end + return count +end + +function _M.minkey(t) + local a = {} + for n in pairs(t) do table.insert(a, n) end + table.sort(a) + return a[1] +end + +function _M.implode(t,before,after,sep) + local result = '' + local count = _M.count(t) + for key,val in pairs(t) do + result = result..before..val..after + if key < count then result = result..sep end + end + return result +end + +return _M diff --git a/utils/log.lua b/utils/log.lua new file mode 100644 index 0000000..d7bc2d4 --- /dev/null +++ b/utils/log.lua @@ -0,0 +1,90 @@ +-- +-- log.lua +-- +-- Copyright (c) 2016 rxi +-- +-- This library is free software; you can redistribute it and/or modify it +-- under the terms of the MIT license. See LICENSE for details. +-- + +local log = { _version = "0.1.0" } + +log.usecolor = true +log.outfile = nil +log.level = "trace" + + +local modes = { + { name = "trace", color = "\27[34m", }, + { name = "debug", color = "\27[36m", }, + { name = "info", color = "\27[32m", }, + { name = "warn", color = "\27[33m", }, + { name = "error", color = "\27[31m", }, + { name = "fatal", color = "\27[35m", }, +} + + +local levels = {} +for i, v in ipairs(modes) do + levels[v.name] = i +end + + +local round = function(x, increment) + increment = increment or 1 + x = x / increment + return (x > 0 and math.floor(x + .5) or math.ceil(x - .5)) * increment +end + + +local _tostring = tostring + +local tostring = function(...) + local t = {} + for i = 1, select('#', ...) do + local x = select(i, ...) + if type(x) == "number" then + x = round(x, .01) + end + t[#t + 1] = _tostring(x) + end + return table.concat(t, " ") +end + + +for i, x in ipairs(modes) do + local nameupper = x.name:upper() + log[x.name] = function(...) + + -- Return early if we're below the log level + if i < levels[log.level] then + return + end + + local msg = tostring(...) + local info = debug.getinfo(2, "Sl") + local lineinfo = info.short_src .. ":" .. info.currentline + + -- Output to console + print(string.format("%s[%-6s%s]%s %s: %s", + log.usecolor and x.color or "", + nameupper, + os.date("%H:%M:%S"), + log.usecolor and "\27[0m" or "", + lineinfo, + msg)) + + -- Output to log file + if log.outfile then + local fp = io.open(log.outfile, "a") + local str = string.format("[%-6s%s] %s: %s\n", + nameupper, os.date(), lineinfo, msg) + fp:write(str) + fp:close() + end + + end +end + + +return log diff --git a/utils/url.lua b/utils/url.lua new file mode 100644 index 0000000..70f666e --- /dev/null +++ b/utils/url.lua @@ -0,0 +1,30 @@ +local _M = {} + +local char_to_hex = function(c) + return string.format("%%%02X", string.byte(c)) +end + +local hex_to_char = function(x) + return string.char(tonumber(x, 16)) +end + +function _M.encode(url) + if url == nil then + return + end + url = url:gsub("\n", "\r\n") + url = url:gsub("([^%w ])", char_to_hex) + url = url:gsub(" ", "+") + return url +end + +_M.decode = function(url) + if url == nil then + return + end + url = url:gsub("+", " ") + url = url:gsub("%%(%x%x)", hex_to_char) + return url +end + +return _M