Введение
Спасибо за выбор Synergy CRM! Данный API позволяет работать со следующими сущностями в CRM (соответствующими сущностями в 1С):
| contacts | (контактные лица, сотрудники, физические лица) |
| companies | (контрагенты, партнеры) |
| company-bank-details | (банковские реквизиты контрагентов) |
| deals | (заказы клиентов) |
| deal-stages | (статусы заказов клиентов) |
| products | (номенклатура) |
| product-categories | (группы номенклатуры) |
| entity-products | (табличная часть заказа клиента) |
| stores | (склады) |
| invoices | (счета клиентов) |
| account-bank-details | (банковские реквизиты организации) |
| org-details | (организации) |
| invoice-positions | (табличная часть счета клиента) |
| invoice-payments | (ПКО, поступление на расчетный счет, взаимозачет) |
| users | (пользователи) |
| custom-fields | (дополнительные поля) |
В случае возникновения вопросов по работе API обращайтесь в техническую поддержку.
Получение API токена
Для корректной работы всех последующих примеров вам потребуется ключ для доступа к SynergyCRM API. Чтобы получить данный ключ перейдите в раздел Настройки / Настройки API из своего аккаунта. Детали можно посмотреть в инструкции по ссылке.
Спецификация
Форматы запросов и ответов к API соответствуют спецификации JSON API v1.1.
Общие принципы
Постраничный вывод (пагинация)
Пример ответа, содержащего мета данные о количестве объектов и количество страниц
{
"data" : [....],
"meta": {
"record_count": 2222,
"page_count": 22
}
}
Для перехода на вторую (третью, четвертую и тд) страницу, необходимо в адрес
запроса указывать параметр page[number], например, чтобы получить вторую страницу сделок
нужно GET запрос отправлять на адрес https://1c-connector.app.synergycrm.ru/api/v1/deals?page[number]=2.
Для изменения количества выводимых объектов на страницу нужно использовать параметр page[size],
по умолчанию размер страницы составляет 50 объектов, максимально допустимый 100 объектов.
GET запрос на адрес https://1c-connector.app.synergycrm.ru/api/v1/deals?page[size]=5 вернет 5 сделок.
Оба параметра page[number] и page[size] можно вызывать вместе, GET запрос на адрес
https://1c-connector.app.synergycrm.ru/api/v1/deals?page[number]=2&page[size]=2 вернет две сделки второй страницы.
Каждый ответ содержит не только ключ c данными (data), но и ключ с метаданными (meta),
в котором хранится информация о общем количестве объектов (record-count) запрашиваемой
сущности и о общем количестве страниц (page-count).
Таким образом, на основании метаданных, можно строить логику деления объектов на страницы.
Авторизация
Чтобы авторизоваться используйте следующий код:
curl "https://1c-connector.app.synergycrm.ru/api/v1/deals" \
-H "Authorization: Bearer api_token"
Используйте полученный в настройках API токен вместо
api_token.
Каждый запрос к API требует авторизации. Для авторизации необходим специальный уникальный токен.
Токен авторизации необходимо передавать в заголовке Authorization каждого запроса. Пример:
Authorization: Bearer access_api_token
Информация о токене
Возвращает информацию о токене и настройках
curl "https://1c-connector.app.synergycrm.ru/api/v1/current_token" \
-H "Authorization: Bearer api_token"
Содержит в себе информацию о настройках приложения, что может быть полезно при работе с приложениями из маркетплейса.
| JSON API type | oauth-token |
| URL | /api/v1/current-token |
| Чтение | GET /api/v1/current-token |
| Редактирование | PATCH /api/v1/current-token |
Пример токена с настройками
{
"data": {
"id": "2",
"type": "oauth-token",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/oauth-token"
},
"attributes": {
"created-at": "2022-02-22T12:02:22.222+03:00",
"updated-at": "2022-02-22T12:02:22.222+03:00",
"cached-at": "2022-02-22T12:02:22.222+03:00",
"token": "bRx2cpE22ZOl2A2UFVJTX2CoVl2gBVg2FR22qMcI-PM",
"token-label": "1",
"scopes": "api",
"user-id": 2,
"subscription-expires-at": "2022-02-22T12:02:22.222+03:00",
"subscription-rights": {
"price": 0.0,
"license_included": 1,
"license_count": 9999,
"license_price": 1350.0,
"license_min_count": 3,
"default_payment_period": 3,
"payment_periods": [
3,
6,
12,
24
],
"disabled_payment_periods": [
1
],
"discount_map": [
[
6,
20
],
[
12,
30
],
[
24,
40
]
],
"api": true,
"scenarios": 9999,
"dynamic_tabs": true,
"document_templates": 9999,
"objects": 0,
"sms": true,
"telephony": true,
"web_form": true,
"roistat": true,
"dadata_from_api": false,
"manual_scenarios_api": false,
"mail_count": 9999,
"mail_method": "user",
"table_filters": 9999,
"custom_fields": 5000,
"disabled_custom_types": [
"file"
],
"storage": true,
"import": -1,
"export": "csv,xls",
"analytic": 9999999,
"settings_copy": true,
"card_blocks": true,
"invoices": true,
"payments": true,
"entries": true,
"checkups": true,
"contracts": true,
"contact_groups": true,
"recurrence_rules": true,
"user_salaries": true,
"indiboards": 9999,
"org_details": 9999,
"telegram": true,
"sales_funnel": 9999,
"time_tracking": true,
"ip_security": true,
"custom_roles": 9999,
"duplicates_finder_rules": 20,
"webhook_providers": true,
"bank_services": true,
"estate_property_exporters": true,
"accounting_provider": true,
"delivery_service": true,
"invite_count": 10,
"chat_widget": true,
"chat_integrations": true
},
"master-options": {"store": true}
}
}
}
В данном примере каждый ключ в
optionsидентичен названию ключа в настройках приложения. Подробнее о настройках можно почитать в Кабинете разработчика
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| id | integer |
2 |
нет | идентификатор токена |
| type | oauth-token |
oauth-token |
нет | тип объекта |
| self | string |
https://1c-connector.app.synergycrm.ru/api/v1/oauth-token |
нет | адрес запроса |
| token | string |
bRx2cpE22ZOl2A2UFVJTX2CoVl2gBVg2FR22qMcI-PM |
нет | API Access Token |
| scopes | array |
["profile_read"] |
нет | Разрешения |
| options | json |
{"key":"value"} |
да | Настройки приложения |
| user_id | integer |
22 | нет | ID пользователя владельца токена |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
| token-label | integer |
1 |
нет | Порядковый номер токена |
| subscription-expires-at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата окончания подписки |
| price | decimal |
0.0 |
нет | цена |
| license_included | integer |
2 |
нет | Количество включенных лицензий |
| license_count | integer |
9999 |
нет | Количество доступных лицензий для покупки |
| license_price | decimal |
1350.0 |
нет | Цена одной лицензии в месяц |
| license_min_count | integer |
3 |
нет | Минимальное количество лицензий на аккаунт |
| default_payment_period | integer |
3 |
нет | Минимальный срок оплаты лицензий |
| payment_periods | array |
[3,6,12,24], |
нет | Варианты сроков оплаты лицензий |
| disabled_payment_periods | array |
[] |
нет | Отключенные варианты сроков оплаты лицензий |
| discount_map | array |
[6,20],[12,30],[24,40]], |
нет | Варианты скидок |
| api | boolean |
true |
нет | Доступ к API |
| scenarios | integer |
9999 |
нет | Сценарии автоматизаций доступные для создания и работы |
| dynamic_tabs | boolean |
true |
нет | Динамическе таблицы |
| document_templates | integer |
9999 |
нет | Доступаное кол-во шаблонов документов |
| objects | integer |
9999 |
нет | Кол-во доступных для создания объектов (контакты, компании, сделки, заявки…) |
| sms | boolean |
true |
нет | Доступ к SMS интеграциям |
| telephony | boolean |
true |
нет | Интеграция с BATC |
| web_form | boolean |
true |
нет | Генерация и работа форм захвата заявок и сделок с сайтов |
| roistat | boolean |
true |
нет | Интеграция сервиса сквозной аналитики |
| dadata_from_api | boolean |
false |
нет | Доступ к интеграции с сервисом dadata |
| manual_scenarios_api | boolean |
false |
нет | Доступ к API-сценариям |
| mail_count | integer |
9999 |
нет | Кол-во доступных подключенных почтовых ящиков |
| mail_method | string |
user |
нет | Метод регистрации |
| table_filters | integer |
9999 |
нет | Фильтры в реестрах |
| custom_fields | integer |
9999 |
нет | Кол-во доступных дополнительных полей |
| disabled_custom_types | array |
["file","formula"] |
нет | Запрещенные типы дополнительных полей |
| storage | boolean |
true |
нет | Хранилище файлов |
| import | integer |
2500 |
нет | Доступное кол-во загружаемых данных в таблицы через механизм импорта |
| export | string |
"csv,xls" |
нет | Формат файлов для экспорта |
| analytic | integer |
100 |
нет | Кол-во доступных отчетов |
| settings_copy | boolean |
true |
нет | Копирование настроек от одного пользователя другим |
| card_blocks | boolean |
true |
нет | Карточки объектов системы |
| invoices | boolean |
true |
нет | Счета в модуле финансы |
| payments | boolean |
true |
нет | Платежи в модуле финансы |
| entries | boolean |
true |
нет | Журнал записей |
| checkups | boolean |
true |
нет | Модуль осмотры (универсальный справочник) |
| contracts | boolean |
true |
нет | Модуль договоры |
| contact_groups | boolean |
true |
нет | Группы контактов |
| recurrence_rules | boolean |
true |
нет | Правила повтора событий |
| user_salaries | boolean |
true |
нет | Расчет зарплаты сотрудников |
| indiboards | integer |
9999 |
нет | Рабочие доски с виджетами с отчетами |
| org_details | integer |
2 |
нет | Реквизиты юридических лиц аккаунта |
| telegram | boolean |
true |
нет | Интеграция с Telegram ботом BotFather в том числе уведомления о событиях в Telegram |
| sales_funnel | integer |
9999 |
нет | Кол-во воронок продаж |
| time_tracking | boolean |
true |
нет | Трекинг отработанного/затраченного времени |
| ip_security | boolean |
true |
нет | Защита/ограничение доступа по IP-адресу |
| custom_roles | integer |
9999 |
нет | Кастомные правда доступа, роли сотрудников в системе |
| duplicates_finder_rules | integer |
20 |
нет | Кол-во доступных для создания правил поиска дублей |
| webhook_providers | boolean |
true |
нет | Работа с вебхуками, вызов в автоматизациях |
| bank_services | boolean |
true |
нет | Интеграции с банковскими сервисами |
| estate_property_exporters | boolean |
true |
нет | Экспорт объектов недвижимости |
| accounting_provider | boolean |
true |
нет | Работа с банковскими реквизитами |
| delivery_service | boolean |
true |
нет | Интеграция с сервисом отслеживания грузоперевозок и доставки |
| store | boolean |
true |
нет | Модуль в системе “Склад” |
| invite_count | integer |
10 |
нет | Максимальное количество пользователей |
| chat_widget | boolean |
true |
нет | Модуль “Чаты” |
| chat_integrations | boolean |
true |
нет | Возможность интегрировать социальные сети и мессенджеры |
Контакты
Загрузка контакта
curl "https://1c-connector.app.synergycrm.ru/api/v1/contacts" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"contacts",
"attributes":{
"first_name":"Иван",
"last_name":"Иванов"
}
}
}
EOF
| JSON API type | contacts |
| URL | /api/v1/contacts |
| Список | GET /api/v1/contacts |
| Чтение | GET /api/v1/contacts/{id} |
| Создание | POST /api/v1/contacts |
| Редактирование | PATCH /api/v1/contacts/{id} |
| Удаление | DELETE /api/v1/contacts/{id} |
Атрибуты
Ниже приведен пример формата данных, в реальном ответе будут присутствовать все перечисленные атрибуты
{
"data": {
"type":"contacts",
"id":"2",
"attributes":{
"first_name":"Иван",
"last_name":"Иванов",
"middle_name": "Иванович",
"work_phone":"+79876543211",
"customs":{
"custom_1":"Значение",
"custom_943":"2022-02-22T12:02:22.222+03:00"
},
"created_at":"2022-02-22T12:02:22.222+03:00",
"updated_at":"2022-02-22T12:02:22.222+03:00",
"archived_at": "2022-02-22T12:02:22.222+03:00",
"cached_at": "2022-02-22T12:02:22.222+03:00",
"position": "Руководитель отдела",
"birthdate": "2022-02-22",
"mobile_phone": "+79876543211",
"general_phone": "+79876543211",
"other_phone": "+79876543211",
"email": "test@mail.ru",
"other_email": "test@mail.ru",
"fax": "+79876543211",
"website": "synergycrm.ru",
"work_country": "Россия",
"work_region": "Московская обл.",
"work_city": "Москва",
"work_zipcode": "2222222",
"work_street": "ул. Мира",
"work_building": "2а",
"work_housing": "2",
"work_apartment": "222",
"home_country": "Росссия",
"home_region": "Московская обл.",
"home_city": "Москва",
"home_zipcode": "2222222",
"home_street": "ул. Мира",
"home_building": "2а",
"home_housing": "2",
"home_apartment": "222",
"vkontakte": "vk.com/domen",
"facebook": "facebook.com",
"linkedin": "ru.linkedin.com",
"odnoklassniki": "",
"instagram": "instagram.com",
"twitter": "twitter.com",
"whatsapp": "value",
"viber": "value",
"telegram": "value",
"skype": "value",
"description": "Описание",
"note": "value",
"initial_balance": "10000",
"previous_responsible_id": "2",
"as_string": "Иван Иванов Иванович"
}
}
}
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| first_name* | string |
Иван | да | Имя |
| last_name* | string |
Иванов | да | Фамилия |
| middle_name | string |
Иванович | да | Отчество |
| birthdate | date |
2022-02-22 |
да | Дата рождения |
| description | string |
Описание | да | Описание |
| general_phone | string |
+79876543211 |
да | Телефон (основной) |
| mobile_phone | string |
+79876543211 |
да | Телефон (мобильный) |
| work_phone | string |
+79876543211 |
да | Телефон (рабочий) |
| work_phone_postfix | string |
200 |
да | Добавочный (рабочий) |
| other_phone | string |
+79876543211 |
да | Телефон (дополнительный) |
| other_phone_postfix | string |
200 |
да | Добавочный (дополнительный) |
| fax | string |
+79876543211 |
да | Факс |
string |
help@synergycrm.ru | да | E-mail адрес | |
| other_email | string |
help@synergycrm.ru | да | E-mail адрес (дополнительный) |
| website | string |
synergycrm.ru | да | Сайт |
| customs | hash |
{"custom_1":'custom value'} |
да | Свои поля |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
| archived_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации |
| discarded_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата перемещения в корзину |
| previous_responsible_id | integer |
100 |
нет | Предыдущий ответственный |
* Обязательные поля
Рабочий адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| work_country | string |
Россия | да | Страна |
| work_region | string |
Республика Татарстан | да | Область, регион, край |
| work_city | string |
Иннополис | да | Город, населенный пункт |
| work_zipcode | string |
012345 |
да | Индекс |
| work_street | string |
ул. Университетская | да | Улица, проспект |
| work_building | string |
22а |
да | Номер дома |
| work_housing | string |
2 |
да | Корпус |
| work_apartment | string |
123 |
да | Номер офиса или квартиры |
Домашний адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| home_country | string |
Россия | да | Страна |
| home_region | string |
Москва | да | Область, регион, край |
| home_city | string |
Москва | да | Город, населенный пункт |
| home_zipcode | string |
012345 |
да | Индекс |
| home_street | string |
ул. Кремлевская | да | Улица, проспект |
| home_building | string |
22а |
да | Номер дома |
| home_housing | string |
2 |
да | Корпус |
| home_apartment | string |
123 |
да | Номер офиса или квартиры |
Соц. сети и мессенджеры
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| vkontakte | string |
vk.com/domain | да | ВКонтакте |
string |
facebook.com/domain | да | ||
string |
ru.linkedin.com/domain | да | Linked-in | |
| odnoklassniki | string |
ok.ru/domain | да | Одноклассники |
string |
instagram.com/domain | да | ||
string |
twitter.com/domain | да | ||
string |
wa.me/79876543211 | да | ||
| viber | string |
viber://chat?number=+79876543211 | да | Viber |
| telegram | string |
t.me/username | да | Telegram |
| skype | string |
skype:(username) | да | Skype |
Связи
Получить данные по org_details(ответственная организация по контакту) через include
curl -G "http://1c-connector.app.synergycrm.ru/api/v1/contacts/2?include=org-detail" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Ответственный | responsible | users |
| Создатель | user | users |
| Компании | companies | companies |
| Сделки | deals | deals |
| Продукты | products | products |
| Спецификации | entities_products | entity_products |
| Счета | invoices | invoices |
| Ответственная организация | org_details | org_details |
Фильтры
Выгрузить список контактов с определённым рабочим номером
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/contacts" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[work_phone]=+79876543211"
| Фильтр | Описание | Пример |
|---|---|---|
| last_name | Выгрузить контакты по определенному last_name |
filter[last_name]=Ivanov |
| middle_name | Выгрузить контакты по определенному middle_name |
filter[middle_name]=Ivanovich |
| first_name | Выгрузить контакты по определенному first_name |
filter[first_name]=Ivan |
| work_phone | Выгрузить контакты по определенному work_phone |
filter[work_phone]=+79876543211 |
| mobile_phone | Выгрузить контакты по определенному mobile_phone |
filter[mobile_phone]=+79876543211 |
| other_phone | Выгрузить контакты по определенному other_phone |
filter[other_phone]=+79876543211 |
| any_phone | Выгрузить контакты в которых из одном из телефонных полей хранится значение any_phone |
filter[any_phone]=+79876543211 |
Выгрузить контакты по определенному email |
filter[email]=test@mail.ru |
|
| other_email | Выгрузить контакты по определенному other_email |
filter[other_email]=test@mail.ru |
| responsible_id | Выгрузить контакты по определенному ответственному | filter[responsible_id]=2 |
| org_details | Выгрузить контакты по связанным реквизитам аккаунта org_details |
filter[org_detail_id]=2 |
| segment_ids | Выгрузить контакты по определенным сегментам | filter[segment_ids]=2 |
| segment_process_status_ids | Выгрузить контакты по статусам в сегменте | filter[segment_process_status_ids]=2 |
| created_at_gte | Выгрузить контакты созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить контакты созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить контакты обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить контакты обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| birthdate_gte | Выгрузить контакты с датой рождения после указанной даты | filter[birthdate_gte]=1992.12.22 |
| birthdate_lte | Выгрузить контакты с датой рождения до указанной даты | filter[birthdate_lte]=1992.12.22 |
| table_state_id | Выгрузить контакты по заданному табличному фильтру | filter[table_state_id]=2 |
| q | Выгрузить контакты по поисковому запросу | filter[q]=some-query |
| archived | Выгрузить контакты в архиве | filter[archived]=2 |
| discarded | Выгрузить контакты в корзине | filter[discarded]=2 |
| actual | Выгрузить актуальные контакты | filter[actual]=2 |
| discarded_at_null | Выгрузить контакты не в корзине | filter[discarded_at_null]=true |
| birthdate_null | Выгрузить контакты без дня рождения | filter[birthdate_null]=true |
| position | Выгрузить контакты по определенному значению в position |
filter[position]=CTO |
| general_phone | Выгрузить контакты по определенному значению в general_phone |
filter[general_phone]=+79876543211 |
| work_phone | Выгрузить контакты по определенному значению в work_phone |
filter[work_phone]=+79876543211 |
| fax | Выгрузить контакты по определенному значению в fax |
filter[fax]=+79876543211 |
| website | Выгрузить контакты по определенному значению в website |
filter[website]=synergycrm.ru |
| work_address | Выгрузить контакты по определенному значению в work_address |
filter[work_address]=value |
| work_country | Выгрузить контакты по определенному значению в work_country |
filter[work_country]=Russia |
| work_region | Выгрузить контакты по определенному значению в work_region |
filter[work_region]=Moscow |
| work_city | Выгрузить контакты по определенному значению в work_city |
filter[work_city]=Moscow |
| work_zipcode | Выгрузить контакты по определенному значению в work_zipcode |
filter[work_zipcode]=012345 |
| work_street | Выгрузить контакты по определенному значению в work_street |
filter[work_street]=Mira |
| work_building | Выгрузить контакты по определенному значению в work_building |
filter[work_building]=2 |
| work_housing | Выгрузить контакты по определенному значению в work_housing |
filter[work_housing]=2 |
| work_apartment | Выгрузить контакты по определенному значению в work_apartment |
filter[work_apartment]=2 |
| home_address | Выгрузить контакты по определенному значению в home_address |
filter[home_address]=value |
| home_country | Выгрузить контакты по определенному значению в home_country |
filter[home_country]=Russia |
| home_region | Выгрузить контакты по определенному значению в home_region |
filter[home_region]=Moscow |
| home_city | Выгрузить контакты по определенному значению в home_city |
filter[home_city]=Moscow |
| home_zipcode | Выгрузить контакты по определенному значению в home_zipcode |
filter[home_zipcode]=012345 |
| home_street | Выгрузить контакты по определенному значению в home_street |
filter[home_street]=Mira |
| home_building | Выгрузить контакты по определенному значению в home_building |
filter[home_building]=2 |
| home_housing | Выгрузить контакты по определенному значению в home_housing |
filter[home_housing]=2 |
| home_apartment | Выгрузить контакты по определенному значению в home_apartment |
filter[home_apartment]=2 |
| description | Выгрузить контакты по определенному значению в description |
filter[description]=value |
| note | Выгрузить контакты по определенному значению в note |
filter[note]=value |
Компании
Загрузка компании с предустановленным источником и ответственным
curl "https://1c-connector.app.synergycrm.ru/api/v1/companies" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
}
}
}
EOF
| JSON API type | companies |
| URL | /api/v1/companies |
| Список | GET /api/v1/companies |
| Чтение | GET /api/v1/companies/{id} |
| Создание | POST /api/v1/companies |
| Редактирование | PATCH /api/v1/companies/{id} |
| Удаление | DELETE /api/v1/companies/{id} |
Атрибуты
Атрибуты компании
{
"data": {
"type":"companies",
"id":"2",
"attributes":{
"created_at": "2022-02-22T12:02:22.222+03:00",
"updated_at": "2022-02-22T12:02:22.222+03:00",
"name": "ООО Синергия Софт",
"general_phone": "79876543211",
"work_phone": "79876543211",
"mobile_phone": "79876543211",
"other_phone": "79876543211",
"fax": "79876543211",
"country": "Россия",
"city": "Иннополис",
"region": "Республика Татарстан",
"address": "Университетская ул, д. 7, помещ. 503",
"zip_code": "012345",
"email": "email@mail.ru",
"other_email": "mail@gmail.com",
"website": "www.site.com",
"juristic_country": "Россия",
"juristic_region": "Республика Татарстан",
"juristic_city": "Иннополис",
"juristic_zip_code": "012345",
"juristic_street": "Университетская",
"juristic_house": "1",
"juristic_build": "1",
"juristic_office": "1",
"actual_country": "Россия",
"actual_region": "Республика Татарстан",
"actual_city": "Иннополис",
"actual_zip_code": "012345",
"actual_street": "ул. Университетская",
"actual_house": "22а",
"actual_build": "2",
"actual_office": "123",
"mailing_country": "Россия",
"mailing_region": "Республика Татарстан",
"mailing_city": "Иннополис",
"mailing_zip_code": "012345",
"mailing_street": "Университетская",
"mailing_house": "1",
"mailing_build": "1",
"mailing_office": "1",
"inn": "0101010101",
"description": "Разработка компьютерного программного обеспечения",
"full_name": "Общество с ограниченной ответственностью Синергия Софт",
"short_name": "ООО Синергия Софт",
"ogrn": "0101010101010",
"kpp": "010101010",
"okved": "62.01",
"manager_name": "Сидоров В.В.",
"manager_position": "Генеральный директор",
"lawfulness_base": "Свидетельство о регистрации юридического лица",
"accountant": "Иванов И.И.",
"customs": {
"custom_98": "",
"custom_9": ""
},
}
}
}
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание | |
|---|---|---|---|---|---|
| name* | string |
ООО Синергия Софт | да | Название | |
| description | string |
Разработка компьютерного программного обеспечения | да | Описание | |
| general_phone | string |
+79876543211 |
да | Телефон (основной) | |
| mobile_phone | string |
+79876543211 |
да | Телефон (мобильный) | |
| work_phone | string |
+79876543211 |
да | Телефон (рабочий) | |
| work_phone_postfix | string |
200 |
да | Добавочный (рабочий) | |
| other_phone | string |
+79876543211 |
да | Телефон (дополнительный) | |
| other_phone_postfix | string |
200 |
да | Добавочный (дополнительный) | |
| fax | string |
+79876543211 |
да | Факс | |
string |
help@synergycrm.ru | да | E-mail адрес | ||
| other-email | string |
help@synergycrm.ru | да | E-mail адрес (дополнительный) | |
| website | string |
synergycrm.ru | да | Сайт | |
| country | string |
РФ | да | Страна | |
| region | string |
Республика Татарстан | да | Регион | |
| city | string |
Иннополис | да | Город | |
| address | string |
Университетская ул, д. 7, помещ. 503 | да | Адрес | |
| zip_code | string |
012345 | да | Индекс | |
| custom | hash |
{"custom-1":'custom value'} |
да | Свои поля | |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания | |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления | |
| archived_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации | |
| discarded_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата перемещения в корзину | |
| previous_responsible_id | integer |
100 |
нет | Предыдущий ответственный |
* Обязательные поля
Фактический адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| actual_country | string |
Россия | да | Страна |
| actual_region | string |
Республика Татарстан | да | Область, регион, край |
| actual_city | string |
Иннополис | да | Город, населенный пункт |
| actual_zip_code | string |
012345 |
да | Индекс |
| actual_street | string |
ул. Университетская | да | Улица, проспект |
| actual_house | string |
22а |
да | Номер дома |
| actual_build | string |
2 |
да | Корпус |
| actual_office | string |
123 |
да | Номер офиса |
Юридический адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| juristic_country | string |
Россия | да | Страна |
| juristic_region | string |
Республика Татарстан | да | Область, регион, край |
| juristic_city | string |
Иннополис | да | Город, населенный пункт |
| juristic_zip_code | string |
012345 |
да | Индекс |
| juristic_street | string |
ул. Университетская | да | Улица, проспект |
| juristic_house | string |
22а |
да | Номер дома |
| juristic_build | string |
2 |
да | Корпус |
| juristic_office | string |
123 |
да | Номер офиса |
Почтовый адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| mailing_country | string |
Россия | да | Страна |
| mailing_region | string |
Республика Татарстан | да | Область, регион, край |
| mailing_city | string |
Иннополис | да | Город, населенный пункт |
| mailing_zip_code | string |
012345 |
да | Индекс |
| mailing_street | string |
ул. Университетская | да | Улица, проспект |
| mailing_house | string |
22а |
да | Номер дома |
| mailing_build | string |
2 |
да | Корпус |
| mailing_office | string |
123 |
да | Номер офиса |
Реквизиты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| full_name | string |
Общество с ограниченной ответственностью | да | Полное наименование |
| short_name | string |
ООО “Синергия Софт” | да | Короткое наименование |
| inn | string |
0101010101 |
да | ИНН |
| ogrn | string |
0101010101010 |
да | ОГРН |
| kpp | string |
010101010 |
да | КПП |
| okved | string |
62.01 |
да | ОКВЭД |
| director | string |
Иванов И.И. | да | Директор |
| accountant | string |
Иванов И.И. | да | Бухгалтер |
| lawfulness_base | string |
Значение | да | Правомочность |
| manager_name | string |
Сидоров В.В. | да | ФИО руководителя |
| manager_position | string |
Генеральный директор | да | Должность руководителя |
| руководителя |
UTM метки
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| utm_source | string |
yandex-direct | да | Рекламная система |
| utm_medium | string |
cpc | да | Тип трафика |
| utm_campaign | string |
cosmetic | да | Название рекламной кампании |
| utm_term | string |
shampoo | да | Ключевое слово, которое инициировало показ объявления |
| utm_content | string |
some text | да | Информация, которая помогает различать объявления, если совпадают другие параметры |
| utm_landing_page | string |
somesite.ru/path | да | Адрес посадочной страницы |
| utm_city | string |
Москва | да | Город |
Связи
Получить данные по org_details(ответственная организация по компании) через include
curl -G "http://1c-connector.app.synergycrm.ru/api/v1/companies/2?include=org-detail" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Ответственный | responsible | users |
| Создатель | user | users |
| Контакты | contacts | contacts |
| Тип | company_type | company_types |
| Сделки | deals | deals |
| Продукты | products | products |
| Спецификации | entities_products | entity_products |
| Банк. реквизиты | bank_details | company_bank_details |
| Счета | invoices | invoices |
| Ответственная организация | org_details | org_details |
Фильтры
Выгрузить список компаний с определённым рабочим номером
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/companies" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[general_phone]=+79876543211"
| Фильтр | Описание | Пример |
|---|---|---|
| inn | Выгрузить компании по определенному номеру ИНН | filter[inn]=000000000 |
| kpp | Выгрузить компании по определенному номеру КПП | filter[kpp]=000000000 |
| work_phone | Выгрузить компании по определенному work_phone |
filter[work_phone]=+79876543211 |
| general_phone | Выгрузить компании по определенному general_phone |
filter[general_phone]=+79876543211 |
| other_phone | Выгрузить компании по определенному other_phone |
filter[other_phone]=+79876543211 |
| any_phone | Выгрузить компании в которых из одном из телефонных полей хранится значение any_phone |
filter[any_phone]=+79876543211 |
Выгрузить компании по определенному email |
filter[email]=mail@test.ru |
|
| other_email | Выгрузить компании по определенному other_email |
filter[other_email]=mail@test.ru |
| responsible_id | Выгрузить компании по определенному ответственному | filter[responsible_id]=2 |
| segment_ids | Выгрузить компании по определенным сегментам | filter[segment_ids]=2 |
| segment_process_status_ids | Выгрузить компании по статусам в сегменте | filter[segment_process_status_ids]=2 |
| created_at_gte | Выгрузить компании созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить компании созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить компании обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить компании обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| table_state_id | Выгрузить компании по заданному табличному фильтру | filter[table_state_id]=2 |
| q | Выгрузить компании по поисковому запросу | filter[q]=some-query |
| org_details | Выгрузить компании по связанным реквизитам аккаунта org_details |
filter[org_detail_id]=2 |
| archived | Выгрузить компании в архиве | filter[archived]=2 |
| discarded | Выгрузить компании в корзине | filter[discarded]=2 |
| actual | Выгрузить актуальные компании | filter[actual]=2 |
| discarded_at_null | Выгрузить компании не в корзине | filter[discarded_at_null]=true |
| name | Выгрузить компании по определенному значению в name |
filter[name]=ООО Ромашка |
| mobile_phone | Выгрузить компании по определенному значению в mobile_phone |
filter[mobile_phone]=+79876543211 |
| fax | Выгрузить компании по определенному значению в fax |
filter[fax]=+79876543211 |
| country | Выгрузить компании по определенному значению в country |
filter[country]=Russia |
| city | Выгрузить компании по определенному значению в city |
filter[city]=Moscow |
| region | Выгрузить компании по определенному значению в region |
filter[region]=Moscow |
| address | Выгрузить компании по определенному значению в address |
filter[address]=Университетская ул, д. 7, помещ. 503 |
| zip_code | Выгрузить компании по определенному значению в zip_code |
filter[zip_code]=012345 |
| website | Выгрузить компании по определенному значению в website |
filter[website]=synergycrm.ru |
| juristic_country | Выгрузить компании по определенному значению в juristic_country |
filter[juristic_country]=Russia |
| juristic_region | Выгрузить компании по определенному значению в juristic_region |
filter[juristic_region]=Moscow |
| juristic_city | Выгрузить компании по определенному значению в juristic_city |
filter[juristic_city]=Moscow |
| juristic_zip_code | Выгрузить компании по определенному значению в juristic_zip_code |
filter[juristic_zip_code]=012345 |
| juristi_street | Выгрузить компании по определенному значению в juristi_street |
filter[juristi_street]=Mira |
| juristic_house | Выгрузить компании по определенному значению в juristic_house |
filter[juristic_house]=2 |
| juristic_build | Выгрузить компании по определенному значению в juristic_build |
filter[juristic_build]=2 |
| juristic_office | Выгрузить компании по определенному значению в juristic_office |
filter[juristic_office]=2 |
| actual_country | Выгрузить компании по определенному значению в actual_country |
filter[actual_country]=Russia |
| actual_region | Выгрузить компании по определенному значению в actual_region |
filter[actual_region]=Moscow |
| actual_city | Выгрузить компании по определенному значению в actual_city |
filter[actual_city]=Moscow |
| actual_zip_code | Выгрузить компании по определенному значению в actual_zip_code |
filter[actual_zip_code]=012345 |
| actual_street | Выгрузить компании по определенному значению в actual_street |
filter[actual_street]=Mira |
| actual_house | Выгрузить компании по определенному значению в actual_house |
filter[actual_house]=2 |
| actual_build | Выгрузить компании по определенному значению в actual_build |
filter[actual_build]=2 |
| actual_office | Выгрузить компании по определенному значению в actual_office |
filter[actual_office]=2 |
| mailing_country | Выгрузить компании по определенному значению в mailing_country |
filter[mailing_country]=Russia |
| mailing_region | Выгрузить компании по определенному значению в mailing_region |
filter[mailing_region]=Moscow |
| mailing_city | Выгрузить компании по определенному значению в mailing_city |
filter[mailing_city]=Moscow |
| mailing_zip_code | Выгрузить компании по определенному значению в mailing_zip_code |
filter[mailing_zip_code]=012345 |
| mailing_street | Выгрузить компании по определенному значению в mailing_street |
filter[mailing_street]=Mira |
| mailing_house | Выгрузить компании по определенному значению в mailing_house |
filter[mailing_house]=2 |
| mailing_build | Выгрузить компании по определенному значению в mailing_build |
filter[mailing_build]=2 |
| mailing_office | Выгрузить компании по определенному значению в mailing_office |
filter[mailing_office]=2 |
| full_name | Выгрузить компании по определенному значению в full_name |
filter[full_name]=Общество с ограниченной ответственностью Ромашка |
| short_name | Выгрузить компании по определенному значению в short_name |
filter[short_name]=ООО Ромашка |
| ogrn | Выгрузить компании по определенному значению в ogrn |
filter[ogrn]=0101010101010 |
| kpp | Выгрузить компании по определенному значению в kpp |
filter[kpp]=010101010 |
| okved | Выгрузить компании по определенному значению в okved |
filter[okved]=62.01 |
| manager_name | Выгрузить компании по определенному значению в manager_name |
filter[manager_name]=Ivan |
| manager_position | Выгрузить компании по определенному значению в manager_position |
filter[manager_position]=CTO |
| lawfulness_base | Выгрузить компании по определенному значению в lawfulness_base |
filter[lawfulness_base]=value |
| initial_balance | Выгрузить компании по определенному значению в initial_balance |
filter[initial_balance]=10000 |
| archived_at | Выгрузить компании по определенному значению в archived_at |
filter[archived_at]=2022.02.22 12:00 |
| discarded_at | Выгрузить компании по определенному значению в discarded_at |
filter[discarded_at]=2022.02.22 12:00 |
| previous_responsible_id | Выгрузить компании по определенному значению в previous_responsible_id |
filter[previous_responsible_id]=2 |
Банковские реквизиты
Загрузка банковских реквизитов для компании
curl "https://1c-connector.app.synergycrm.ru/api/v1/company-bank-details" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"company_bank_details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
}
EOF
| JSON API type | company-bank-details |
| URL | /api/v1/company-bank-details |
| Список | GET /api/v1/company-bank-details |
| Чтение | GET /api/v1/company-bank-details/{id} |
| Создание | POST /api/v1/company-bank-details |
| Редактирование | PATCH /api/v1/company-bank-details/{id} |
| Удаление | DELETE /api/v1/company-bank-details/{id} |
Атрибуты
Атрибуты банковских реквизитов компании
{
"data":{
"id": "2",
"type": "company_bank_details",
"attributes":{
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"name": "МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ",
"bank_name": "ПАО СБЕРБАНК",
"bik": "000000000",
"corr_number": "00000000000000000000",
"number": "00000000000000000000",
"is_default": true,
"active": true
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ | да | Название набора реквизитов |
| bank_name | string |
ПАО СБЕРБАНК | да | Имя банка |
| bik | string |
010101010 | да | БИК банка |
| corr_number | string |
01010101010101010101 | да | Корр. счет |
| number | string |
01010101010101010101 | да | Номер счета |
| is_default | boolean |
true |
да | Основные реквизиты? |
| active | boolean |
true |
да | Активность счета |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры банковских реквизитов
Выгрузить список банковских реквизитов, созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/company-bank-details" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить банковские реквизиты созданные в системе после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить банковские реквизиты созданные в системе до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить банковские реквизиты обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить банковские реквизиты обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| number | Выгрузить банковские реквизиты по номеру счета | filter[number]=01010101010101010101 |
| bik | Выгрузить банковские реквизиты по БИК банка | filter[bik]=010101010 |
| bank_name | Выгрузить банковские реквизиты названию банка | filter[bank_name]=ПАО Сбербанк |
| corr_number | Выгрузить банковские реквизиты по названию реквизитов | filter[name]=ПАО Сбербанк |
Связи
| Название | Связь | JSON API type |
|---|---|---|
| Компания | company | companies |
Сделки
Загрузка сделки
curl "https://1c-connector.app.synergycrm.ru/api/v1/deals" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned_at":"2022-02-22"
}
}
}
EOF
| JSON API type | deals |
| URL | /api/v1/deals |
| Список | GET /api/v1/deals |
| Чтение | GET /api/v1/deals/{id} |
| Создание | POST /api/v1/deals |
| Редактирование | PATCH /api/v1/deals/{id} |
| Удаление | DELETE /api/v1/deals/{id} |
Атрибуты
Атрибуты сделки
{
"data": {
"type":"deals",
"id":"2",
"attributes":{
"name":"Моя сделка",
"description":"Мое описание сделки",
"amount":2200000.0,
"number":22,
"planned_at":"2022-02-22",
"finished_at":"2022-02-22",
"customs":{
"custom_1":"Значение",
"custom_943":"2022-02-22T12:02:22.222+03:00"
},
"created_at":"2022-02-22T12:02:22.222+03:00",
"updated_at":"2022-02-22T12:02:22.222+03:00",
}
}
}
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name | string |
Моя сделка | да | Имя сделки |
| description | string |
Описание сделки | да | Подробное описание сделки |
| loss_comment | string |
Причина поражения | да | Причина поражения в свободной форме |
| amount | decimal |
222.0 | да | Сумма сделки |
| cost | decimal |
222.0 | да | Себестомость сделки |
| profit | decimal |
222.0 | нет | Прибыль сделки |
| number | integer |
22 | да | Номер сделки |
| planned_at | date |
2022-02-22 |
да | Планируемая дата закрытия |
| finished_at | date |
2022-02-22 |
да | Фактическая дата закрытия |
| customs | hash |
{"custom-1":'custom value'} |
да | Свои поля |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
| archived_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации |
| previous_responsible_id | integer |
100 |
нет | Предыдущий ответственный |
UTM метки
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| utm_source | string |
yandex-direct | да | Рекламная система |
| utm_medium | string |
cpc | да | Тип трафика |
| utm_campaign | string |
cosmetic | да | Название рекламной кампании |
| utm_term | string |
shampoo | да | Ключевое слово, которое инициировало показ объявления |
| utm_content | string |
some text | да | Информация, которая помогает различать объявления, если совпадают другие параметры |
| utm_landing-page | string |
somesite.ru/path | да | Адрес посадочной страницы |
| utm_city | string |
Москва | да | Город |
Связи
Получить данные по org_details(ответственная организация по сделке) через include
curl -G "http://1c-connector.app.synergycrm.ru/api/v1/deals/2?include=org-detail" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Ответственный | responsible | users |
| Создатель | user | users |
| Компания | company | companies |
| Контакт | contact | contacts |
| Этап | stage | deal_stages |
| Воронка | stage_category | deal_stage_categories |
| Продукты | products | products |
| Сделки | deals | deals |
| Спецификации | entities_products | entity_products |
| Файлы | documents | documents |
| Счета | invoices | invoices |
| Ответственная организация | org_details | org_details |
Обновление спецификаций
Обновление набора спецификаций продуктов для сделки
curl "https://1c-connector.app.synergycrm.ru/api/v1/deals/2" \
-X PATCH \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deals",
"id":"2",
"relationships":{
"entity_products_list":{
"data":[{
"product_id":"1",
"quantity":"5",
"amount":"100"
},
{
"product_id":"2",
"quantity":"7",
"amount":"200"
}
]
}
}
}
}
EOF
Обновить/создать весь список спецификаций сделки возможно через API метод PATCH. Данные спецификаций передаются в поле “entity_products_list” блока “relationships” и представляют собой массив параметров: { product_id, quantity, amount }.
Выполнение запроса заключается в удалении существующих спецификаций в сделке и создании новых на основе данных, полученных в запросе. При возникновении какой-либо ошибки во время выполнения запроса операция прекращается и ошибка возвращается в 1C. Вся опреация не откатывается. Запрос необходимо повторить через некоторое время для корректности данных.
Фильтры
Выгрузить список сделок созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/deals" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| responsible_id | Выгрузить сделки по определенному ответственному | filter[responsible_id]=2 |
| deal_status_id | Выгрузить сделки по статусу сделки | filter[deal_status_id]=2 |
| deal_stage_id | Выгрузить сделки по этапу сделки | filter[deal_stage_id]=2 |
| deal_stage_category_id | Выгрузить сделки по воронке | filter[deal_stage_category_id]=2 |
| related_contacts_ids | Выгрузить сделки по определенным контактам | filter[related_contacts_ids]=2 |
| related_companies_ids | Выгрузить сделки по определенным компаниям | filter[related_companies_ids]=2 |
| segment_ids | Выгрузить сделки по определенным сегментам | filter[segment_ids]=2 |
| segment_process_status_ids | Выгрузить сделки по статусам в сегменте | filter[segment_process_status_ids]=2 |
| created_at_gte | Выгрузить сделки созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить сделки созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить сделки обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить сделки обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| table_state_id | Выгрузить сделки по заданному табличному фильтру | filter[table_state_id]=2 |
| q | Выгрузить сделки по поисковому запросу | filter[q]=some_query |
| archived | Выгрузить сделки в архиве | filter[archived]=2 |
| discarded | Выгрузить сделки в корзине | filter[discarded]=2 |
| actual | Выгрузить актуальные сделки | filter[actual]=2 |
| org_details | Выгрузить сделки по связанным реквизитам аккаунта org_details |
filter[org_detail_id]=2 |
| name | Выгрузить сделки не по названию | filter[name]=value |
| description | Выгрузить сделки по описанию | filter[description]=value |
| note | Выгрузить сделки по заметке | filter[note]=value |
| loss_comment | Выгрузить сделки по причине поражения | filter[loss_comment]=value |
| amount | Выгрузить сделки по сумме | filter[amount]=222.0 |
| number | Выгрузить сделки по номеру | filter[number]=2 |
| finished_at | Выгрузить сделки по дате окончания | filter[finished_at]=2022.02.22 12:00 |
| planned_at | Выгрузить сделки по плановой дате | filter[planned_at]=2022.02.22 12:00 |
| archived_at | Выгрузить сделки по дате архивации | filter[archived_at]=2022.02.22 12:00 |
| cost | Выгрузить сделки по себестоимости | filter[cost]=222.0 |
| profit | Выгрузить сделки по прибыли | filter[profit]=222.0 |
| discarded_at | Выгрузить сделки по дате удаления | filter[discarded_at]=2022.02.22 12:00 |
| discarded_at_null | Выгрузить сделки не в корзине | filter[discarded_at_null]=true |
Воронки
Создание новой категории этапов сделки
curl "https://1c-connector.app.synergycrm.ru/api/v1/deal-stage-categories" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal_stage_categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
}
EOF
| JSON API type | deal-stage-categories |
| URL | /api/v1/deal-stage-categories |
| Список | GET /api/v1/deal-stage-categories |
| Чтение | GET /api/v1/deal-stage-categories/{id} |
| Создание | POST /api/v1/deal-stage-categories |
| Редактирование | PATCH /api/v1/deal-stage-categories/{id} |
| Удаление | DELETE /api/v1/deal-stage-categories/{id} |
Атрибуты
Атрибуты воронки сделок
{
"data": {
"type":"deal_stage_categories",
"id":"2",
"attributes":{
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"name": "Воронка сделок",
"calculation_method": "by_billings",
"is_default": true,
"win_by_diaries": false
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Воронка сделок | да | Название воронки |
| amount_calc_method* | string |
invoices | да | Способ расчета суммы сделки |
| cost_calc_method* | string |
payments | да | Способ расчета себестоимости сделки |
| amount_calc_field | string |
custom_1 | да | Поле формулы при расчете суммы сделки по формуле |
| cost_calc_field | string |
custom_2 | да | Поле формулы при расчете себестоимости сделки по формуле |
| is_default | boolean |
true | да | По-умолчанию |
| win_by_diaries | boolean |
false | да | Cчитать сделку выиграной, eсли все задачи выполнены |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Ограничения по значениям
| Аттрибут | Варианты |
|---|---|
| amount_calc_method | manually, invoices, products, payments, formula |
| cost_calc_method | manually, products, payments, formula |
Фильтры
Выгрузить список категорий этапов сделок созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/deal-stage-categories" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить воронки сделок, созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить воронки сделок, созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить воронки сделок, обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить воронки сделок, обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить воронки сделок по названию | filter[name]=funnel |
| amount_calc_method | Выгрузить воронки сделок по cпособу расчета суммы сделки | filter[amount_calc_method]=invoices |
| cost_calc_method | Выгрузить воронки сделок по способу расчета себестоимости сделки | filter[cost_calc_method]=payments |
| amount_calc_field | Выгрузить воронки сделок по полю расчета суммы | filter[amount_calc_field]=custom_2 |
| cost_calc_field | Выгрузить воронки сделок по полю расчета себестоимости | filter[cost_calc_field]=custom_2 |
| is_default | Выгрузить воронки сделок по умолчанию | filter[is_default]=true |
| win_by_diaries | Выгрузить воронки сделок по триггеру | filter[win_by_diaries]=false |
Этапы
Создание нового этапа сделки
curl "https://1c-connector.app.synergycrm.ru/api/v1/deal-stages" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal_stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal_stage_category": {
"data": {
"type": "deal_stage_categories",
"id": 2
}
}
}
}
}
EOF
| JSON API type | deal-stages |
| URL | /api/v1/deal-stages |
| Список | GET /api/v1/deal-stages |
| Чтение | GET /api/v1/deal-stages/{id} |
| Создание | POST /api/v1/deal-stages |
| Редактирование | PATCH /api/v1/deal-stages/{id} |
| Удаление | DELETE /api/v1/deal-stages/{id} |
Атрибуты
Атрибуты этапа сделки
{
"data": {
"type":"deal_stages",
"id":"2",
"attributes":{
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"name": "Мой этап сделки",
"description": "Описание",
"duration": "2000",
"kind": "opened",
"color": "#e0e0e0",
"next_if_items_done": false
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Мой этап сделки | да | Название воронки |
| duration | integer |
20000 | да | Длительность этапа |
| next_if_items_done | boolean |
false | да | Переходить на следующий этап, если все задачи выполнены |
| description | boolean |
true | да | Описание |
| color | string |
#ee66aa | да | Цвет этапа |
| kind | string |
opened, won, lost | да | Тип этапа по умолчанию, могут быть только открыто opened, выиграна won и проиграна lost |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Выгрузить список этапов сделок созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/deal-stages" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить этапы сделок, созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить этапы сделок, созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить этапы сделок, обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить этапы сделок, обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить этапы сделок по названию | filter[name]=Этап |
| duration | Выгрузить этапы сделок по длительности | filter[duration]=20000 |
| next_if_items_done | Выгрузить этапы сделок по триггеру | filter[next_if_items_done]=true |
| description | Выгрузить этапы сделок по описанию | filter[description]=Описание |
Продукты
Загрузить продукт
curl "https://1c-connector.app.synergycrm.ru/api/v1/products" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"products",
"attributes":{
"name":"Продукт по API",
"description":"Продукт созданный при помощи API",
"purchase_price":20000.0
}
}
}
EOF
| JSON API type | products |
| URL | /api/v1/products |
| Список | GET /api/v1/products |
| Чтение | GET /api/v1/products/{id} |
| Создание | POST /api/v1/products |
| Редактирование | PATCH /api/v1/products/{id} |
| Удаление | DELETE /api/v1/products/{id} |
Атрибуты
Атрибуты продукта
{
"data": {
"type":"products",
"id": 2,
"attributes":{
"name": "Мое название продукта",
"description": "Мое описание продукта",
"cost_price": 200.0,
"selling_price": 200.0,
"purchase_price": 20.0,
"code": "10110",
"number": 2,
"vendor_code": "1BM40",
"is_service": false,
"cover_image": "https://example.com/path/to/file.jpg",
"customs":{
"custom_943":"2022-02-22T12:02:22.222+03:00"
},
"created_at":"2022-02-22T12:02:22.222+03:00",
"updated_at":"2022-02-22T12:02:22.222+03:00"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Мое название продукта | да | Название товара |
| description | string |
Мое описание продукта | да | Описание товара |
| code | string |
11030 | да | Код |
| vendor_code | string |
1BM40 | да | Артикул |
| is_service | boolean |
true |
да | Услуга |
| purchase_price | decimal |
20.0 | да | Цена закупки |
| cost_price | decimal |
200.0 | нет | Себестоимость |
| selling_price | decimal |
200.0 | да | Цена продажи |
| customs | hash |
{"custom_1":'custom value'} |
да | Свои поля |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
| discarded_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата перемещения в корзину |
| cover_image | string |
https://example.com/path/to/file.jpg |
нет | Обложка.** |
| volume | decimal |
2.0 | да | Объём |
| weight | decimal |
20.0 | да | Вес, кг |
| ccd | string |
11111111 / 111111 / 1111111 |
да | ГТД |
| country | string |
Россия | да | Страна |
| vat | decimal |
20.0 | да | НДС |
| number | bigint |
2 | да | Номер продукта |
* Обязательные поля ** Обложка может быть установлена только из тех документов, которые уже связаны с продуктом и являются изображением.
Связи
Получить данные по org_details(ответственная организация по продукту) через include
curl -G "http://1c-connector.app.synergycrm.ru/api/v1/products/2?include=org-detail" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Категория | category | product_categories |
| Скидка | discount | product_discounts |
| Склад | store | stores |
| Сделки | deals | deals |
| Изображения | images | documents |
| Обложка | cover | documents |
| Документы | documents | documents |
| Ответственная организация | org_details | org_details |
Фильтры
Выгрузить список продуктов по определённому контакту
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/products/?filter[contacts]=2" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
| Фильтр | Описание | Пример | |
|---|---|---|---|
| contacts | Выгрузить продукты по определенному contacts |
filter[contacts]=2 |
|
| companies | Выгрузить продукты по определенному companies |
filter[companies]=2 |
|
| deals | Выгрузить продукты по определенному deals |
filter[deals]=2 |
|
| record_objects | Выгрузить продукты по определенному record_objects |
filter[record_objects]=2 |
|
| created_at_gte | Выгрузить продукты созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
|
| created_at_lte | Выгрузить продукты созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
|
| updated_at_gte | Выгрузить продукты обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
|
| updated_at_lte | Выгрузить продукты обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
|
| code | Выгрузить продукты по определенному code |
filter[code]=Q123 |
|
| q | Выгрузить продукты по поисковому запросу | filter[q]=some_query |
|
| archived | Выгрузить продукты в архиве | filter[archived]=2 |
|
| discarded | Выгрузить продукты в корзине | filter[discarded]=2 |
|
| actual | Выгрузить актуальные продукты | filter[actual]=2 |
|
| discarded_at_null | Выгрузить продукты не в корзине | filter[discarded_at_null]=true |
|
| org_details | Выгрузить продукты по связанным реквизитам аккаунта org_details |
filter[org_detail_id]=2 |
|
| name | Выгрузить продукты по названию | filter[name]=value |
|
| description | Выгрузить продукты по описанию | filter[description]=value |
|
| cost_price | Выгрузить продукты по себестоимости | filter[cost_price]=222 |
|
| purchase_price | Выгрузить продукты по цене закупки | filter[purchase-price]=222 |
|
| selling_price | Выгрузить продукты по цене продажи | filter[selling-price]=222 |
|
| vendor_code | Выгрузить продукты по артикулу | filter[vendor_code]=1BM40 |
|
| is_service | Выгрузить продукт по тому, является он продуктом или услугой | filter[is_service]=true filter[is_service]=false |
|
| customs | Выгрузить продукты по значению в кастомном поле | filter[custom_1]=value |
|
| volume | Выгрузить продукты по объему | filter[volume]=2.0 |
|
| weight | Выгрузить продукты по весу | filter[weight]=20.0 |
|
| ccd | Выгрузить продукты по ГТД | filter[ccd]=11111 |
|
| country | Выгрузить продукты по стране | filter[country]=Россия |
|
| country_code | Выгрузить продукты по коду страны | filter[country_code]= |
|
| vat | Выгрузить продукты по ставке НДС | filter[vat]=20.0 |
|
| number | Выгрузить продукты по номеру | filter[number]=2 |
|
| discarded_at | Выгрузить продукты по дате удаления | filter[discarded_at]=2022.02.22 12:00 |
|
| archived_at | Выгрузить продукты по дате архивации | filter[archived_at]=2022.02.22 12:00 |
Категории продуктов
Загрузка новой категории продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/product-categories" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"product_categories",
"attributes":{
"name":"Категория в API"
}
}
}
EOF
| JSON API type | product-categories |
| URL | /api/v1/product-categories |
| Список | GET /api/v1/product-categories |
| Чтение | GET /api/v1/product-categories/{id} |
| Создание | POST /api/v1/product-categories |
| Редактирование | PATCH /api/v1/product-categories/{id} |
| Удаление | DELETE /api/v1/product-categories/{id} |
Атрибуты
Атрибуты категории продукта
{
"data": {
"type":"product_categories",
"id":"2",
"attributes":{
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"name": "Моя категория продуктов"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Моя категория продуктов | да | Название категории продукта |
| ancestry | string |
112,12 |
нет | Список родительских категорий |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Вложенные категории продуктов
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Родитель | parent | product_categories |
| Дети | children | product_categories |
| Дерево | subtree | product_categories |
Фильтры
Выгрузить список категорий продуктов созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/product-categories" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить категории созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить категории созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить категории обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить категории обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить категории продуктов по названию | filter[name]=название |
| ancestry | Выгрузить категории продуктов по родительской категории | filter[ancestry]=2 |
Скидки
Загрузка новой скидки
curl "https://1c-connector.app.synergycrm.ru/api/v1/product-discounts" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"product_discounts",
"attributes":{
"name":"Скидка в API",
"size":20.0
}
}
}
EOF
| JSON API type | product-discounts |
| URL | /api/v1/product-discounts |
| Список | GET /api/v1/product-discounts |
| Чтение | GET /api/v1/product-discounts/{id} |
| Создание | POST /api/v1/product-discounts |
| Редактирование | PATCH /api/v1/product-discounts/{id} |
| Удаление | DELETE /api/v1/product-discounts/{id} |
Атрибуты
Атрибуты скидки продукта
{
"data": {
"type":"product_discounts",
"id":"2",
"attributes":{
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"name": "Моя скидка",
"size": "20.0"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Моя скидка | да | Название скидки |
| size* | float |
20.0 | да | Размер скидки |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Связи
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Тип контакта | contact_type | contact_types |
Фильтры
Выгрузить список скидок созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/product-discounts" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить скидки созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить скидки созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить скидки обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить скидки обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить скидки по названию | filter[name]=скидка |
| size | Выгрузить скидки по размеру | filter[size]=10.0 |
Типы продуктов
Загрузка типа продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/product-types" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"product_types",
"attributes":{
"name":"Тип продукта в API"
}
}
}
EOF
| JSON API type | product-types |
| URL | /api/v1/product-types |
| Список | GET /api/v1/product-types |
| Чтение | GET /api/v1/product-types/{id} |
| Создание | POST /api/v1/product-types |
| Редактирование | PATCH /api/v1/product-types/{id} |
| Удаление | DELETE /api/v1/product-types/{id} |
Атрибуты
Атрибуты типа продукта
{
"data": {
"type":"product_types",
"id":"2",
"attributes":{
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"name": "Мой тип продукта"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Мой тип продукта | да | Название типа продукта |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Выгрузить список единиц измерений продуктов созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/product-types" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить типы продуктов, созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить типы продуктов, созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить типы продуктов, обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить типы продуктов, обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить типы продуктов по названию | filter[name]=product |
Вложенные продукты
Загрузка продукта в сделку
curl "https://1c-connector.app.synergycrm.ru/api/v1/entity-products" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"entity_products",
"attributes":{
"quantity": 2
},
"relationships":{
"entity":{
"data":{
"type":"deals",
"id": 2
}
},
"product":{
"data":{
"type":"products",
"id": 2
}
}
}
}
}
EOF
Загрузка нескольких вложенных продуктов по связи с продуктами у сделки. Из указанных продуктов будут созданы соответствующие вложенные.
curl "https://1c-connector.app.synergycrm.ru/api/v1/deal/2/relationships/products" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":[{
"type":"products",
"id":"2"
}, {
"type":"products",
"id":"2"
}]
}
EOF
Изменение количества продуктов в сделке
curl "https://1c-connector.app.synergycrm.ru/api/v1/entity-products/1/" \
-X PATCH \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"entity_products",
"attributes":{
"quantity":2
}
}
}
EOF
| JSON API type | entity-products |
| URL | /api/v1/entity-products |
| Список | GET /api/v1/entity-products |
| Чтение | GET /api/v1/entity-products/{id} |
| Создание | POST /api/v1/entity-products |
| Редактирование | PATCH /api/v1/entity-products/{id} |
| Удаление | DELETE /api/v1/entity-products/{id} |
Связи
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Единица измерения | unit | product_units |
| Объект | entity | [deals](#deals), [orders](#orders), [contacts](#contacts), [companies](#companies) |
| Продукт | product | products |
Атрибуты
Атрибуты спецификаций
{
"data": {
"type":"entity_products",
"id":"2",
"attributes":{
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"name": "Название вложенного продукта",
"description": "Описание",
"quantity": 2,
"purchase_price": "1000.0",
"total_amount": "2000.0"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name | string |
Мой продукт | нет | Название продукта |
| description | string |
Описание моего продукта | да | Описание продукта |
| quantity | integer |
2 | да | Количество |
| purchase_price | decimal |
200.0 | да | Цена закупочная за один продукт |
| selling_price | decimal |
2000.0 | да | Цена продажи за один продукт |
| cost_price | decimal |
1800.0 | да | Прибыль за один продукт |
| total_amount | decimal |
4000.0 | нет | Конечная цена |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
Фильтры
Выгрузить список вложенных продуктов по определённой сделке
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/entity-products/?filter[entity_id]=2&filter[entity_type]=deals" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
| Фильтр | Описание | Пример |
|---|---|---|
| entity_id | Выгрузить спецификации по определенному entity_id |
filter[entity_id]=2 |
| entity_type | Выгрузить спецификации по определенному entity_type. Допустимые значения: contacts, deals, orders, companies |
filter[entity_type]=contacts |
| created_at_gte | Выгрузить спецификации созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить спецификации созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить спецификации обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить спецификации обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| archived | Выгрузить спецификации в архиве | filter[archived]=2 |
| discarded | Выгрузить спецификации в корзине | filter[discarded]=2 |
| actual | Выгрузить актуальные спецификации | filter[actual]=2 |
| name | Выгрузить вложденные продукты по названию | filter[name]=value |
| description | Выгрузить вложденные продукты по описанию | filter[description]=value |
| cost_price | Выгрузить вложденные продукты по себестоимости | filter[cost_price]=222 |
| purchase_price | Выгрузить вложденные продукты по цене закупки | filter[purchase-price]=222 |
| selling_price | Выгрузить вложденные продукты по цене продажи | filter[selling-price]=222 |
| vendor_code | Выгрузить вложденные продукты по артикулу | filter[vendor_code]=1BM40 |
| is_service | Выгрузить вложденные продукт по тому, является он продуктом или услугой | filter[is_service]=true filter[is_service]=false |
| customs | Выгрузить вложденные продукты по значению в кастомном поле | filter[custom_1]=value |
| volume | Выгрузить вложденные продукты по объему | filter[volume]=2.0 |
| weight | Выгрузить вложденные продукты по весу | filter[weight]=20.0 |
| ccd | Выгрузить вложденные продукты по ГТД | filter[ccd]=11111 |
| country | Выгрузить вложденные продукты по стране | filter[country]=Россия |
| country_code | Выгрузить вложденные продукты по коду страны | filter[country_code]= |
| vat | Выгрузить вложденные продукты по ставке НДС | filter[vat]=20.0 |
| number | Выгрузить вложденные продукты по номеру | filter[number]=2 |
| quantity | Выгрузить вложденные продукты по количеству | filter[quantity]=2 |
| total_amount | Выгрузить вложденные продукты по конечной цене | filter[total_amount]=2000.0 |
Счета и платежи
Пример данных для загрузки счета с позициями. Обязательно необходимо указать плательщика
payer
{
"data":{
"type":"invoices",
"attributes":{
"positions":[
{
"product_id":22222,
"quantity":2,
"amount":222
},
{
"product_id":22222,
"quantity":1
}]
},
"relationships":{
"payer":{
"data":{
"type":"companies",
"id":222222
}
}
}
}
}
| JSON API type | invoices |
| URL | /api/v1/invoices |
| Список | GET /api/v1/invoices |
| Чтение | GET /api/v1/invoices/{id} |
| Создание | POST /api/v1/invoices |
| Редактирование | PATCH /api/v1/invoices/{id} |
| Удаление | DELETE /api/v1/invoices/{id} |
Атрибуты
Атрибуты счета
{
"data": {
"type":"invoices",
"id": 2,
"attributes":{
"number": 2222,
"custom_number": 2222,
"amount": "2222.0",
"due_date": "2022-02-22T12:02:22.222+03:00",
"vat_kind": "without",
"vat_rate": 10,
"reason": "л/с 22222",
"issued_at": "2022-02-22T12:02:22.222+03:00",
"vi_date": "2022-02-22T12:02:22.222+03:00",
"torg_12_date": "2022-02-22T12:02:22.222+03:00",
"upd_date": "2022-02-22T12:02:22.222+03:00",
"act_date": "2022-02-22T12:02:22.222+03:00",
"shipping_date": "2022-02-22T12:02:22.222+03:00",
"status": "not_paid",
"balance": "2222.0",
"available_without_signature": true,
"created_at": "2022-02-22T12:02:22.222+03:00",
"updated_at": "2022-02-22T12:02:22.222+03:00"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| positions | array |
[{“product_id”:41922}] | да | Позиции счета |
| number | integer |
222 | да | Номер автоматический |
| custom_number | string |
мм.222.пп | да | Номер ручной |
| amount | decimal |
2222.0 | да | Сумма счета |
| vat_kind | string |
without |
да | Тип НДС |
| vat_rate | integer |
10 | да | Значение НДС (%) |
| due_date | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Срок оплаты |
| issued_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата проведения счета |
| vi_date | date |
2022-02-22 |
да | Дата СФ |
| torg_12_date | date |
2022-02-22 |
да | Дата ТОРГ-12 |
| upd_date | date |
2022-02-22 |
да | Дата УПД |
| act_date | date |
2022-02-22 |
да | Дата акта |
| shipping_date | date |
2022-02-22 |
да | Дата отгрузки |
| reason | string |
л/с 22222 | да | Основание |
| torg_12_reason | string |
Договор № 2 | да | Основание для ТОРГ-12 |
| act_reason | string |
Договор № 2 | да | Основание для акта вып. работ |
| status | string |
not_paid |
нет | Статус |
| balance | decimal |
2222222.0 | нет | Неоплаченный остаток по счету |
| available_without_signature | boolean |
true | да | Отметка о том, имеет ли документ юридическую силу без подписи |
| show_discount | boolean |
true | да | Показывать скидку в печатной форме |
| show_vendor_code | boolean |
true | да | Показывать артикул в печатной форме |
| with_stamp | boolean |
true | да | Подставить печать и подпись в печатную форму |
| payment_type | string |
non_cash |
да | Тип платежа. Достустимые значения cash и non_cash |
| customs | hash |
{"custom_1":'custom value'} |
да | Свои поля |
| previous_responsible_id | integer |
100 |
нет | Предыдущий ответственный |
Позиции
Допустимые поля для значений массива JSON-объектов атрибута positions.
| Поле | Тип | Описание |
|---|---|---|
| name* | string |
Переопределенное наименование товара |
| product_id* | integer |
ID продукта |
| quantity | integer |
Количество товара |
| amount | decimal |
Сумма позиции |
| is_service | boolean |
Товар (false) или услуга (true) |
| unit | string |
Единица измерения |
| code | code |
Код товара |
* Обязательные поля
Типы НДС
Допустимые значения для атрибута vat_kind.
| Тип НДС | Код |
|---|---|
| Без НДС | without |
| НДС сверху | top |
| НДС включен | include |
| НДС позиций | positions |
Статусы счетов
Допустимые значения для атрибута status. Значение поля рассчитывается автоматически на основе платежей и даты окончания, и редактированию не подлежит.
| Статус | Код |
|---|---|
| Частично оплачен | partial |
| Частично оплачен с просрочкой | partial_overdue |
| Просрочен | overdue |
| Не оплачен | not_paid |
| Полностью оплачен | paid |
| Без позиций | without_positions |
| Отменен | cancelled |
Связи
| Название | Связь | JSON API type |
|---|---|---|
| Плательщик* | payer | companies, contacts |
| Создатель | user | users |
| Сделка | deal | deals |
| Продукты | products | products |
| Позиции | positions | invoice-positions |
| Платежи | payments | invoice-payments |
| Получатель | org_detail | org_details |
| Банк. реквизиты | account_bank_detail | account_bank_details |
| Банк. реквизиты компании | company_bank_detail | company_bank_details |
* Обязательная связь
Обновление позиций
Обновление набора позиций счета
curl "https://1c-connector.app.synergycrm.ru/api/v1/invoices/2" \
-X PATCH \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"invoices",
"id":"2",
"relationships":{
"invoice_positions_list":{
"data":[{
"product_id":"1",
"quantity":"5",
"amount":"100"
},
{
"product_id":"2",
"quantity":"7",
"amount":"200"
}
]
}
}
}
}
EOF
Обновить/создать весь список позиций счета возможно через API метод PATCH. Данные позиций передаются в поле “invoice_positions_list” блока “relationships” и представляют собой массив параметров: { product_id, quantity, amount }.
Выполнение запроса заключается в удалении существующих позиций счета и создании новых на основе данных, полученных в запросе. При возникновении какой-либо ошибки во время выполнения запроса операция прекращается и ошибка возвращается в 1C. Вся опреация не откатывается. Запрос необходимо повторить через некоторое время для корректности данных.
Фильтры
Выгрузить список счетов созданных после указанной даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/invoices/?filter[created_at_gte]=2022.02.22 12:00" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить счета созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить счета созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить счета обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить счета обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| table_state_id | Выгрузить счета по заданному табличному фильтру | filter[table_state_id]=2 |
| q | Выгрузить счета по поисковому запросу | filter[q]=some-query |
| unpaid | Выгрузить неоплаченные счета | filter[unpaid]=2 |
| archived | Выгрузить счета в архиве | filter[archived]=2 |
| discarded | Выгрузить счета в корзине | filter[discarded]=2 |
| actual | Выгрузить актуальные счета | filter[actual]=2 |
| number | Выгрузить счета по автоматическому номеру | filter[number]=222 |
| custom_number | Выгрузить счета по кастомному номеру | filter[custom_number]=мм.222.пп |
| amount | Выгрузить счета по сумме | filter[amount]=2222.0 |
| vat_kind | Выгрузить счета по типу НДС | filter[vat_kind]=without |
| vat_rate | Выгрузить счета по значению в НДС | filter[vat_rate]=10 |
| due_date | Выгрузить счета по сроку оплаты | filter[due_date]=2022.02.22 12:00 |
| issued_at | Выгрузить счета по дате проведения | filter[issued_at]=2022.02.22 12:00 |
| vi_date | Выгрузить счета по дате СФ | filter[vi_date]=2022.02.22 12:00 |
| torg_12_date | Выгрузить счета по дате ТОРГ-12 | filter[torg_12_date]=2022.02.22 12:00 |
| upd_date | Выгрузить счета по дате УПД | filter[upd_date]=2022.02.22 12:00 |
| act_date | Выгрузить счета по дате акта | filter[act_date]=2022.02.22 12:00 |
| shipping_date | Выгрузить счета по дате отгрузки | filter[shipping_date]=2022.02.22 12:00 |
| reason | Выгрузить счета по основанию | filter[reason]=contract2 |
| torg_12_reason | Выгрузить счета по по основанию для ТОРГ-12 | filter[torg_12_reason]=contract2 |
| act_reason | Выгрузить счет по основанию для акта | filter[act_reason]=contract2 |
| status | Выгрузить счета по статусу оплаты | filter[status]=not_paid |
| balance | Выгрузить счета по неоплаченному остатку | filter[balance]=222.0 |
| available_without_signature | Выгрузить счета по признаку юридической силы без подписи | filter[available_without_signature]=true |
| show_discount | Выгрузить счета со скидкой в печатной форме | filter[show_discount]=true |
| show_vendor_code | Выгрузить счета с артикулом в печатной форме | filter[show_vendor_code]=true |
| with_stamp | Выгрузить счета с печатью и подписью в печатной форме | filter[with_stamp]=true |
| payment_type | Выгрузить по типу платежа | filter[payment_type]=cash filter[payment_type]=non_cash |
| customs | Выгрузить счета со со по значению в своем поле | filter[customs]=custom_1 |
| previous_responsible_id | Выгрузить счета по предыдущему ответственному | filter[previous_responsible_id]=2 |
| org_details | Выгрузить счета по связанным реквизитам аккаунта org_details |
filter[org_detail_id]=2 |
Банковские реквизиты
Загрузка банковских реквизитов
curl "https://1c-connector.app.synergycrm.ru/api/v1/account-bank-details" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"account_bank_details",
"attributes":{
"name":"test",
"kind":"calculated_invoice"
}
}
}
EOF
| JSON API type | account-bank-details |
| URL | /api/v1/account-bank-details |
| Список | GET /api/v1/account-bank-details |
| Чтение | GET /api/v1/account-bank-details/{id} |
| Создание | POST /api/v1/account-bank-details |
| Редактирование | PATCH /api/v1/account-bank-details/{id} |
| Удаление | DELETE /api/v1/account-bank-details/{id} |
Атрибуты
Атрибуты банковских реквизитов организации
{
"data":{
"id": "2",
"type": "account_bank_details",
"attributes": {
"created_at": "2022-02-22T12:02:22.222+03:00",
"updated_at": "2022-02-22T12:02:22.222+03:00",
"cached_at": "2022-02-22T12:02:22.222+03:00",
"name": "ПАО Сбербанк",
"bank_name": "ПАО Сбербанк",
"bik": "044525225",
"corr_number": "30101810400000000225",
"number": "1234567890",
"is_default": true,
"active": true,
"current_balance": "2222.0",
"start_balance": "0.0",
"kind": "calculated_invoice",
"as_string": "ПАО Сбербанк"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ | да | Название набора реквизитов |
| kind* | string |
cashbox |
да | Тип реквизитов (cashbox - касса, calculated_invoice - р/счет) |
| bank_name | string |
ПАО СБЕРБАНК | да | Имя банка |
| bik | string |
010101010 | да | БИК банка |
| corr_number | string |
01010101010101010101 | да | Корр. счет |
| number | string |
01010101010101010101 | да | Номер счета |
| is_default | boolean |
true |
да | Основные реквизиты? |
| active | boolean |
true |
да | Активность счета |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры банковских реквизитов
Выгрузить список банковских реквизитов по расчетному счету
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/account-bank-details" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[number]=01010101010101010101"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить банковские реквизиты созданные в системе после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить банковские реквизиты созданные в системе до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить банковские реквизиты обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить банковские реквизиты обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| number | Выгрузить банковские реквизиты по номеру счета | filter[number]=01010101010101010101 |
| bik | Выгрузить банковские реквизиты по БИК банка | filter[bik]=010101010 |
| bank_name | Выгрузить банковские реквизиты названию банка | filter[bank_name]=ПАО Сбербанк |
| corr_number | Выгрузить банковские реквизиты по названию реквизитов | filter[name]=ПАО Сбербанк |
| is_default | Выгрузить банковские реквизиты по умолчанию | filter[is_default]=true |
| active | Выгрузить банковские активные реквизиты | filter[active]=true |
| current_balance | Выгрузить банковские реквизиты по балансу | filter[current_balance]=2222.0 |
| start_balance | Выгрузить банковские реквизиты по стартовому балансу | filter[start_balance]=0.0 |
| kind | Выгрузить банковские реквизиты по названию типу | filter[kind]=calculated_invoice |
Юридические лица аккаунта
Загрузка юридических лиц
curl "https://1c-connector.app.synergycrm.ru/api/v1/org-details" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"org_details",
"attributes":{
"short_name":"test"
}
}
}
EOF
| JSON API type | org-details |
| URL | /api/v1/org-details |
| Список | GET /api/v1/org-details |
| Чтение | GET /api/v1/org-details/{id} |
| Создание | POST /api/v1/org-details |
| Редактирование | PATCH /api/v1/org-details/{id} |
| Удаление | DELETE /api/v1/org-details/{id} |
Атрибуты
Атрибуты организации
{
"data": [
{
"id": "2",
"type": "org-details",
"links": {
"self": "https://app.synergycrm.ru/api/v1/org-details/8"
},
"attributes": {
"created_at": "2022-02-22T12:02:22.222+03:00",
"updated_at": "2022-02-22T12:02:22.222+03:00",
"cached_at": "2022-02-22T12:02:22.222+03:00",
"actual_build": "",
"actual_city": "г Иннополис",
"actual_country": "Россия",
"actual_house": "д 7",
"actual_office": "помещ 503",
"actual_region": "Респ Татарстан",
"actual_street": "ул Университетская",
"actual_zip_code": "420500",
"juristic_build": "",
"juristic_city": "г Иннополис",
"juristic_country": "Россия",
"juristic_house": "д 7",
"juristic_office": "помещ 503",
"juristic_region": "Респ Татарстан",
"juristic_street": "ул Университетская",
"juristic_zip_code": "420500",
"mailing_build": "",
"mailing_city": "г Иннополис",
"mailing_country": "Россия",
"mailing_house": "д 7",
"mailing_office": "помещ 503",
"mailing_region": "Респ Татарстан",
"mailing_street": "ул Университетская",
"mailing_zip_code": "420500",
"is_default": true,
"phone": "+79876543211",
"full_name": "Общество с ограниченной ответственностью \"СИНЕРГИЯ СОФТ\"",
"short_name": "ООО \"СИНЕРГИЯ СОФТ\"",
"logo": "",
"inn": "1683000414",
"kpp": "168301001",
"lawfulness_base": "",
"ogrn": "1211600041685",
"okved": "62.01",
"okpo": "57543915",
"signature_accountant": "",
"signature_manager": "",
"stamp": "",
"accountant": "",
"website": ""
}
}
],
}
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| short_name* | string |
ООО Синергия Софт | да | Название |
| full_name* | string |
Общество с ограниченной ответственностью "СИНЕРГИЯ СОФТ\ | да | Название |
| phone | string |
+79876543211 |
да | Телефон (основной) |
string |
help@synergycrm.ru | да | E-mail адрес | |
| website | string |
synergycrm.ru | да | Сайт |
| custom | hash |
{"custom-1":'custom value'} |
да | Свои поля |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
| is_default | boolean |
true |
нет | Реквизиты по умолчанию |
* Обязательные поля
Фактический адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| actual_country | string |
Россия | да | Страна |
| actual_region | string |
Республика Татарстан | да | Область, регион, край |
| actual_city | string |
Иннополис | да | Город, населенный пункт |
| actual_zip_code | string |
012345 |
да | Индекс |
| actual_street | string |
ул. Университетская | да | Улица, проспект |
| actual_house | string |
22а |
да | Номер дома |
| actual_build | string |
2 |
да | Корпус |
| actual_office | string |
123 |
да | Номер офиса |
Юридический адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| juristic_country | string |
Россия | да | Страна |
| juristic_region | string |
Республика Татарстан | да | Область, регион, край |
| juristic_city | string |
Иннополис | да | Город, населенный пункт |
| juristic_zip_code | string |
012345 |
да | Индекс |
| juristic_street | string |
ул. Университетская | да | Улица, проспект |
| juristic_house | string |
22а |
да | Номер дома |
| juristic_build | string |
2 |
да | Корпус |
| juristic_office | string |
123 |
да | Номер офиса |
Почтовый адрес
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| mailing_country | string |
Россия | да | Страна |
| mailing_region | string |
Республика Татарстан | да | Область, регион, край |
| mailing_city | string |
Иннополис | да | Город, населенный пункт |
| mailing_zip_code | string |
012345 |
да | Индекс |
| mailing_street | string |
ул. Университетская | да | Улица, проспект |
| mailing_house | string |
22а |
да | Номер дома |
| mailing_build | string |
2 |
да | Корпус |
| mailing_office | string |
123 |
да | Номер офиса |
Реквизиты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| full_name | string |
Общество с ограниченной ответственностью | да | Полное наименование |
| short_name | string |
ООО “Синергия Софт” | да | Короткое наименование |
| inn | string |
0101010101 |
да | ИНН |
| ogrn | string |
0101010101010 |
да | ОГРН |
| kpp | string |
010101010 |
да | КПП |
| okved | string |
62.01 |
да | ОКВЭД |
| director | string |
Иванов И.И. | да | Директор |
| accountant | string |
Иванов И.И. | да | Бухгалтер |
| lawfulness_base | string |
Значение | да | Правомочность |
| manager_name | string |
Сидоров В.В. | да | ФИО руководителя |
| manager_position | string |
Генеральный директор | да | Должность руководителя |
| руководителя |
* Обязательные поля
Фильтры
Выгрузить юридическое лицо аккаунта по ИНН
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/org-details" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[inn]=000000000"
| Фильтр | Описание | Пример |
|---|---|---|
| inn | Выгрузить юридическое лицо аккаунта по определенному номеру ИНН | filter[inn]=000000000 |
| kpp | Выгрузить юридическое лицо аккаунта по определенному номеру КПП | filter[kpp]=000000000 |
| phone | Выгрузить юридическое лицо аккаунта по определенному phone |
filter[phone]=+79876543211 |
Выгрузить юридическое лицо аккаунта по определенному email |
filter[email]=mail@test.ru |
|
| q | Выгрузить юридическое лицо аккаунта по поисковому запросу | filter[q]=some-query |
| name | Выгрузить юридическое лицо аккаунта по определенному значению в name |
filter[name]=ООО Ромашка |
| website | Выгрузить юридическое лицо аккаунта по определенному значению в website |
filter[website]=synergycrm.ru |
| juristic_country | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_country |
filter[juristic_country]=Russia |
| juristic_region | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_region |
filter[juristic_region]=Moscow |
| juristic_city | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_city |
filter[juristic_city]=Moscow |
| juristic_zip_code | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_zip_code |
filter[juristic_zip_code]=012345 |
| juristi_street | Выгрузить юридическое лицо аккаунта по определенному значению в juristi_street |
filter[juristi_street]=Mira |
| juristic_house | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_house |
filter[juristic_house]=2 |
| juristic_build | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_build |
filter[juristic_build]=2 |
| juristic_office | Выгрузить юридическое лицо аккаунта по определенному значению в juristic_office |
filter[juristic_office]=2 |
| actual_country | Выгрузить юридическое лицо аккаунта по определенному значению в actual_country |
filter[actual_country]=Russia |
| actual_region | Выгрузить юридическое лицо аккаунта по определенному значению в actual_region |
filter[actual_region]=Moscow |
| actual_city | Выгрузить юридическое лицо аккаунта по определенному значению в actual_city |
filter[actual_city]=Moscow |
| actual_zip_code | Выгрузить юридическое лицо аккаунта по определенному значению в actual_zip_code |
filter[actual_zip_code]=012345 |
| actual_street | Выгрузить юридическое лицо аккаунта по определенному значению в actual_street |
filter[actual_street]=Mira |
| actual_house | Выгрузить юридическое лицо аккаунта по определенному значению в actual_house |
filter[actual_house]=2 |
| actual_build | Выгрузить юридическое лицо аккаунта по определенному значению в actual_build |
filter[actual_build]=2 |
| actual_office | Выгрузить юридическое лицо аккаунта по определенному значению в actual_office |
filter[actual_office]=2 |
| mailing_country | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_country |
filter[mailing_country]=Russia |
| mailing_region | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_region |
filter[mailing_region]=Moscow |
| mailing_city | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_city |
filter[mailing_city]=Moscow |
| mailing_zip_code | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_zip_code |
filter[mailing_zip_code]=012345 |
| mailing_street | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_street |
filter[mailing_street]=Mira |
| mailing_house | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_house |
filter[mailing_house]=2 |
| mailing_build | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_build |
filter[mailing_build]=2 |
| mailing_office | Выгрузить юридическое лицо аккаунта по определенному значению в mailing_office |
filter[mailing_office]=2 |
| full_name | Выгрузить юридическое лицо аккаунта по определенному значению в full_name |
filter[full_name]=Общество с ограниченной ответственностью Ромашка |
| short_name | Выгрузить юридическое лицо аккаунта по определенному значению в short_name |
filter[short_name]=ООО Ромашка |
| ogrn | Выгрузить юридическое лицо аккаунта по определенному значению в ogrn |
filter[ogrn]=0101010101010 |
| kpp | Выгрузить юридическое лицо аккаунта по определенному значению в kpp |
filter[kpp]=010101010 |
| okved | Выгрузить юридическое лицо аккаунта по определенному значению в okved |
filter[okved]=62.01 |
| manager_name | Выгрузить юридическое лицо аккаунта по определенному значению в manager_name |
filter[manager_name]=Ivan |
| manager_position | Выгрузить юридическое лицо аккаунта по определенному значению в manager_position |
filter[manager_position]=CTO |
| lawfulness_base | Выгрузить юридическое лицо аккаунта по определенному значению в lawfulness_base |
filter[lawfulness_base]=value |
| initial_balance | Выгрузить юридическое лицо аккаунта по определенному значению в initial_balance |
filter[initial_balance]=10000 |
| archived_at | Выгрузить юридическое лицо аккаунта по определенному значению в archived_at |
filter[archived_at]=2022.02.22 12:00 |
| discarded_at | Выгрузить юридическое лицо аккаунта по определенному значению в discarded_at |
filter[discarded_at]=2022.02.22 12:00 |
| previous_responsible_id | Выгрузить юридическое лицо аккаунта по определенному значению в previous_responsible_id |
filter[previous_responsible_id]=2 |
Позиции счета
Пример данных для загрузки позиции счета. Обязательно необходимо указать счет
invoice, связь сproductявляется опциональной, если он не будет передан, то необходимо, чтобы были загружены атрибутыinvoice_position, такие как:name*,quantity,amount,code,is_service,unit,discount
{
"data":{
"type":"invoice_positions",
"attributes":{
"quantity":2,
"amount":222.2,
"discount":20
},
"relationships":{
"product":{
"data":{
"type":"products",
"id":2
}
},
"invoice":{
"data":{
"type":"invoices",
"id":222
}
}
}
}
}
| JSON API type | invoice-positions |
| URL | /api/v1/invoice-positions |
| Список | GET /api/v1/invoice-positions |
| Чтение | GET /api/v1/invoice-positions/{id} |
| Создание | POST /api/v1/invoice-positions |
| Редактирование | PATCH /api/v1/invoice-positions/{id} |
| Удаление | DELETE /api/v1/invoice-positions/{id} |
Атрибуты
Атрибуты позиции в счете
{
"data": {
"type":"invoice_positions",
"id": 2,
"attributes":{
"name": "",
"quantity":2,
"amount": 200.0,
"is_service": false,
"code": "222",
"unit": "шт",
"discount": "0.0",
"discount_amount": "0.0",
"result_vat": "0.0",
"amount_with_discount": "200.0",
"result_amount": "200.0",
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name | string |
Товар | да | Переопределенное наименование товара |
| quantity | integer |
2 | да | Количество товара |
| discount | decimal |
0.0 | да | Скидка на товар (в процентах) |
| discount_amount | decimal |
0.0 | нет | Сумма скидки |
| amount | decimal |
2000.0 | да | Сумма позиции |
| amount_with_discount | decimal |
2000,0 | нет | Сумма позиции с учетом скидки |
| result_vat | decimal |
0.0 | нет | Сумма НДС |
| result_amount | decimal |
2000,0 | нет | Итоговая сумма позиции (с учетом скидки и НДС) |
| is_service | boolean |
false | да | Товар (false) или услуга (true) |
| unit | string |
‘шт’ | да | Единица измерения |
| code | code |
‘222’ | да | Код товара |
Связи
| Название | Связь | JSON API type |
|---|---|---|
| Счет | invoice | invoices |
| Продукт | product | products |
Платежи
Пример данных для загрузки платежа с типом “Приход” и привязкой к сделке. Указываем плательщика (
payer), счет получателя (receiver_bank_detail) и счет (invoice), на основании которого происходит операция.
{
"data":{
"type":"invoice_payments",
"attributes":{
"direction":"income",
"amount":20.0,
"operation_created_at":"22.02.2022 12:22"
},
"relationships":{
"deal": {
"data": {
"type":"deals",
"id":2000
}
},
"payer":{
"data":{
"type":"companies",
"id":2222
}
},
"receiver_bank_detail":{
"data":{
"type":"account_bank_details",
"id":22
}
},
"invoice":{
"data":{
"type":"invoices",
"id":222
}
}
}
}
}
Пример данных для загрузки платежа с типом “Расход” и привязкой к сделке. Указываем получателя (
receiver), счет получателя (receiver_bank_detail) и счет (invoice), на основании которого происходит операция.
{
"data":{
"type":"invoice_payments",
"attributes":{
"direction":"outcome",
"amount":20.0,
"operation_created_at":"22.02.2022 12:22"
},
"relationships":{
"deal": {
"data": {
"type":"deals",
"id":2000
}
},
"receiver":{
"data":{
"type":"companies",
"id":2222
}
},
"payer_bank_detail":{
"data":{
"type":"account_bank_details",
"id":22
}
},
"invoice":{
"data":{
"type":"invoices",
"id":222
}
}
}
}
}
Пример данных для загрузки платежа с типом “Перевод”. Указываем с какого счета (
payer-bank-detail) на какой счет (receiver_bank_detail) происходит перевод.
{
"data":{
"type":"invoice_payments",
"attributes":{
"direction":"transfer",
"amount":20.0,
"operation_created_at":"22.02.2022 12:22"
},
"relationships":{
"payer_bank_detail":{
"data":{
"type":"account_bank_details",
"id":22
}
},
"receiver_bank_detail":{
"data":{
"type":"account_bank_details",
"id":222
}
}
}
}
}
Атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| number | integer |
222 | нет | Номер автоматический |
| custom_number | string |
мм.222.пп | да | Номер ручной |
| amount | decimal |
2222.0 | да | Сумма счета |
| purpose | string |
Счет №222 | да | Назначение |
| operation_created_at* | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Когда |
| operation_accounted_at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Учесть в |
| operation_executed_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Проведено |
| operation_canceled_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Отменено |
| description | string |
Мой комментарий к счету | да | Комментарий |
| direction | string |
income |
да (создание) | Тип |
| status | string |
canceled |
да | Статус платежа |
| payment_type | string |
non_cash |
да | Тип платежа. Достустимые значения cash и non_cash |
| customs | hash |
{"custom_1":'custom value'} |
да | Свои поля |
| previous_responsible_id | integer |
100 |
нет | Предыдущий ответственный |
* Обязательные поля
Фильтры платежей
Выгрузить список платежей, созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/invoice-payments" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить платежи созданные в системе после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить платежи созданные в системе до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить платежи обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить платежи обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| operation_created_at_gte | Выгрузить платежи сформированные после указанного времени | filter[operation_created_at_gte]=2022.02.22 12:00 |
| operation_created_at_lte | Выгрузить платежи сформированные до указанного времени | filter[operation_created_at_lte]=2022.02.22 12:00 |
| operation_accounted_at_gte | Выгрузить платежи учтённые после указанного времени | filter[operation_accounted_at_gte]=2022.02.22 12:00 |
| operation_accounted_at_lte | Выгрузить платежи учтённые до указанного времени | filter[operation_accounted_at_lte]=2022.02.22 12:00 |
| operation_executed_at_gte | Выгрузить платежи исполненные после указанного времени | filter[operation_executed_at_gte]=2022.02.22 12:00 |
| operation_executed_at_lte | Выгрузить платежи исполненные до указанного времени | filter[operation_executed_at_lte]=2022.02.22 12:00 |
| archived | Выгрузить платежи в архиве | filter[archived]=2 |
| discarded | Выгрузить платежи в корзине | filter[discarded]=2 |
| actual | Выгрузить актуальные платежи | filter[actual]=2 |
| purpose | Выгрузить платежи по определенному значению в purpose |
filter[purpose]=Счет №222 |
| amount | Выгрузить платежи по определенному значению в amount |
filter[amount]=2222.0 |
| description | Выгрузить платежи по определенному значению в description |
filter[description]=text |
| direction | Выгрузить платежи по определенному значению в direction |
filter[direction]=income |
| custom_number | Выгрузить платежи по определенному значению в custom_number |
filter[custom_number]=мм.222.пп |
| status | Выгрузить платежи по определенному значению в status |
filter[status]=canceled |
| payment_type | Выгрузить платежи по определенному значению в payment_type |
filter[payment_type]=non_cash |
| number | Выгрузить платежи по определенному значению в number |
filter[number]=222 |
| operation_canceled_at | Выгрузить платежи по определенному значению в operation_canceled_at |
filter[operation_canceled_at]=2022.02.22 12:00 |
| dynamic_status | Выгрузить платежи по определенному значению в dynamic_status |
filter[dynamic_status]=executed |
| previous_responsible_id | Выгрузить платежи по определенному значению в previous_responsible_id |
filter[previous_responsible_id]=2 |
Статусы платежей
| Название | Код |
|---|---|
| Исходящий, ожидающий исполнения | send_to_bank |
| Проведен | executed |
| Не проведен | not_executed |
| Запланирован | planned |
| Отменен | canceled |
| Неизвестный | unknown |
| Просрочен | overdue |
| В обработке | process |
Типы платежей
| Название | Код |
|---|---|
| Приход | income |
| Расход | outcome |
| Перевод | transfer |
Связи
| Название | Связь | JSON API type |
|---|---|---|
| Ответственный | responsible | users |
| Создатель | user | users |
| Сделка | deal | deals |
| Плательщик | payer | companies, contacts |
| Получатель | receiver | companies, contacts |
| Счет | invoice | invoices |
| Статья операции | invoice_payment_category | invoice_payment_categories |
| Банк. реквизиты | account_bank_detail | account_bank_details |
| Банк. реквизиты компании | company-bank-detail | company_bank_details |
| Со счета | payer_bank_detail | company_bank_details, account_bank_details |
| На счет | receiver_bank_detail | company_bank_details, account_bank_details |
Правила создания платежа
В платежах с типом “Приход” (income) контрагентом является Плательщик (payer). Так же
необходимо указать банковские реквизиты получателя (receiver_bank_detail).
В платежах с типом “Расход” (outcome) контрагентом является Получатель (receiver).
В платежах с типом “Перевод” (transfer) необходимо указать счет отправителя (payer_bank_detail)
и счет получателя (receiver_bank_detail).
Справочники
Выгрузить список этапов сделок
curl "https://1c-connector.app.synergycrm.ru/api/v1/deal-stages"
-H "Authorization: Bearer api_token"
Выгрузить список категорий своих полей
curl "https://1c-connector.app.synergycrm.ru/api/v1/dcustom-field-categories"
-H "Authorization: Bearer api_token"
Выгрузить список своих полей
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields"
-H "Authorization: Bearer api_token"
Выгрузить список продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/products"
-H "Authorization: Bearer api_token"
Выгрузить список воронок сделок
curl "https://1c-connector.app.synergycrm.ru/api/v1/deal-stage-categories"
-H "Authorization: Bearer api_token"
Выгрузить список этапов сделок
curl "https://1c-connector.app.synergycrm.ru/api/v1/deal-stages"
-H "Authorization: Bearer api_token"
Выгрузить список складов
curl "https://1c-connector.app.synergycrm.ru/api/v1/stores"
-H "Authorization: Bearer api_token"
Выгрузить список скидок продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/product-discounts"
-H "Authorization: Bearer api_token"
Выгрузить список типов продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/product-types"
-H "Authorization: Bearer api_token"
Выгрузить список категорий продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/product-categories"
-H "Authorization: Bearer api_token"
| Справочник | JSON API type |
|---|---|
| Категории своих полей | custom_field_categories |
| Свои поля | custom_fields |
| Продукты | products |
| Воронки сделок | deal_stage_categories |
| Этапы сделок | deal_stages |
| Склады | stores |
| Скидки | product_discounts |
| Типы продуктов | product_types |
| Категории продуктов | product_categories |
Запросы к справочникам имеют следующий формат:
| URL | /api/v1/{json-api-type} |
| Список | GET /api/v1/{json-api-type} |
| Чтение | GET /api/v1/{json-api-type}/{id} |
| Создание | POST /api/v1/{json-api-type} |
| Редактирование | PATCH /api/v1/{json-api-type}/{id} |
| Удаление | DELETE /api/v1/{json-api-type}/{id} |
Категории своих полей
Создание категории своих полей
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-field-categories" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"custom_field_categories",
"attributes":{
"class_name":"Order",
"name":"Категория полей по API"
}
}
}
EOF
Атрибуты
Атрибуты категории дополнительного поля тип текст
{
"data": {
"id": "2",
"type": "custom_field_categories",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-field-categories/2"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"name": "Категория полей по API",
"class_name": "Order"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
День рождения | да | Название |
| class_name* | string |
TelephonyCall |
да | Класс объекта |
* Обязательные поля
Ограничения по значениям
| Аттрибут | Варианты |
|---|---|
| class_name | Company, Contact, Deal, Order, User, Product, TelephonyCall |
Фильтры
Выгрузить список категорий своих полей созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/competitors" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| class_name | Выгрузить категории полей по определенному классу | filter[class_name]=Deal |
| created_at_gte | Выгрузить категории полей созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить категории полей созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить категории полей обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить категории полей обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить категории полей по названию | filter[name]=value |
| class_name | Выгрузить категории полей по пренадлежности к классу | filter[name]=Order |
Свои поля
Создание поля
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"custom_fields",
"attributes":{
"required": false,
"resource_name": "deals",
"field_type": "text",
"name":"Своё поле по API"
}
}
}
EOF
Атрибуты
Атрибуты дополнительного поля
{
"data": {
"id": "2",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/2"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"name": "Мое название поля",
"required": false,
"resource_name": "deals",
"field_type": "text",
"attribute_name": "custom_2",
"params": {
"acts_like":"text"
}
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Мое название поля | да | Название |
| resource_name* | string |
deals |
да | Расширяемый ресурс |
| field_type* | string |
text |
да | Тип поля |
| required | boolean |
true | да | Обязательное поле |
| attribute_name | string |
custom_2 |
нет | Имя аттрибута для JSON API |
| params | object |
{ “options”: [“Пункт 1”, “Пункт 2”] } | нет | Дополнительные параметры поля |
| select_options | array |
[ “Пункт 1”, “Пункт 2” ] | да | Атрибут для установки вариантов селекта (только у field_type select и только при создании и обновлении) |
| tree_options | array |
[ { “name”: “test”, “childs”: [] } ] | да | Дерево (только у field-type tree). Доступны также через отдельный ресурс |
* Обязательные поля
Ограничения по значениям
| Аттрибут | Варианты |
|---|---|
| resource_name | contacts, companies, deals, diaries, orders, products, telephony_calls, users |
| field_type | text, date, number, select, tree |
Фильтры
Выгрузить список своих полей для сделок
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields" \
-X GET \
-H "Authorization: Bearer api_token" \
-d "filter[resources]=deals"
| Фильтр | Описание | Пример |
|---|---|---|
| resources | Выгрузить поля по определенному resource_name |
filter[resources]=deals |
| created_at_gte | Выгрузить объекты, созданные после указанного времени | filter[created_at_gte]=2017.08.01 12:00 |
| created_at_lte | Выгрузить объекты, созданные до указанного времени | filter[created_at_lte]=2017.08.01 12:00 |
| updated_at_gte | Выгрузить объекты, обновлённые после указанного времени | filter[updated_at_gte]=2017.08.01 12:00 |
| updated_at_lte | Выгрузить объекты, обновлённые до указанного времени | filter[updated_at_lte]=2017.08.01 12:00 |
| name | Выгрузить поля по названию | filter[name]=поле |
| field_type | Выгрузить поля по типу | filter[name]=text |
| required | Выгрузить обязательные поля | filter[required]=true |
| attribute_name | Выгрузить поле по атрибуту JSON | filter[attribute_name]=custom_2 |
Параметры дерева
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| id | integer |
23 | нет | Системный идентификатор узла дерева |
| name* | string |
`Узел** | да | Текст узла |
| childs* | object |
[{“name”:”test”, “childs”:[]}] | Дочерние узлы дерева |
* Обязательные поля
Пример поля с типом “текст”
{
"data": [
{
"id": "416",
"type": "custom-fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/416"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "текст",
"field_type": "text",
"required": false,
"resource_name": "contacts",
"attribute_name": "custom-416",
"params": {
"multiple": "0",
"acts_like": "text",
"beauty_phone": "0"
}
}
}
]
}
Пример поля с типом “число”
{
"data": [
{
"id": "418",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/418"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "число",
"field_type": "number",
"required": true,
"resource_name": "contacts",
"attribute_name": "custom-418",
"params": {
"extension": "RUB, ₽",
"only_integer": "1",
"extension_type": "currency"
}
},
}
]
}
Пример поля с типом “дата”
{
"data": [
{
"id": "419",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/419"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "дата",
"field_type": "date",
"required": true,
"resource_name": "contacts",
"attribute_name": "custom-419",
"params": {
"with_time": "1"
}
},
}
]
}
Пример поля с типом “файл”
{
"data": [
{
"id": "420",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/420"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "файл",
"field_type": "file",
"required": false,
"resource_name": "contacts",
"attribute_name": "custom-420",
"params": {
"public_upload": "1"
}
},
}
]
}
Пример поля с типом “список внешний источник”
{
"data": [
{
"id": "421",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/421"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "список внешний источник",
"field_type": "external_select",
"required": false,
"resource_name": "contacts",
"attribute_name": "custom-421",
"params": {
"multiple": "0",
"password": "Qwe123rty",
"username": "Admin",
"color_key": "#00000",
"json_path": "value",
"label_key": "value",
"value_key": "value",
"external_source": "value"
}
},
}
]
}
Пример поля с типом “список”
{
"data": [
{
"id": "423",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/423"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "список",
"field_type": "select",
"required": true,
"resource_name": "contacts",
"attribute_name": "custom-423",
"params": {
"colors": [
"#16b698",
"#973566",
"#ae1e9e"
],
"values": [
"1",
"2",
"3"
],
"options": [
"первый",
"второй",
"третий"
],
"multiple": "1",
"display_as": "select"
},
"select_options": [
"первый",
"второй",
"третий"
]
},
}
]
}
Пример поля с типом “рейтинг”
{
"data": [
{
"id": "424",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/424"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "рейтинг",
"field_type": "rating",
"required": true,
"resource_name": "contacts",
"attribute_name": "custom-424",
"params": {value} ## от 1 до 5
},
}
]
}
Пример поля с типом “связь”
{
"data": [
{
"id": "425",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/425"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "связь",
"field_type": "relation",
"required": false,
"resource_name": "contacts",
"attribute_name": "custom-425",
"params": {
"relation_class": "Contact"
}
},
}
]
}
Пример поля с типом “нумератор”
{
"data": [
{
"id": "427",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/427"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "нумератор",
"field_type": "sequence",
"required": false,
"resource_name": "contacts",
"attribute_name": "custom-427",
"params": {
"mask": "2023-1-А",
"start_number": 1,
"auto_sequence": "1",
"sequence_group": "year"
}
},
}
]
}
Пример поля с типом “таймер”
{
"data": [
{
"id": "428",
"type": "custom_fields",
"links": {
"self": "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields/428"
},
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"name": "таймер",
"field_type": "timer",
"required": false,
"resource_name": "contacts",
"attribute_name": "custom-428",
"params": {
"time_unit": "days"
}
},
}
]
}
Пункты списка своего поля типа “Дерево”
Создание нового пункта для определённого своего поля
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-field-options" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"custom_field_options",
"attributes":{
"name":"Пункт по API"
},
"relationships":{
"custom_field":{
"data":{
"type":"custom_fields",
"id":"2"
}
}
}
}
}
EOF
Создание нового пункта для определённого своего поля с предустановленным родительским пунктом
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-field-options" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"custom_field_options",
"attributes":{
"name":"Пункт по API"
},
"relationships":{
"custom_field":{
"data":{
"type":"custom_fields",
"id":"2"
}
},
"parent":{
"data": {
"type":"custom_field_options",
"id":"2"
}
}
}
}
}
EOF
Перенос пункта от одного родителя другому
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-field-options/2" \
-X PATCH \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"id":"2"
"type":"custom_field_options",
"relationships":{
"custom_field":{
"data":{
"type":"custom_fields",
"id":"22"
}
},
"parent":{
"data": {
"type":"custom_field_options",
"id":"22"
}
}
}
}
}
EOF
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Пункт | да | Название |
* Обязательные поля
Связи
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Своё поле | custom_field | custom_fields |
| Родительский пункт | parent | custom_field_options |
| Дочерние пункты | children | custom_field_options |
| Поддерево | subtree | custom_field_options |
Фильтры
Выгрузить список своих полей для сделок
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-field-options" \
-X GET \
-H "Authorization: Bearer api_token" \
-d "filter[custom_field_id]=2"
| Фильтр | Описание | Пример |
|---|---|---|
| custom_field_id | Выгрузить поля по определенному идентификтору своего поля | filter[custom_field_id]=deals |
Пользователи
Загрузить номера телефона
curl "https://1c-connector.app.synergycrm.ru/api/v1/profile" \
-X PATCH \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"id": 2,
"type":"users",
"attributes":{
"phone":"+79876543211"
}
}
}
EOF
| JSON API type | users |
| URL | /api/v1/users |
| Список | GET /api/v1/users |
| Чтение | GET /api/v1/users/{id} |
| Создание | POST /api/v1/users |
| Редактирование | PATCH /api/v1/users/{id} |
Атрибуты
{
"data": {
"id": "2",
"type": "users",
"attributes": {
"created_at": "2022-02-22T12:02:22.000+00:00",
"updated_at": "2022-02-22T12:02:22.000+00:00",
"cached_at": "2022-02-22T12:02:22.000+00:00",
"email": "support@test.com",
"first_name": "Иван",
"last_name": "Иванов",
"middle_name": "Иванович",
"phone": "+79876543211",
"mail_signature": "value",
"rights_config":{
"edit_menu": true,
"manage_articles": false,
"edit_mail_accounts": false,
"allow_work_with_kkm": false,
"edit_entity_columns": true,
"edit_entity_widgets": true,
"allow_manual_dialing": true,
"manage_work_schedules": true,
"edit_entity_nested_forms": true,
"edit_notification_settings": true,
"manage_irresponsible_entity": false,
"allow_cancel_completed_tasks": true
},
"disabled": false,
"role": "executive",
"avatar": "https://example.com/test.png",
"last_sign_in_at": "2022-02-22T12:02:22.000+00:00",
"current_sign_in_at": "2022-02-22T12:02:22.000+00:00",
"web_form_token": "6abcff2aa1eea0f899e741a63a3d92a1",
"time_zone": "Europe/Moscow",
"locale": "ru",
"online": false,
"work_time_status":"true",
"account_id": 2
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| first_name | string |
Иван |
да | Имя |
| last_name | string |
Иванов |
да | Фамилия |
| middle_name | string |
Иванович |
да | Отчество |
string |
test@mail.ru |
да | ||
| password | string |
strongpswd |
да | Пароль (обязателен при создании пользователя) |
| phone | string |
+79876543211 |
да | Телефон |
| mail_signature | string |
С уважением |
да | Подпись при отправке письма |
| rights_config | json |
да | Дополнительные права пользователя | |
| disabled | boolean |
true |
да | Статус актиности пользователя |
| role | string |
basic, manager, executive |
да | Основная роль пользователя |
| avatar | string |
https://example.com/link/to/avatar.png |
нет | Аватар пользователя |
| last_sign_in_at | datetime |
нет | Дата предыдущей авторизации | |
| current_sign_in_at | datetime |
нет | Дата текущей авторизации | |
| unconfirmed_email | string |
changed@email.com |
нет | Неподтвержденный адрес email |
| web_form_token | string |
12345beaf |
нет | Токен для создания вебформы |
| time_zone | string |
Tokyo |
нет | Временная зона в формате tzdata |
| locale | string |
ru, en |
нет | Язык интерфейса системы |
| online | boolean |
true |
нет | Онлайн-статус (работает ли пользователь сейчас в системе?) |
| notification_settings | json |
нет | Настройки уведомлений пользователя | |
| work_time_status | boolean |
true, false |
нет | Рабочая сессия |
| created_at | datetime |
2022-02-22T12:02:22.000+00:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.000+00:00 |
нет | Дата обновления |
rights-config (Дополнительные права)
| Название | Описание |
|---|---|
| edit_menu | Может ли пользователь редактировать видимость и порядок элементов меню |
| manage_articles | Возможность редактировать базу знаний |
| edit_mail_accounts | Внесение изменений в настройки почтовых аккаунтов |
| allow_work_with_kkm | Разрешить работать с онлайн-кассами (ККМ) |
| edit_entity_columns | Разрешить менять видимость колонок в таблицах объектов |
| edit_entity_widgets | Разрешить менять видимость виджетов в карточках объектов |
| allow_manual_dialing | Разрешить вводить номер телефона вручную (при совершении звонка) |
| manage_work_schedules | Управление рабочим графиком |
| edit_entity_nested_forms | Редактирование полей в форме для вложенных объектов |
| edit_notification_settings | Редактирование параметров оповещений |
| manage_irresponsible_entity | Управлять сущностями без ответственных юзеров |
| allow_cancel_completed_tasks | Разрешить отмену завершенных задач |
Связи
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Дополнительная роль | custom_role | custom_roles |
| Должность | work_position | work-positions |
| Группа | user_group | user_groups |
Фильтры
Выгрузить список сотрудников по активной рабочей сессии
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/users/?filter[work_time_status]=active" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить пользователей созданных после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить пользователей созданных до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить пользователей обновлённых после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить пользователей обновлённых до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| q | Выгрузить пользователей по поисковому запросу | filter[q]=some-query |
| work_time_status | Выгрузить пользователей по рабочей сессии | filter[work_time_status]=active, filter[work_time_status]=inactive |
| first_name | Выгрузить пользователей по имени | filter[first_name]=ivanov |
| last_name | Выгрузить пользователей по фамилии | filter[last_name]=ivan |
| middle_name | Выгрузить пользователей по отчеству | filter[middle_name]=ivanovich |
| Выгрузить пользователей по определенному e-mail | filter[email]=email@mail.ru |
|
| phone | Выгрузить пользователей по определенному номеру телефона | filter[phone]=79876543211 |
| mail_signature | Выгрузить пользователей по почтовой подписи | filter[mail_signature]=value |
| disabled | Выгрузить пользователей по статусу активности | filter[disabled]=true |
| role | Выгрузить пользователей по роли | filter[role]=executive |
| last_sign_in_at | Выгрузить пользователей по дате по последней авторизации | filter[last_sign_in_at]=2022.02.22 12:00 |
| current_sign_in_at | Выгрузить пользователей по текущей авторизации | filter[current_sign_in_at]=2022.02.22 12:00 |
| unconfirmed_email | Выгрузить пользователей по неподтвержденным e-mail | filter[unconfirmed_email]=email@mail.ru |
| web_form_token | Выгрузить пользователеq по токену веб формы | filter[web_form_token]=value |
| time_zone | Выгрузить пользователей по временной зоне | filter[time_zone]=Moscow |
| locale | Выгрузить пользователей по языку учетной записи | filter[locale]=en |
| online | Выгрузить пользователей по онлайн-статусу | filter[online]=true |
| work_time_status | Выгрузить пользователей по рабочей сессии | filter[work_time_status]=true |
Табличные фильтры
| JSON API type | table-states |
| URL | /api/v1/table-states |
| Список | GET /api/v1/table-states |
| Чтение | GET /api/v1/table-states/{id} |
Атрибуты
Ниже приведен пример формата данных, в реальном ответе будут присутствовать все перечисленные атрибуты
{
"data": {
"id": "2",
"type": "table_states",
"attributes": {
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"class_name": "Company",
"name": "company_table_filter",
"key": "general",
"temp": "true",
"data": {
"fields": [
"name",
"bank_number",
"email",
"city",
"responsible",
"contacts",
"street",
"custom_2"
],
"search_conditions": {
"city": "Moscow"
}
}
}
}
}
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name | string |
"company_table_filter" |
да | Название фильтра |
| class-name | string |
"Company" |
да | Класс фильтра |
| key | string |
"general" |
да | Ключ таблицы (“general” - основная таблица, “contacts” - таблица карточки Контакты) |
| temp | boolean |
"true" |
да | Флаг, сигнализирующий о том, что данные поля используются в текущий момент |
| data | hash |
{"fields": ["number", "created_at"} |
да | Отображаемые поля и условия выборки |
| created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Выгрузить список табличных фильтров из карточки Сделок
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/table-states" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[key]=deals"
| Фильтр | Описание | Пример |
|---|---|---|
| key | Выгрузить табличные фильтры по определенному ключу | filter[key]=general |
| class-name | Выгрузить табличные фильтры по определенному классу | filter[class-name]=Deals |
| temp | Выгрузить табличные фильтры с текущими полями | filter[temp]=true |
| name | Выгрузить табличные фильтры с текущими названием | filter[name]=value |
| data | Выгрузить табличные фильтры с текущими отображением | filter[temp]=true |
| created-at | Выгрузить табличные фильтры созданные после указанного времени | filter[created-at]=2022.02.22 12:00 |
| updated-at | Выгрузить табличные фильтры обновленные после указанного времени | filter[updated-at]=2022.02.22 12:00 |
Файлы
| JSON API type | documents |
| URL | /api/v1/documents |
| Список | GET /api/v1/documents |
| Чтение | GET /api/v1/documents/{id} |
| Удаление | DELETE /api/v1/documents/{id} |
Атрибуты
Ниже приведен пример формата данных, в реальном ответе будут присутствовать все перечисленные атрибуты
{
"data": {
"id": "2",
"type": "documents",
"links": {
"self": "http://1c-connector.app.synergycrm.ru/api/v1/documents/2"
},
"attributes": {
"created_at": "2022-02-22T12:02:22.222+03:00",
"updated_at": "2022-02-22T12:02:22.222+03:00",
"cached_at": "2022-02-22T12:02:22.222+03:00",
"name": "example.jpg",
"size": "22222.0",
"download_link": "https://example-link",
"content_type": "image/jpeg"
}
}
}
Основные атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name | string |
"example.jpg" |
да | Название файла |
| size | string |
"103820.0" |
да | Размер файла |
| download_link | string |
"https://example-link" |
нет | Ссылка для скачивания |
| content_type | string |
"image/jpeg" |
нет | Тип файла |
| created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
| updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
| cached_at | datetime |
2022-02-22T12:02:22.222+03:00 |
Нет | Закэшировано |
* Обязательные поля
Связи
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Создатель | user | users |
| Компания | company | companies |
| Контакт | contact | contacts |
| Сделки | deals | deals |
| Продукты | products | products |
| Обложка продукта | product_covers | product_covers |
| Категория | category | document_categories |
Фильтры
Выгрузить список документов по определённой компании
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/documents?filter[entity_type]=Company?filter[entity_id]=2" \
-X GET \
-H "Authorization: Bearer api_token"
| Фильтр | Описание | Пример |
|---|---|---|
| entity_type* | Выгрузить файлы по определённому типу ресурса | filter[entity_type]=Contact |
| entity_id** | Выгрузить файлы по идентификатору объекта | filter[entity_id]=2 |
| name | Выгрузить файлы по названию | filter[name]=value |
| size | Выгрузить файлы по размеру | filter[size]=103820.0 |
| content_type | Выгрузить файлы по идентификатору объекта | filter[content_type]=svg |
| created_at | Выгрузить файлы по идентификатору объекта | filter[created_at]=2022.02.22 12:00 |
| updated_at | Выгрузить файлы по идентификатору объекта | filter[updated_at]=2022.02.22 12:00 |
| cached_at | Выгрузить файлы по идентификатору объекта | filter[cached_at]=2022.02.22 12:00 |
* Возможные значения: Company, Contact, Deal, Order, User, Diary, Product, EstateProperty, Checkup, Contract, Activity.
** Фильтры entity_type и entity_id можно использовать только вместе. В фильтре должен быть указан только один параметр (1 класс и 1 id).
Загрузка файлов
Загрузка файлов происходит в два действия: Сначала нужно запросить временные ключи по адресу https://upload.app.synergycrm.ru/ и, после, отправить файл с ключами по адресу хранилища.
Получение временных ключей
Получение ключей и адреса для загрузки файла
curl "https://upload.app.synergycrm.ru/api/v1/files" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"type": "files",
"data": {
"filename": "document.docx",
"resource_type": "contacts",
"resource_id": 2
}
}
EOF
| JSON API type | files |
| URL | /api/v1/files |
| Создание | POST /api/v1/files |
Атрибуты
Тело запроса
{
"type": "files",
"data": {
"filename": "document.docx",
"resource_type": "contacts",
"resource_id": 2
}
}
Тело ответа
{
"type": "files",
"data": {
"url": "https://storage.yandexcloud.net/synergycrm2-production/",
"form_fields": {
"acl": "public-read",
"key": "documents/api/document.docx",
"Expires": "Thu, 10 Nov 2019 09:00:00 GMT",
"policy": "generated-policy",
"x_amz_credential": "AWS1SIMPLECRED/20191114/eu-west-1/s3/aws4_request",
"x_amz_algorithm": "AWS4-HMAC-SHA256",
"x_amz_date": "20191114T130410Z",
"x_amz_signature": "generated-credential"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| filename | string |
document.txt |
да | Название файла |
| resource_type | string |
contacts |
да | Ресурс, в который должен быть добавлен файл ((contacts, companies, deals, orders, products)) |
| resource_id | integer |
2 | да | Идентификатор объекта, в который должен быть добавлен файл |
| url | string |
https://storage.yandexcloud.net/synergycrm2-production/ |
нет | URL для загрузки файла |
| form_fields* | object |
{ “acl”: “public-read” } | нет | Временные данные, которые должны быть переданы отдельными полями вместо с файлом по “url” |
* Время жизни ключей 5 минут с момента запроса, лимит на размер файла - 10 мегабайт.
Загрузка файлов в хранилище
Пример загрузки файла с помощью cURL
curl -X POST \
https://storage.yandexcloud.net/synergycrm2-production/ \
-H "Content_Type: multipart/form-data" \
-F "key=documents/api/hash/document.txt" \
-F "Expires=Thu, 10 Nov 2019 09:00:00 GMT" \
-F "acl=public_read" \
-F "policy=generated_policy" \
-F "x_amz_credential=generated-cred/20191114/eu-west-1/s3/aws4_request" \
-F "x_amz_algorithm=AWS4-HMAC-SHA256" \
-F "x_amz_date=20191114T130420Z" \
-F "x_amz_signature=amz-signature" \
-F file=@/path/to/file
После полученных ключей необходимо послать документ на файловое хранилище. Все поля из form_fields должны быть переданы как поля формы. В отличие от остальных запросов, этот должен иметь заголовок Content-Type: multipart/form-data.
Склады
Загрузить новый склад продуктов
curl "https://1c-connector.app.synergycrm.ru/api/v1/stores" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"stores",
"attributes":{
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"name":"Категория по API"
}
}
}
EOF
| JSON API type | stores |
| URL | /api/v1/stores |
| Список | GET /api/v1/stores |
| Чтение | GET /api/v1/stores/{id} |
| Создание | POST /api/v1/stores |
| Редактирование | PATCH /api/v1/stores/{id} |
| Удаление | DELETE /api/v1/stores/{id} |
Атрибуты
Атрибуты склада
{
"data": {
"type":"stores",
"id":"2",
"attributes":{
"name": "Мой склад в Москве"
}
}
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name* | string |
Мой склад в Москве | да | Название склада |
| created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
| updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Выгрузить список складов продуктов созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/stores" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить склады созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить склады созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить склады обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить склады обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить склады по названию | filter[name]=value |
Остатки
Выгрузить остатки прдуктов на определённом складе
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/stores/2/product-balances" \
-X GET \
-H "Authorization: Bearer api_token"
| JSON API type | product-by-stores |
| Остатки по складу | GET /api/v1/stores/{id}/product-balances |
| Остатки по продукту | GET /api/v1/products/{id}/store-balances |
Атрибуты
Атрибуты остатков продукта на складе
{
"data":
[
{
"id": "2",
"type": "product_by_stores",
"links":
{
"self": "https://1c-connector.app.synergycrm.ru/api/v1/product-by-stores/2"
},
"attributes":
{
"created_at": "2022-02-22T12:22:22.222+03:00",
"updated_at": "2022-02-22T12:22:22.222+03:00",
"cached_at": "2022-02-22T12:22:22.222+03:00",
"stock_quantity": "2.0",
"reserved_quantity": "2.0",
"available_quantity": "2.0",
"waiting_quantity": "2.0",
"product_id": 2,
"store_id": 2
}
}
]
}
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| stock_quantity | decimal |
2.0 | нет | Общее количество позиций |
| available_quantity | decimal |
2.0 | нет | Доступное количество |
| reserved_quantity | decimal |
0.0 | нет | Зарезервировано для продажи |
| waiting_quantity | decimal |
0.0 | нет | Ожидается от поставщика |
| product_id | integer |
2 | нет | id продукта |
| stock_id | integer |
2 | нет | id склада |
| created_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата создания |
| updated_at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
Позиции складской операции
Пример данных для загрузки позиции складской операции. Обязательно необходимо указать складскую операцию
operation, связь сproductявляется опциональной, если он не будет передан, то необходимо, чтобы были загружены атрибутыstore_positions, такие как:name*,quantity,amount
{
"data":{
"type":"store_positions",
"attributes":{
"quantity":2,
"amount":222.2,
"discount":20
},
"relationships":{
"product":{
"data":{
"type":"products",
"id":2
}
},
"operation":{
"data":{
"type":"store_operations",
"id":2
}
}
}
}
}
| JSON API type | store-positions |
| URL | /api/v1/store-positions |
| Список | GET /api/v1/store-positions |
| Чтение | GET /api/v1/store-positions/{id} |
| Создание | POST /api/v1/store-positions |
| Редактирование | PATCH /api/v1/store-positions/{id} |
| Удаление | DELETE /api/v1/store-positions/{id} |
Атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| name | string |
Товар | да | Переопределенное наименование товара |
| quantity | integer |
2 | да | Количество товара |
| discount | decimal |
20.0 | да | Скидка на товар (в процентах) |
| discount_amount | decimal |
200.0 | нет | Сумма скидки |
| amount | decimal |
1000.0 | да | Сумма позиции |
| amount_with_discount | decimal |
800,0 | нет | Сумма позиции с учетом скидки |
| is_service | boolean |
false | нет | Товар (false) или услуга (true) |
| unit | string |
‘шт’ | нет | Единица измерения |
| code | code |
‘123123’ | нет | Код товара |
Связи
| Название | Связь | JSON API type |
|---|---|---|
| Складская операция | operation | store_operations |
| Продукт | product | products |
Фильтры
Выгрузить список складов продуктов созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/store-positions" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить позиции в складской операции созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить позиции в складской операции созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить позиции в складской операции обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить позиции в складской операции обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| name | Выгрузить позиции в складской операции по определенному значению в name |
filter[name]=product |
| quantity | Выгрузить позиции в складской операции по определенному значению в quantity |
filter[quantity]=2.0 |
| amount | Выгрузить позиции в складской операции по определенному значению в amount |
filter[amount]=222.0 |
| unit | Выгрузить позиции в складской операции по определенному значению в unit |
filter[unit]=шт |
| code | Выгрузить позиции в складской операции по определенному значению в code |
filter[code]=222 |
| discount | Выгрузить позиции в складской операции по определенному значению в discount |
filter[discount]=22.0 |
| vat | Выгрузить позиции в складской операции по определенному значению в vat |
filter[vat]=10.0 |
| discount_amount | Выгрузить позиции в складской операции по определенному значению в discount_amount |
filter[discount_amount]=200.0 |
| amount_with_discount | Выгрузить позиции в складской операции по определенному значению в amount_with_discount |
filter[amount_with_discount]=22.0 |
| total_amount | Выгрузить позиции в складской операции по определенному значению в total_amount |
filter[total_amount]=22.0 |
| total_cost | Выгрузить позиции в складской операции по определенному значению в total_cost |
filter[total_cost]=22.0 |
| total_discount | Выгрузить позиции в складской операции по определенному значению в total_discount |
filter[total_discount]=22.0 |
| total_vat | Выгрузить позиции в складской операции по определенному значению в total_vat |
filter[total_vat]=20.0 |
| vat_per_unit | Выгрузить позиции в складской операции по определенному значению в vat_per_unit |
filter[vat_per_unit]=10.0 |
Складские операции
{
"data":{
"id":"2",
"type":"store_operations",
"links":{
"self":"https://1c-connector.app.synergycrm.ru/api/v1/store-operations/2"
},
"attributes":{
"number":2,
"kind":"order_supplier",
"description":"Описание",
"datetime":"2022-02-22T12:22:22.222+03:00",
"overhead_costs":"0.0",
"overhead_type":"amount",
"reservation_active":false,
"waiting_active":false,
"vat_active":true,
"vat_in_price":true,
"status":"executing",
"amount":"20000.0",
"total_vat":"0.0",
"previous_responsible_id":"2",
"created_at":"2022-02-22T12:22:22.222+03:00",
"updated_at":"2022-02-22T12:22:22.222+03:00",
"cached_at":"2022-02-22T12:22:22.222+03:00",
}
}
}
| JSON API type | store-operations |
| URL | /api/v1/store-operations |
| Список | GET /api/v1/store-operations |
| Чтение | GET /api/v1/store-operations/{id} |
| Создание | POST /api/v1/store-operations |
| Редактирование | PATCH /api/v1/store-operations/{id} |
| Удаление | DELETE /api/v1/store-operations/{id} |
| Провести | POST /api/v1/store-operations/{id}/execute |
| Отменить | POST /api/v1/store-operations/{id}/cancel |
Атрибуты
| Имя | Тип | Пример | Запись | Описание |
|---|---|---|---|---|
| number | integer |
2 | да | Порядковый номер |
| kind | string |
order_supplier | да | Тип операции |
| description | text |
text | да | Описание |
| datetime | datetime |
2022-02-22T12:22:22.222+03:00 | да | От |
| overhead_costs | decimal |
0.0 | да | Накл. расходы |
| overhead_type | string |
amount | да | Тип накл. расходов |
| reservation_active | boolean |
false | да | Резерв |
| waiting_active | boolean |
true | да | Ожидание |
| vat_active | boolean |
true | да | НДС |
| vat_in_price | boolean |
true | да | Цена включает НДС |
| status | string |
executing | нет | Статус |
| amount | decimal |
20000.0 | нет | Сумма |
| total_vat | decimal |
20 | нет | Сумма НДС |
| executed_at | datetime |
2022-02-22T12:22:22.222+03:00 | нет | Проведено |
| canceled_at | datetime |
2022-02-22T12:22:22.222+03:00 | нет | Отменено |
| previous_responsible_id | integer |
2 | нет | Предыдущий ответственный |
Связи
| Название | Связь | JSON API type |
|---|---|---|
| Контрагент | contractor | companies, contacts |
| Ответственный | responsible | users |
| Организация | org_detail | org_details |
| Со склада | store | stores |
| На склад | to_store | stores |
| Грузополучатель | consignee | companies, contacts |
| Сделка | deal | deals |
| Основание | parent | store_operations |
| Счета | invoices | invoices |
| Позиции | store_positions | store_positions |
Фильтры
Выгрузить список складов продуктов созданных до определённой даты
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/store-positions" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created_at_gte]=2022.02.22 12:00"
| Фильтр | Описание | Пример |
|---|---|---|
| created_at_gte | Выгрузить операции созданные после указанного времени | filter[created_at_gte]=2022.02.22 12:00 |
| created_at_lte | Выгрузить операции созданные до указанного времени | filter[created_at_lte]=2022.02.22 12:00 |
| updated_at_gte | Выгрузить операции обновлённые после указанного времени | filter[updated_at_gte]=2022.02.22 12:00 |
| updated_at_lte | Выгрузить операции обновлённые до указанного времени | filter[updated_at_lte]=2022.02.22 12:00 |
| datetime_gte | Выгрузить операции с датой “От” после указанного времени | filter[datetime_at_gte]=2022.02.22 12:00 |
| datetime_lte | Выгрузить операции с датой “От” до указанного времени | filter[datetime_at_lte]=2022.02.22 12:00 |
| archived_at_gte | Выгрузить операции в архиве после указанного времени | filter[archived_at_gte]=2022.02.22 12:00 |
| archived_at_lte | Выгрузить операции в архиве до указанного времени | filter[archived_at_lte]=2022.02.22 12:00 |
| archived_at_null | Выгрузить операции не в архиве | filter[archived_at_null]=true |
| discarded_at_gte | Выгрузить операции в корзине после указанного времени | filter[discarded_at_gte]=2022.02.22 12:00 |
| discarded_at_lte | Выгрузить операции в корзине до указанного времени | filter[discarded_at_lte]=2022.02.22 12:00 |
| discarded_at_null | Выгрузить операции не в корзине | filter[discarded_at_null]=true |
| executed_at_gte | Выгрузить операции проведенные после указанного времени | filter[executed_at_gte]=2022.02.22 12:00 |
| executed_at_lte | Выгрузить операции проведенные до указанного времени | filter[executed_at_lte]=2022.02.22 12:00 |
| executed_at_null | Выгрузить не проведенные операции | filter[executed_at_null]=true |
| canceled_at_gte | Выгрузить операции отмененные после указанного времени | filter[canceled_at_gte]=2022.02.22 12:00 |
| canceled_at_lte | Выгрузить операции отмененные до указанного времени | filter[canceled_at_lte]=2022.02.22 12:00 |
| canceled_at_null | Выгрузить не отмененные операции | filter[canceled_at_null]=true |
| number | Выгрузить складские операции по определенному значению в number |
filter[number]=2 |
| kind | Выгрузить складские операции по определенному значению в kind |
filter[kind]=order_supplier |
| description | Выгрузить складские операции по определенному значению в description |
filter[description]=text |
| datetime | Выгрузить складские операции по определенному значению в datetime |
filter[datetime]=2022.02.22 12:00 |
| overhead_costs | Выгрузить складские операции по определенному значению в overhead_costs |
filter[overhead_costs]=0.0 |
| overhead_type | Выгрузить складские операции по определенному значению в overhead_type |
filter[overhead_type]=amount |
| reservation_active | Выгрузить складские операции по определенному значению в reservation_active |
filter[reservation_active]=true |
| waiting_active | Выгрузить складские операции по определенному значению в waiting_active |
filter[waiting_active]=true |
| vat_active | Выгрузить складские операции по определенному значению в vat_active |
filter[vat_active]=true |
| vat_in_price | Выгрузить складские операции по определенному значению в vat_in_price |
filter[vat_in_price]=true |
| status | Выгрузить складские операции по определенному значению в status |
filter[status]=executing |
| amount | Выгрузить складские операции по определенному значению в amount |
filter[amount]=2200.0 |
| total_vat | Выгрузить складские операции по определенному значению в total_vat |
filter[total_vat]=20 |
| previous_responsible_id | Выгрузить складские операции по определенному значению в previous_responsible_id |
filter[previous_responsible_id]=2 |
Создание заказа поставщику
Создание заказа поставщику
{
"data":{
"type":"store_operations",
"attributes":{
"kind":"order_supplier",
"datetime":"2022-02-22T12:22:22.222+03:00",
},
"relationships":{
"responsible":{
"data":{
"type":"users",
"id":"2"
}
},
"org_detail":{
"data":{
"type":"org_details",
"id":"2"
}
},
"to_store":{
"data":{
"type":"stores",
"id":"2"
}
},
"contractor":{
"data":{
"type":"companies",
"id":"2"
}
}
}
}
}
Создание приемки
Создание приемки
{
"data":{
"type":"store_operations",
"attributes":{
"kind":"acceptance",
"datetime":"2022-02-22T12:22:22.222+03:00",
},
"relationships":{
"responsible":{
"data":{
"type":"users",
"id":"2"
}
},
"org_detail":{
"data":{
"type":"org_details",
"id":"2"
}
},
"to_store":{
"data":{
"type":"stores",
"id":"2"
}
},
"contractor":{
"data":{
"type":"companies",
"id":"2"
}
}
}
}
}
Создание оприходования
Создание оприходования
{
"data":{
"type":"store_operations",
"attributes":{
"kind":"enter",
"datetime":"2022-02-22T12:22:22.222+03:00",
},
"relationships":{
"responsible":{
"data":{
"type":"users",
"id":"2"
}
},
"org_detail":{
"data":{
"type":"org_details",
"id":"2"
}
},
"to_store":{
"data":{
"type":"stores",
"id":"2"
}
}
}
}
}
Создание заказа покупателя
Создание заказа покупателя
{
"data":{
"type":"store_operations",
"attributes":{
"kind":"order_buyer",
"datetime":"2022-02-22T12:22:22.222+03:00",
},
"relationships":{
"responsible":{
"data":{
"type":"users",
"id":"2"
}
},
"org_detail":{
"data":{
"type":"org_details",
"id":"2"
}
},
"store":{
"data":{
"type":"stores",
"id":"2"
}
},
"contractor":{
"data":{
"type":"companies",
"id":"2"
}
},
"consignee":{
"data":{
"type":"contacts",
"id":"2"
}
},
"deal":{
"data":{
"type":"deals",
"id":"6"
}
},
"order":{
"data":{
"type":"orders",
"id":"2"
}
}
}
}
}
Создание отгрузки
Создание отгрузки
{
"data":{
"type":"store_operations",
"attributes":{
"kind":"shipping",
"datetime":"2022-02-22T12:22:22.222+03:00",
},
"relationships":{
"responsible":{
"data":{
"type":"users",
"id":"2"
}
},
"org_detail":{
"data":{
"type":"org_details",
"id":"2"
}
},
"store":{
"data":{
"type":"stores",
"id":"2"
}
},
"contractor":{
"data":{
"type":"companies",
"id":"2"
}
},
"consignee":{
"data":{
"type":"contacts",
"id":"2"
}
},
"deal":{
"data":{
"type":"deals",
"id":"2"
}
},
"order":{
"data":{
"type":"orders",
"id":"2"
}
}
}
}
}
Создание списания
Создание списания
{
"data":{
"type":"store_operations",
"attributes":{
"kind":"write_off",
"datetime":"2022-02-22T12:22:22.222+03:00",
},
"relationships":{
"responsible":{
"data":{
"type":"users",
"id":"2"
}
},
"org_detail":{
"data":{
"type":"org_details",
"id":"2"
}
},
"store":{
"data":{
"type":"stores",
"id":"2"
}
}
}
}
}
Дополнительные поля
Загрузка поля типа “текст”
curl "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data": {
"type": "custom_fields",
"attributes": {
"name": "Текстовое поле",
"resource_name": "companies",
"field_type": "text"
}
}
}
EOF
| JSON API type | custom-fields |
| URL | /api/v1/custom-fields |
| Список | GET /api/v1/custom-fields |
| Чтение | GET /api/v1/custom-fields/{id} |
| Создание | POST /api/v1/custom-fields |
| Редактирование | PATCH /api/v1/custom-fields/{id} |
| Удаление | DELETE /api/v1/custom-fields/{id} |
Атрибуты
Пример данных
{
"data": {
"id": "2",
"type": "custom_fields",
"attributes": {
"name": "Текстовое поле",
"resource_name": "companies",
"field_type": "text",
"params": {
"acts_like": "phone"
}
}
}
}
Основные атрибуты
| Имя | Тип | Пример | Создание | Изменение | Описание |
|---|---|---|---|---|---|
| name | string |
Дополнительное текстовое поле | Да | Да | Название поля |
| resource_name | string |
companies | Да | Нет | Тип ресурса (см. ниже) |
| field_type | string |
text | Да | Нет | Тип поля (см. ниже) |
| params | object |
{ "acts_like": "phone" } |
Да | Да | Доп. параметры (см. ниже) |
| required | boolean |
true | Да | Да | Обязательность |
| select_options | array |
["Апельсины", "Яблоки", "Груши"] |
Да | Да | Варианты для типа select |
| tree_options | array |
[{ "id": "1", "text": "A", "children": [{ "id": "2", "text": "B", "children": [] }] }] |
Да | Да | Варианты для типа tree |
Значения field-type
| Значение | Описание | Дополнительные параметры |
|---|---|---|
text |
Текст (адрес, телефон, e-mail, ссылка) | Да, см. ниже |
number |
Число (величина, сумма в валюте) | Да, см. ниже |
date |
Дата | Да, см. ниже |
select |
Список | Пока что недоступны при создании через API |
external_select |
Список (внешний источник) | Пока что недоступны при создании через API |
file |
Файл | Пока что недоступны при создании через API |
formula |
Формула | Пока что недоступны при создании через API |
rating |
Рейтинг | Пока что недоступны при создании через API |
relation |
Связь | Пока что недоступны при создании через API |
multiple_relation |
Множественная связь | Пока что недоступны при создании через API |
weight |
Расчетный список | Пока что недоступны при создании через API |
tree |
Дерево | Пока что недоступны при создании через API |
exchange_rate |
Курс валют | Пока что недоступны при создании через API |
sequence |
Нумератор | Пока что недоступны при создании через API |
timer |
Таймер | Пока что недоступны при создании через API |
Значения params для полей типа “Текст”
| Имя | Тип | Пример | Описание |
|---|---|---|---|
| acts_like | string | phone | Подвид поля, варианты: address, city, email, phone, region, text, url |
| multiple | boolean | true | Ввод нескольких значений, только для подвида phone |
| prefix | string | https:// | Префикс, только для подвида url |
| beauty_phone | boolean | true | Приводить телефоны к системному виду (+7 xxx xxx-xx-xx), только для подвида phone |
Значения params для полей типа “Число”
| Имя | Тип | Пример | Описание |
|---|---|---|---|
| only_integer | boolean | true | Только целые значения |
| extension | string | кг | Единица измерения |
| extension_type | string | unit | Тип единицы измерения, варианты: unit, currency, without_extension* |
*without_extension нужен для сброса единиц измерения при редактировании
Значения params для полей типа “Дата”
| Имя | Тип | Пример | Описание |
|---|---|---|---|
| with_time | boolean | true | Разрешать вводить время |
Связи
Каждая связь может быть включена в JSON ответ через параметр include, согласно
официальной спецификации JSON API Inclusion of Related Resources.
| Название | Связь | JSON API type |
|---|---|---|
| Категория | custom_field_category | custom_field_categories |
Фильтры
Выгрузить список полей для компаний
curl -G "https://1c-connector.app.synergycrm.ru/api/v1/custom-fields" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[resources]=companies"
| Фильтр | Описание | Пример |
|---|---|---|
| resources | Выгрузить дополнительные поля для конкретного ресурса | filter[resources]=companies |
| field_type | Тип поля (все типы см. выше в разделе “Значения field_type”) | filter[field_type]=text |
| name | Выгрузить дополнительное поле по названию | filter[name]=value |
| required | Выгрузить дополнительные поля, являющиеся обязательными | filter[required]=true |
Основные функции 1С
Состав заголовков в запросе (RuSyntax)
Функция ПолучитьЗаголовки() Экспорт
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization","Bearer <Ключ подключения>");
Заголовки.Вставить("Content-Type","application/vnd.api+json");
Возврат Заголовки;
КонецФункции
Состав заголовков в запросе (EnSyntax)
Function GetHeaders() Export
Headers = New Map;
Headers.Insert("Authorization","Bearer <KEY>");
Headers.Insert("Content-Type","application/vnd.api+json");
Return Headers
EndFunction
Парсер JSON пакета из результата http-запроса (RuSyntax)
Функция ПолучитьОтветJSON(Результат) Экспорт
РезультатСтрокой = Результат.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(РезультатСтрокой);
Попытка
Возврат ПрочитатьJSON(ЧтениеJSON);
Исключение
Возврат Новый Структура;
КонецПопытки;
КонецФункции
Парсер JSON пакета из результата http-запроса (EnSyntax)
Function GetJSON(Result) Export
ResultLine = Result.GetJSON();
ReadJSON = New ReadJSON;
ReadJSON.SetLine(ResultLine);
Try
Return ReadJSON(ReadJSON);
Except
Return New Structure;
EndTry;
EndFunction
Получение первого значения идентификатора объекта по строке адреса ресурса (RuSyntax)
/// (в том числе с использованием фильтрации), например "/api/v1/users?filter[last-name]=Иванов&filter[first-name]=Петр"
Функция ПолучитьИдентификатор(АдресРесурса) Экспорт
СоединениеHTTP = ПолучитьСоединение();
Заголовки = ПолучитьЗаголовки();
ЗапросHTTP = Новый HTTPЗапрос(АдресРесурса, Заголовки);
РезультатЗапроса = СоединениеHTTP.Получить(ЗапросHTTP);
Результат = ПолучитьОтветJSON(РезультатЗапроса);
если Результат.Свойство("data") Тогда
Для каждого Данные из Результат.data Цикл
Возврат Данные.id;
КонецЦикла;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Получение первого значения идентификатора объекта по строке адреса ресурса (EnSyntax)
/// (including the use of filtering), for example "/api/v1/users?filter[last-name]=Ivanov&filter[first-name]=Petr"
Function GetIdentifier(AddressResource) Export
ConnectionHTTP = GetConnection();
Headers = GetHeaders();
QueryHTTP = New HTTPQuery(AddressResource, Headers);
ResultRequest = ConnectionHTTP.Get(RequestHTTP);
Result = GetJSON(ResultQuery);
If Result.Property("data") Then
For each Data in Result.data Do
Return Data.id;
EndDo;
EndDo;
Return Undefined;
EndFunction
Отправка запроса в CRM (RuSyntax)
/// Выполняется отправка запроса в CRM: POST (для новых объектов) или PATCH (для уже существующих по ID) по
/// по сформированной строке JSON и адресу ресурса:
/// ОтправитьЗапрос("/api/v1/deals/", СтрокаJSON)
/// ОтправитьЗапрос("/api/v1/entity-products/", СтрокаJSON)
Функция ОтправитьЗапрос(АдресРесурса, СтрокаJSON, ID = Неопределено) Экспорт
СоединениеHTTP = ПолучитьСоединение();
Заголовки = ПолучитьЗаголовки();
Если ЗначениеЗаполнено(ID) Тогда
АдресРесурса= АдресРесурса+Формат(ID,"ЧГ=0");
КонецЕсли;
ЗапросHTTP = Новый HTTPЗапрос(АдресРесурса, Заголовки);
ЗапросHTTP.УстановитьТелоИзСтроки(СтрокаJSON);
Если ЗначениеЗаполнено(ID) Тогда
РезультатЗапроса = СоединениеHTTP.Изменить(ЗапросHTTP);
Иначе
РезультатЗапроса = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
КонецЕсли;
Результат = ПолучитьОтветJSON(РезультатЗапроса);
если Результат.Свойство("data") Тогда
///Здесь можем выполнять сохранение идентификатора объекта внутри конфигурации по полю Результат.data.id
Возврат Неопределено;
Иначе
Возврат РезультатЗапроса.ПолучитьТелоКакСтроку();
КонецЕсли;
КонецФункции
Отправка запроса в CRM (EnSyntax)
/// A request is sent to CRM: POST (for new objects) or PATCH (for existing ones by ID) by
/// by generated JSON string and resource address:
/// SendRequest("/api/v1/deals/", StringJSON)
/// SendRequest("/api/v1/entity-products/", StringJSON)
Function SendRequest(AddressResource, StringJSON, ID = Undefined) Export
ConnectionHTTP = GetConnection();
Headers = GetHeaders();
If ValueIsFilled(ID) Then
AddressResource = AddressResource+Format(ID, "ЧГ=0");
EndIf;
RequestHTTP = New HTTPRequest(AddressResource, Headers);
RequestHTTP.SetTr.SetString(StringJSON);
If ValueIsFilled(ID) Then
RequestResult = ConnectionHTTP.Edit(RequestHTTP);
Else
RequestResult = ConnectionHTTP.SendTransaction(RequestHTTP);
EndIf;
Result = GetJSON(RequestResult);
If Result.Property("data") Then
/// Here we can save the object identifier inside the configuration by the Result.data.id field
Return Undefined;
Else
Return RequestResult.GetBodyString();
EndIf;
EndFunction
Отправка данных (справочники) 1С
Отправка контакта из объекта 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция contacts(Объект) Экспорт
attributes = Новый Структура;
attributes.Вставить("first_name",Объект.Имя);
attributes.Вставить("last_name",Объект.Фамилие);
attributes.Вставить("middle_name",Объект.Отчество);
attributes.Вставить("description",Объект.Наименование);
Телефон = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица,ТекущаяДата(),Истина);
attributes.Вставить("general_phone",СокрЛП(Телефон));
МобильныйТелефон = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.МобильныйТелефонКонтактногоЛица,ТекущаяДата(),Истина);
attributes.Вставить("mobile_phone",СокрЛП(МобильныйТелефон));
Email = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.EmailКонтактногоЛица,ТекущаяДата(),Истина);
attributes.Вставить("email",СокрЛП(Email));
data = Новый Структура;
data.Вставить("type","contacts");
Если ЗначениеЗаполнено(Объект.Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/contacts/", РезультатJSON, Объект.Ид);
КонецФункции
Отправка контакта из объекта 1С с идентификатором Ид в его реквизите (EnSyntax)
Function contacts(Object) Export
attributes = New Structure;
attributes.Insert("first_name",Object.Name);
attributes.Insert("last_name",Object.LastName);
attributes.Insert("middle_name",Object.MiddleName);
attributes.Insert("description",Object.Description);
Phone = ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.ContactPhone,CurrentDate(),True);
attributes.Insert("general_phone",TrimAll(Phone));
MobilePhone = ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.ContactMobilePhone,CurrentDate(),True);
attributes.Insert("mobile_phone",TrimAll(MobilePhone));
Email = ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.EmailКонтактногоЛица,CurrentDate(),True);
attributes.Insert("email",TrimAll(Email));
data = New Structure;
data.Insert("type","contacts");
If ValueIsFilled(Object.Id) Then
data.Insert("id",Id);
EndIf;
data.Insert("attributes",attributes);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/contacts/", ResultJSON, Object.Id);
EndFunction
Отправка контрагента (клиента) из объекта 1С с идентификатором Ид в его реквизите и Массивом его контактов в МассивКонтактов (RuSyntax)
Функция companies(Объект, МассивКонтактов) Экспорт
customs = Новый Структура; /// передача структуры кастомных полей
customs.Вставить("custom_23915",СокрЛП(УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента,ТекущаяДата(),Истина)));
contacts = Новый Структура;
МассивДанныхКонтактов = Новый Массив;
Для каждого Контакт из МассивКонтактов Цикл
datacontacts = Новый Структура;
datacontacts.Вставить("type","contacts");
datacontacts.Вставить("id",Контакт.Ид);
МассивДанныхКонтактов.Добавить(datacontacts);
КонецЦикла;
Если ЗначениеЗаполнено(МассивДанныхКонтактов) Тогда
contacts.Вставить("data",МассивДанныхКонтактов);
КонецЕсли;
relationships = Новый Структура; /// структура связей клиента и контактов
Если ЗначениеЗаполнено(contacts) Тогда
relationships.Вставить("contacts",contacts);
КонецЕсли;
attributes = Новый Структура;
attributes.Вставить("customs",customs);
attributes.Вставить("name",СокрЛП(Объект.НаименованиеПолное));
attributes.Вставить("inn",СокрЛП(Объект.ИНН));
attributes.Вставить("kpp",СокрЛП(Объект.КПП));
Телефон = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента,ТекущаяДата(),Истина);
attributes.Вставить("general_phone",СокрЛП(Телефон));
Email = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.EmailКонтрагента,ТекущаяДата(),Истина);
attributes.Вставить("email",СокрЛП(Email));
ЮрАдрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект,Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента,ТекущаяДата(),Истина);
attributes.Вставить("address",СокрЛП(ЮрАдрес));
data = Новый Структура;
data.Вставить("type","companies");
Если ЗначениеЗаполнено(Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
data.Вставить("relationships",relationships);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/companies/", РезультатJSON, Объект.Ид);
КонецФункции
Отправка контрагента (клиента) из объекта 1С с идентификатором Ид в его реквизите и Массивом его контактов в МассивКонтактов (EnSyntax)
Function companies(Object, ArrayContacts) Export
customs = New Structure; /// Transferring the structure of custom fields
customs.Insert("custom_23915",TrimAll(ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.AddressCounterparty,CurrentDate(),True)));
contacts = New Structure;
ArrayDataContacts = New Array;
For Each Contact in ArrayContacts Do
datacontacts = New Structure;
datacontacts.Insert("type","contacts");
datacontacts.Insert("id",Contact.Id);
ArrayDataContacts.Add(datacontacts);
EndDo;
If ValueIsFilled(ArrayDataContacts) Then
contacts.Insert("data",ArrayDataContacts);
EndIf;
relationships = New Structure; /// The structure of client and contact relationships
If ValueIsFilled(contacts) Then
relationships.Insert("contacts",contacts);
EndIf;
attributes = New Structure;
attributes.Insert("customs",customs);
attributes.Insert("name",TrimAll(Object.Name));
attributes.Insert("inn",TrimAll(Object.TIN));
attributes.Insert("kpp",TrimAll(Object.CAT));
Phone = ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.PhoneCounterparty,CurrentDate(),True);
attributes.Insert("general_phone",TrimAll(Phone));
Email = ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.EmailCounterparty,CurrentDate(),True);
attributes.Insert("email",TrimAll(Email));
Address = ManageContactInformation.ObjectContactInformation(Object,Catalogs.TypesContactInformation.AddressCounterparty,CurrentDate(),True);
attributes.Insert("address",TrimAll(Address));
data = New Structure;
data.Insert("type","companies");
If ValueIsFilled(Id) Then
data.Insert("id",Id);
Endif;
data.Insert("attributes",attributes);
data.Insert("relationships",relationships);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/companies/", ResultJSON, Object.Id);
EndFunction
Отправка категории продуктов (в иерархии) из объекта 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция product_categories(Объект) Экспорт
ИдРодителя = Неопределено;
Если ЗначениеЗаполнено(Объект.Родитель) Тогда
ИдРодителя = Объект.Родитель.Ид;
КонецЕсли;
attributes = Новый Структура;
attributes.Вставить("name",СокрЛП(Объект.Наименование));
Если ЗначениеЗаполнено(ИдРодителя) Тогда
dataparent = Новый Структура;
dataparent.Вставить("type","product_categories");
dataparent.Вставить("id",ИдРодителя);
parent = Новый Структура;
parent.Вставить("data",dataparent);
relationships = Новый Структура;
relationships.Вставить("parent",parent);
КонецЕсли;
data = Новый Структура;
data.Вставить("type","product_categories");
Если ЗначениеЗаполнено(Объект.Ид) Тогда
data.Вставить("id",Объект.Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
Если ЗначениеЗаполнено(ИдРодителя) Тогда
data.Вставить("relationships",relationships);
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/product-categories/", РезультатJSON, Объект.Ид);
КонецФункции
Отправка категории продуктов (в иерархии) из объекта 1С с идентификатором Ид в его реквизите (EnSyntax)
Function product_categories(Object) Export
ParentId = Undefined;
If ValueIsFilled(Object.Parent) Then
ParentId = Object.Parent.Id;
EndIf;
attributes = New Structure;
attributes.Insert("name",TrimAll(Object.Name));
If ValueIsFilled(ParentId) Then
dataparent = New Structure;
dataparent.Insert("type","product_categories");
dataparent.Insert("id",ParentId);
parent = New Structure;
parent.Insert("data",dataparent);
relationships = New Structure;
relationships.Insert("parent",parent);
EndIf;
data = New Structure;
data.Insert("type","product_categories");
If ValueIsFilled(Object.Id) Then
data.Insert("id",Object.Id);
EndIf;
data.Insert("attributes",attributes);
If ValueIsFilled(ParentId) Then
data.Insert("relationships",relationships);
EndIf;
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/product-categories/", ResultJSON, Object.Id);
EndFunction
Отправка единиц измерений из объекта 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция product_units(Объект) Экспорт
attributes = Новый Структура;
attributes.Вставить("name",СокрЛП(Объект.Наименование));
data = Новый Структура;
data.Вставить("type","product_units");
Если ЗначениеЗаполнено(Объект.Ид) Тогда
data.Вставить("id",Объект.Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/product-units/", РезультатJSON, Объект.Ид);
КонецФункции
Отправка единиц измерений из объекта 1С с идентификатором Ид в его реквизите (EnSyntax)
Function product_units(Object) Export
attributes = New Structure;
attributes.Insert("name",TrimAll(Object.Name));
data = New Structure;
data.Insert("type","product_units");
If ValueIsFilled(Object.Id) Then
data.Insert("id",Object.Id);
EndIf;
data.Insert("attributes",attributes);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/product-units/", ResultJSON, Object.Id);
EndFunction
Отправка продуктов (номенклатуры) из объекта 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция products(Объект) Экспорт
Ид = Объект..Ид;
ИдРодителя = Объект.Родитель.Ид;
ИдЕдиницы = Объект.ЕдиницаИзмерения..Ид;
customs = Новый Структура; /// передача структуры кастомных полей
customs.Вставить("custom_23935",СокрЛП(Объект.НаименованиеПолное));
customs.Вставить("custom_23936",УправлениеСвойствами.ЗначениеСвойства(Объект,"КоличествоВКомплекте"));
attributes = Новый Структура;
attributes.Вставить("customs",customs);
attributes.Вставить("name",СокрЛП(Объект.Наименование));
attributes.Вставить("description",СокрЛП(Объект.Комментарий));
attributes.Вставить("code",СокрЛП(Объект.Код));
attributes.Вставить("vendor_code",СокрЛП(Объект.Артикул));
attributes.Вставить("is_service",?(Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга,Истина,Ложь));
attributes.Вставить("purchase_price",Объект.ЦенаЗакупки);
attributes.Вставить("selling_price",Объект.ЦенаПродажи);
attributes.Вставить("weight",Объект.Вес);
attributes.Вставить("vat",20);
datacategory = Новый Структура;
datacategory.Вставить("type","product_categories");
datacategory.Вставить("id",ИдРодителя);
category = Новый Структура;
category.Вставить("data",datacategory);
dataunits = Новый Структура;
dataunits.Вставить("type","product_units");
dataunits.Вставить("id",ИдЕдиницы);
units = Новый Структура;
units.Вставить("data",dataunits);
relationships = Новый Структура; /// структура связей продукта и категорий, продукта и единиц измерения
relationships.Вставить("category",category);
relationships.Вставить("unit",units);
data = Новый Структура;
data.Вставить("type","products");
Если ЗначениеЗаполнено(Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
data.Вставить("relationships",relationships);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/products/", РезультатJSON, Объект.Ид);
КонецФункции
Отправка продуктов (номенклатуры) из объекта 1С с идентификатором Ид в его реквизите (EnSyntax)
Function products(Object) Export
Id = Object..Id;
ParentId = Object.Parent.Id;
UnitId = Object.UnitMeasure..Id;
customs = New Structure; /// Transferring the structure of custom fields
customs.Insert("custom_23935",TrimAll(Object.Name));
customs.Insert("custom_23936",ManageProperties.ValueProperties(Object,"КоличествоВКомплекте"));
attributes = New Structure;
attributes.Insert("customs",customs);
attributes.Insert("name",TrimAll(Object.Name));
attributes.Insert("description",TrimAll(Object.Comment));
attributes.Insert("code",TrimAll(Object.Code));
attributes.Insert("vendor_code",TrimAll(Object.Item));
attributes.Insert("is_service",?(Object.NomenclatureType = Enums.NomenclatureType.Service,True,False));
attributes.Insert("purchase_price",Object.PurchasePrice);
attributes.Insert("selling_price",Object.SellingPrice);
attributes.Insert("weight",Object.Weight);
attributes.Insert("vat",20);
datacategory = New Structure;
datacategory.Insert("type","product_categories");
datacategory.Insert("id",ParentId);
category = New Structure;
category.Insert("data",datacategory);
dataunits = New Structure;
dataunits.Insert("type","product_units");
dataunits.Insert("id",UnitId);
units = New Structure;
units.Insert("data",dataunits);
relationships = New Structure; /// The structure of product and category, product and unit relationships
relationships.Insert("category",category);
relationships.Insert("unit",units);
data = New Structure;
data.Insert("type","products");
If ValueIsFilled(Id) Then
data.Insert("id",Id);
EndIf;
data.Insert("attributes",attributes);
data.Insert("relationships",relationships);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/products/", ResultJSON, Object.Id);
EndFunction
Отправка документов 1С
Отправка строки табличной части заказа (спецификация) (RuSyntax)
Функция entity_products(СтрокаПозиции, ИдСделки) Экспорт
Ид = Неопределено; /// идентификатор спецификации не хранится в 1С
attributes = Новый Структура;
attributes.Вставить("quantity",?(СтрокаПозиции.Количество>0,СтрокаПозиции.Количество,1));
attributes.Вставить("selling_price",?(СтрокаПозиции.Количество>0,СтрокаПозиции.Сумма/СтрокаПозиции.Количество,СтрокаПозиции.Сумма));
data = Новый Структура;
data.Вставить("type","entity_products");
Если ЗначениеЗаполнено(Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
dataentity = Новый Структура;
dataentity.Вставить("type","deals");
dataentity.Вставить("id",ИдСделки);
entity = Новый Структура;
entity.Вставить("data",dataentity);
dataproduct = Новый Структура;
dataproduct.Вставить("type","products");
dataproduct.Вставить("id",СтрокаПозиции.Номенклатура.Ид);
product = Новый Структура;
product.Вставить("data",dataproduct);
relationships = Новый Структура;
relationships.Вставить("entity",entity);
relationships.Вставить("product",product);
data.Вставить("relationships",relationships);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/entity-products/", РезультатJSON);
КонецФункции
Отправка строки табличной части заказа (спецификация) (EnSyntax)
function entity_products(LinePositions, IdDeal) Export
Id = Undefined; /// specification identifier is not stored in 1C
attributes = New Structure;
attributes.Insert("quantity",?(LinePositions.Quantity>0,LinePositions.Quantity,1));
attributes.Insert("selling_price",?(LinePositions.Quantity>0,LinePositions.Amount/LinePositions.Quantity,LinePositions.Amount));
data = New Structure;
data.Insert("type","entity_products");
Else ValueIsFilled(Id) Then
data.Insert("id",Id);
EndIf;
data.Insert("attributes",attributes);
dataentity = New Structure;
dataentity.Insert("type","deals");
dataentity.Insert("id",IdDeal);
entity = New Structure;
entity.Insert("data",dataentity);
dataproduct = New Structure;
dataproduct.Insert("type","products");
dataproduct.Insert("id",LinePositions.Nomenclature.Id);
product = New Structure;
product.Insert("data",dataproduct);
relationships = New Structure;
relationships.Insert("entity",entity);
relationships.Insert("product",product);
data.Insert("relationships",relationships);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/entity-products/", ResultJSON);
EndFunction
Отправка заказа (сделки) из ссылки 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция deals(Ссылка) Экспорт
Ид = Ссылка.Ид;
ИдКонтрагента = Ссылка.Контрагент.Ид;
ИдОтветственного = Ссылка.Менеджер.Ид;
customs = Новый Структура;
customs.Вставить("custom_23921",""+Ссылка.СостояниеЗаказа);
customs.Вставить("custom_23934",""+Ссылка.ДатаОтгрузки);
customs.Вставить("custom_23919",""+Ссылка.Номер);
customs.Вставить("custom_23920",""+Ссылка.Организация);
customs.Вставить("custom_23927",""+Ссылка.СтруктурнаяЕдиницаРезерв);
customs.Вставить("custom_23664",""+Ссылка.СпособДоставки);
customs.Вставить("custom_23924",""+Ссылка.ДополнительнаяИнформацияПоДоставке);
customs.Вставить("custom_23922",""+Ссылка.СлужбаДоставки);
customs.Вставить("custom_23925",""+Ссылка.ОжидаемаяДатаВручения);
customs.Вставить("custom_23926",""+Ссылка.ТипДенежныхСредств);
customs.Вставить("custom_23928",""+Ссылка.СтруктурнаяЕдиницаПродажи);
attributes = Новый Структура;
attributes.Вставить("customs",customs);
attributes.Вставить("description",СокрЛП(Ссылка.Комментарий));
attributes.Вставить("amount",Ссылка.СуммаДокумента);
attributes.Вставить("planned_at",Ссылка.ДатаОтгрузки);
attributes.Вставить("created_at",Ссылка.Дата);
datacompanies = Новый Структура;
datacompanies.Вставить("type","companies");
datacompanies.Вставить("id",ИдКонтрагента);
company = Новый Структура;
company.Вставить("data",datacompanies);
ИдентификаторОтветственного = Неопределено;
responsible = Новый Структура;
Если ЗначениеЗаполнено(ИдОтветственного) Тогда
dataresponsible = Новый Структура;
dataresponsible.Вставить("type","users");
dataresponsible.Вставить("id",ИдОтветственного);
responsible.Вставить("data",dataresponsible);
КонецЕсли;
relationships = Новый Структура;
relationships.Вставить("company",company);
Если ЗначениеЗаполнено(responsible) Тогда
relationships.Вставить("responsible",responsible);
КонецЕсли;
data = Новый Структура;
data.Вставить("type","deals");
Если ЗначениеЗаполнено(Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
data.Вставить("relationships",relationships);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
РезультатСделки = ОтправитьЗапрос("/api/v1/deals/", РезультатJSON, Ид);
///передача спецификаций
Для каждого СтрокаПозиции из Ссылка.Запасы Цикл
РезультатСпецификации = entity_products(СтрокаПозиции, Ид);
КонецЦикла;
Возврат РезультатСделки;
КонецФункции
Отправка заказа (сделки) из ссылки 1С с идентификатором Ид в его реквизите (EnSyntax)
Function deals(Link) Export
Id = Link.Id;
IdCounterparty = Link.Counterparty.Ид;
IdResponsible = Link.Responsible.Ид;
customs = New Structure;
customs.Insert("custom_23921",""+Link.StateOrder);
customs.Insert("custom_23934",""+Link.DateShip);
customs.Insert("custom_23919",""+Link.Number);
customs.Insert("custom_23920",""+Link.Organization);
customs.Insert("custom_23927",""+Link.StructuralUnitReserve);
customs.Insert("custom_23664",""+Link.MethodDelivery);
customs.Insert("custom_23924",""+Link.AdditionalDeliveryInformation);
customs.Insert("custom_23922",""+Link.ServiceDelivery);
customs.Insert("custom_23925",""+Link.ExpectedDate);
customs.Insert("custom_23926",""+Link.MoneyType);
customs.Insert("custom_23928",""+Link.StructuralUnitSales);
attributes = New Structure;
attributes.Insert("customs",customs);
attributes.Insert("description",TrimAll(Link.Commentary));
attributes.Insert("amount",Link.AmountDocument);
attributes.Insert("planned_at",Link.DateShip);
attributes.Insert("created_at",Link.Date);
datacompanies = New Structure;
datacompanies.Insert("type","companies");
datacompanies.Insert("id",IdCounterparty);
company = New Structure;
company.Insert("data",datacompanies);
IdentifierResponsible = Undefined;
responsible = New Structure;
If ValueIsFilled(IdResponsible) Then
dataresponsible = New Structure;
dataresponsible.Insert("type","users");
dataresponsible.Insert("id",IdResponsible);
responsible.Insert("data",dataresponsible);
EndIf;
relationships = New Structure;
relationships.Insert("company",company);
If ValueIsFilled(responsible) Then
relationships.Insert("responsible",responsible);
EndIf;
data = New Structure;
data.Insert("type","deals");
Если ValueIsFilled(Id) Then
data.Insert("id",Id);
EndIf;
data.Insert("attributes",attributes);
data.Insert("relationships",relationships);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
ResultDeal = SendRequest("/api/v1/deals/", ResultJSON, Id);
/// transmission of specifications
For Each LinePositions in Link.Stocks Do
ResultSpecifications = entity_products(LinePositions, Id);
EndDo;
Return ResultDeal;
EndFunction
Отправка оплаты по заказу из ссылки 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция payments(Ссылка) Экспорт
Ид = Ссылка.Ид;
ИдЗаказа = Ссылка.Заказ.Ид;
ИдКонтрагента = Ссылка.Контрагент.Ид;
ИдОрганизации = Ссылка.Организация.Ид;
attributes = Новый Структура;
attributes.Вставить("custom_number",СокрЛП(Ссылка.Номер)+"/"+СокрЛП(Ссылка.Заказ.Номер));
attributes.Вставить("amount",Ссылка.СуммаДокумента);
attributes.Вставить("purpose","Заказ "+СокрЛП(Ссылка.Заказ.Номер)+" от "+Формат(Ссылка.Заказ.Дата,"ДЛФ=Д"));
attributes.Вставить("description",""+Ссылка);
attributes.Вставить("operation_created_at",Ссылка.Дата);
attributes.Вставить("operation_accounted_at ",Ссылка.Дата);
Если НЕ ЗначениеЗаполнено(Ид) Тогда
attributes.Вставить("direction","income");
КонецЕсли;
attributes.Вставить("status","executed");
datapayer = Новый Структура;
datapayer.Вставить("type","companies");
datapayer.Вставить("id",ИдКонтрагента);
payer = Новый Структура;
payer.Вставить("data",datapayer);
deals = Новый Структура;
deals.Вставить("type","deals");
deals.Вставить("id",ИдЗаказа);
deal = Новый Структура;
deal.Вставить("data",deals);
dataorg = Новый Структура;
dataorg.Вставить("type","account_bank_details");
dataorg.Вставить("id",ИдОрганизации);
account_bank_detail = Новый Структура;
account_bank_detail.Вставить("data",dataorg);
relationships = Новый Структура;
relationships.Вставить("payer",payer);
relationships.Вставить("deal",deal);
relationships.Вставить("receiver_bank_detail",account_bank_detail);
data = Новый Структура;
data.Вставить("type","invoice_payments");
Если ЗначениеЗаполнено(Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
data.Вставить("relationships",relationships);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/invoice-payments/", РезультатJSON, Ид);
КонецФункции
Отправка оплаты по заказу из ссылки 1С с идентификатором Ид в его реквизите (EnSyntax)
Function payments(Link) Export
Id = Link.Id;
OrderId = Link.Order.Id;
CounterpartyId = Link.Counterparty.Id;
OrganizationalId = Link.Organization.Id;
attributes = New Structure;
attributes.Insert("custom_number",TrimAll(Link.Number)+"/"+TrimAll(Link.Order.Number));
attributes.Insert("amount",Link.AmountDocument);
attributes.Insert("purpose","Заказ "+TrimAll(Link.Order.Number)+" от "+Format(Link.Order.Data,"ДЛФ=Д"));
attributes.Insert("description",""+Link);
attributes.Insert("operation_created_at",Link.Data);
attributes.Insert("operation_accounted_at ",Link.Data);
If Not ValueIsFilled(Id) Then
attributes.Insert("direction","income");
EndIf;
attributes.Insert("status","executed");
datapayer = New Structure;
datapayer.Insert("type","companies");
datapayer.Insert("id",CounterpartyId);
payer = New Structure;
payer.Insert("data",datapayer);
deals = New Structure;
deals.Insert("type","deals");
deals.Insert("id",OrderId);
deal = New Structure;
deal.Insert("data",deals);
dataorg = New Structure;
dataorg.Insert("type","account_bank_details");
dataorg.Insert("id",OrganizationalId);
account_bank_detail = New Structure;
account_bank_detail.Insert("data",dataorg);
relationships = New Structure;
relationships.Insert("payer",payer);
relationships.Insert("deal",deal);
relationships.Insert("receiver_bank_detail",account_bank_detail);
data = New Structure;
data.Insert("type","invoice_payments");
If ValueIsFilled(Id) Then
data.Insert("id",Id);
EndIf;
data.Insert("attributes",attributes);
data.Insert("relationships",relationships);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/invoice-payments/", ResultJSON, Id);
EndFunction
Отправка счета по заказу из ссылки 1С с идентификатором Ид в его реквизите (RuSyntax)
Функция invoices(Ссылка) Экспорт
Ид = Ссылка.Ид;
ИдКонтрагента = Ссылка.Контрагент.Ид;
ИдЗаказа = Ссылка.ДокументОснование.Ид;
ИдОрганизации = Ссылка.Организация.Ид;
МассивПозиций = Новый Массив;
Для каждого СтрокаПозиции из Строка.Ссылка.ДокументОснование.Товары Цикл
position = Новый Структура;
position.Вставить("product_id",СтрокаПозиции.Номенклатура.Ид);
position.Вставить("name",""+СтрокаПозиции.Номенклатура);
position.Вставить("unit",""+СтрокаПозиции.Номенклатура.ЕдиницаИзмерения.Наименование);
position.Вставить("code",""+СтрокаПозиции.Номенклатура.Код);
position.Вставить("quantity",?(СтрокаПозиции.Количество>0,СтрокаПозиции.Количество,1));
position.Вставить("amount",?(СтрокаПозиции.Количество>0,СтрокаПозиции.Сумма/СтрокаПозиции.Количество,СтрокаПозиции.Сумма));
МассивПозиций.Добавить(position);
КонецЦикла;
attributes = Новый Структура;
attributes.Вставить("custom_number",СокрЛП(Ссылка.Номер));
attributes.Вставить("vat_kind","without");
attributes.Вставить("vat_rate",0);
attributes.Вставить("issued_at",Ссылка.Дата);
status = "not_paid";
balance = Ссылка.СуммаОплатыДокумента;
Если balance>0 И balance<Ссылка.СуммаДокумента Тогда
status = "partial";
ИначеЕсли balance<=0 Тогда
status = "paid";
КонецЕсли;
attributes.Вставить("status",""+status);
Если НЕ ЗначениеЗаполнено(Ид) Тогда
attributes.Вставить("positions",МассивПозиций); ///invoice-positions как позиции счета
КонецЕсли;
datapayer = Новый Структура;
datapayer.Вставить("type","companies");
datapayer.Вставить("id",ИдКонтрагента);
payer = Новый Структура;
payer.Вставить("data",datapayer);
dataorg = Новый Структура;
dataorg.Вставить("type","account_bank_details");
dataorg.Вставить("id",ИдОрганизации);
account_bank_detail = Новый Структура;
account_bank_detail.Вставить("data",dataorg);
deals = Новый Структура;
deals.Вставить("type","deals");
deals.Вставить("id",ИдЗаказа);
deal = Новый Структура;
deal.Вставить("data",deals);
relationships = Новый Структура;
relationships.Вставить("payer",payer);
relationships.Вставить("account_bank_detail",account_bank_detail);
relationships.Вставить("deal",deal);
data = Новый Структура;
data.Вставить("type","invoices");
Если ЗначениеЗаполнено(Ид) Тогда
data.Вставить("id",Ид);
КонецЕсли;
data.Вставить("attributes",attributes);
data.Вставить("relationships",relationships);
Результат = Новый Структура;
Результат.Вставить("data",data);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
РезультатJSON = ЗаписьJSON.Закрыть();
Возврат ОтправитьЗапрос("/api/v1/invoices/", РезультатJSON, Ид);
КонецФункции
Отправка счета по заказу из ссылки 1С с идентификатором Ид в его реквизите (EnSyntax)
Function invoices(Link) Export
Id = Link.Id;
OrderId = Link.Order.Id;
CounterpartyId = Link.Counterparty.Id;
OrganizationalId = Link.Organization.Id;
ArrayPositions = New Array;
For Each LinePositions in Line.Link.DocumentFoundation.Products Do
position = New Structure;
position.Insert("product_id",LinePositions.Nomenclature.Id);
position.Insert("name",""+LinePositions.Nomenclature);
position.Insert("unit",""+LinePositions.Nomenclature.UnitMeasure.Name);
position.Insert("code",""+LinePositions.Nomenclature.Code);
position.Insert("quantity",?(LinePositions.Quantity>0,LinePositions.Quantity,1));
position.Insert("amount",?(LinePositions.Quantity>0,LinePositions.Amount/LinePositions.Quantity,LinePositions.Amount));
ArrayPositions.Add(position);
EndDo;
attributes = New Structure;
attributes.Insert("custom_number",TrimAll(Link.Number));
attributes.Insert("vat_kind","without");
attributes.Insert("vat_rate",0);
attributes.Insert("issued_at",Link.Data);
status = "not_paid";
balance = Link.AmountPaidDocument;
If balance>0 And balance<Link.AmountDocument Then
status = "partial";
Else If balance<=0 Then
status = "paid";
EndIf;
attributes.Insert("status",""+status);
If Not ValueIsFilled(Id) Then
attributes.Insert("positions",ArrayPositions); ///invoice-positions as invoice positions
EndIf;
datapayer = New Structure;
datapayer.Insert("type","companies");
datapayer.Insert("id",CounterpartyId);
payer = New Structure;
payer.Insert("data",datapayer);
dataorg = New Structure;
dataorg.Insert("type","account_bank_details");
dataorg.Insert("id",OrganizationalId);
account_bank_detail = New Structure;
account_bank_detail.Insert("data",dataorg);
deals = New Structure;
deals.Insert("type","deals");
deals.Insert("id",OrderId);
deal = New Structure;
deal.Insert("data",deals);
relationships = New Structure;
relationships.Insert("payer",payer);
relationships.Insert("account_bank_detail",account_bank_detail);
relationships.Insert("deal",deal);
data = New Structure;
data.Insert("type","invoices");
If ValueIsFilled(Id) Then
data.Insert("id",Id);
EndIf;
data.Insert("attributes",attributes);
data.Insert("relationships",relationships);
Result = New Structure;
Result.Insert("data",data);
JSONWriter = New JSONWriter;
JSONWriter.SetString();
WriteJSON(JSONWriter, Result);
ResultJSON = JSONWriter.Close();
Return SendRequest("/api/v1/invoices/", ResultJSON, Id);
EndFunction
Получение данных в 1С из CRM (справочники)
Получает (обновляет или создает) контакт по структуре данных (RuSyntax)
Процедура ОбновитьСоздатьКонтакт(Данные)
Если ЗначениеЗаполнено(Данные.Ссылка) Тогда
ИскомыйОбъект = Данные.Ссылка.ПолучитьОбъект();
Иначе
ИскомыйОбъект = Справочники.КонтактныеЛицаПартнеров.СоздатьЭлемент();
КонецЕсли;
УстановитьПоле(ИскомыйОбъект, "Ид", Данные.id); /// запишем идентификатор объекта CRM в реквизит Ид
УстановитьПоле(ИскомыйОбъект, "Владелец", Данные.Владелец);
УстановитьПоле(ИскомыйОбъект, "Наименование", СокрЛП(Данные.Наименование));
Если ЗначениеЗаполнено(Данные.Телефон) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъект, Данные.Телефон, Справочники.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица); /// функция БСП
КонецЕсли;
Если ЗначениеЗаполнено(Данные.Email) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъект, Данные.Email, Справочники.ВидыКонтактнойИнформации.EmailКонтактногоЛица);
КонецЕсли;
Если ЗначениеЗаполнено(Данные.МобильныйТелефон) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъект, Данные.МобильныйТелефон, Справочники.ВидыКонтактнойИнформации.МобильныйТелефонКонтактногоЛица);
КонецЕсли;
Попытка
ИскомыйОбъект.Записать();
Исключение
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Получает (обновляет или создает) контакт по структуре данных (EnSyntax)
Procedure UpdateCreateContact(Data)
If ValueIsFilled(Data.Link) Then
SearchObject = Data.Link.GetObject();
Else
SearchObject = Catalogs.ContactPartners.CreateElement();
EndIf;
SetField(SearchObject, "Ид", Data.id); /// Write the identifier of the CRM object in the Ид detail
SetField(SearchObject, "Владелец", Data.Owner);
SetField(SearchObject, "Наименование", TrimAll(Data.Name));
If ValueIsFilled(Data.Phone) Then
ManageContactInformation.AddContactInformation(SearchObject, Data.Phone, Catalogs.TypesContactInformation.ContactPhone); /// BSP function
EndIf;
Else ValueIsFilled(Data.Email) Then
ManageContactInformation.AddContactInformation(SearchObject, Data.Email, Catalogs.TypesContactInformation.ContactEmail);
EndIf;
Else ValueIsFilled(Data.MobilePhone) Then
ManageContactInformation.AddContactInformation(SearchObject, Data.MobilePhone, Catalogs.TypesContactInformation.ContactMobilePhone);
EndIf;
Try
SearchObject.Write();
Except
GeneralPurpose.ReportToUser(ErrorDescription());
EndTry;
EndProcedure
Получает (обновляет или создает) контрагента (партнера) по структуре данных (RuSyntax)
Процедура ОбновитьСоздатьКонтрагента(Данные)
Если ЗначениеЗаполнено(Данные.Ссылка) Тогда
ИскомыйОбъект = Данные.Ссылка.ПолучитьОбъект();
Иначе
ИскомыйОбъект = Справочники.Партнеры.СоздатьЭлемент();
КонецЕсли;
УстановитьПоле(ИскомыйОбъект, "Ид", Данные.id); /// запишем идентификатор объекта CRM в реквизит Ид
УстановитьПоле(ИскомыйОбъект, "НаименованиеПолное", СокрЛП(Данные.НаименованиеПолное));
УстановитьПоле(ИскомыйОбъект, "Наименование", СокрЛП(Данные.Наименование));
УстановитьПоле(ИскомыйОбъект, "ОсновнойМенеджер", Данные.ОсновнойМенеджер);
УстановитьПоле(ИскомыйОбъект, "Клиент", Истина);
Если ЗначениеЗаполнено(Данные.Телефон) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъект, Данные.Телефон, Справочники.ВидыКонтактнойИнформации.ТелефонПартнера); /// функция БСП
КонецЕсли;
Если ЗначениеЗаполнено(Данные.Email) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъект, Данные.Email, Справочники.ВидыКонтактнойИнформации.EmailПартнера);
КонецЕсли;
Если ЗначениеЗаполнено(Данные.ФактАдрес) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъект, Данные.ФактАдрес, Справочники.ВидыКонтактнойИнформации.АдресПартнера);
КонецЕсли;
Попытка
ИскомыйОбъект.Записать();
Данные.Ссылка= ИскомыйОбъект.Ссылка;
Исключение
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки());
Возврат;
КонецПопытки;
МассивПолучатель = ПолучитьМассивОбъектов("/api/v1/companies/"+Данные.id+"/contacts"); /// получаем массив контактов данного контрагента
Если ЗначениеЗаполнено(МассивПолучатель) Тогда
Для каждого Строка из МассивПолучатель Цикл
ДанныеЗаписи = Новый Структура;
ДанныеЗаписи.Вставить("Наименование",СокрЛП(Строка.attributes.description));
ДанныеЗаписи.Вставить("Телефон",СокрЛП(Строка.attributes.general_phone));
ДанныеЗаписи.Вставить("МобильныйТелефон",СокрЛП(Строка.attributes.mobile_phone));
ДанныеЗаписи.Вставить("Email",СокрЛП(Строка.attributes.email));
ДанныеЗаписи.Вставить("Владелец",Данные.Ссылка);
ДанныеЗаписи.Вставить("Ссылка",ПолучитьОбъект(Строка.id));
ДанныеЗаписи.Вставить("id",Строка.id);
ОбновитьСоздатьКонтакт(ДанныеЗаписи);
КонецЦикла;
КонецЕсли;
КонтрагентСсылка = Данные.Ссылка.Контрагент; /// обрабатываем контрагента
Если ЗначениеЗаполнено(КонтрагентСсылка) Тогда
ИскомыйОбъектКонтрагент = КонтрагентСсылка.ПолучитьОбъект();
Иначе
ИскомыйОбъектКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
КонецЕсли;
УстановитьПоле(ИскомыйОбъект, "Ид", Данные.id); /// запишем идентификатор объекта CRM в реквизит Ид
УстановитьПоле(ИскомыйОбъектКонтрагент, "НаименованиеПолное", ИскомыйОбъект.НаименованиеПолное);
УстановитьПоле(ИскомыйОбъектКонтрагент, "Наименование", ИскомыйОбъект.Наименование);
УстановитьПоле(ИскомыйОбъектКонтрагент, "ИНН", СокрЛП(Данные.ИНН));
УстановитьПоле(ИскомыйОбъектКонтрагент, "КПП", СокрЛП(Данные.КПП));
УстановитьПоле(ИскомыйОбъектКонтрагент, "Партнер", Данные.Ссылка);
Если СтрДлина(ИскомыйОбъектКонтрагент.ИНН) > 10 Тогда
УстановитьПоле(ИскомыйОбъектКонтрагент, "ЮрФизЛицо", Перечисления.ЮрФизЛицо.ФизЛицо);
Иначе
УстановитьПоле(ИскомыйОбъектКонтрагент, "ЮрФизЛицо", Перечисления.ЮрФизЛицо.ЮрЛицо);
КонецЕсли;
Если ЗначениеЗаполнено(Данные.Телефон) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъектКонтрагент, Данные.Телефон, Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента); /// функция БСП
КонецЕсли;
Если ЗначениеЗаполнено(Данные.Email) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъектКонтрагент, Данные.Email, Справочники.ВидыКонтактнойИнформации.EmailКонтрагента);
КонецЕсли;
Если ЗначениеЗаполнено(Данные.ФактАдрес) Тогда
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ИскомыйОбъектКонтрагент, Данные.ФактАдрес, Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
КонецЕсли;
Попытка
ИскомыйОбъектКонтрагент.Записать();
Данные.Контрагент = ИскомыйОбъектКонтрагент.Ссылка;
Исключение
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Получает (обновляет или создает) контрагента (партнера) по структуре данных (EnSyntax)
Procedure UpdateCreateCounterparty(Data)
If ValueIsFilled(Data.Link) Then
SearchObject = Data.Link.GetObject();
Else
SearchObject = Catalogs.Counterparty.CreateElement();
EndIf;
SetField(SearchObject, "Ид", Data.id); /// Write the identifier of the CRM object in the Ид detail
SetField(SearchObject, "НаименованиеПолное", TrimAll(Data.FullName));
SetField(SearchObject, "Наименование", TrimAll(Data.Name));
SetField(SearchObject, "ОсновнойМенеджер", Data.Manager);
SetField(SearchObject, "Клиент", True);
If ValueIsFilled(Data.Phone) Then
ManageContactInformation.AddContactInformation(SearchObject, Data.Phone, Catalogs.TypesContactInformation.PhoneCounterparty); /// BSP function
EndIf;
Else ValueIsFilled(Data.Email) Then
ManageContactInformation.AddContactInformation(SearchObject, Data.Email, Catalogs.TypesContactInformation.EmailCounterparty);
EndIf;
Else ValueIsFilled(Data.Address) Then
ManageContactInformation.AddContactInformation(SearchObject, Data.Address, Catalogs.TypesContactInformation.AddressCounterparty);
EndIf;
Try
SearchObject.Write();
Data.Link = SearchObject.Link;
Except
GeneralPurpose.ReportToUser(ErrorDescription());
Return;
EndTry;
ArrayRecipient = GetArrayObjects("/api/v1/companies/"+Data.id+"/contacts"); /// Get an array of contacts of this counterparty
If ValueIsFilled(ArrayRecipient) Then
For Each String in ArrayRecipient Do
DataRecord = New Structure;
DataRecord.Insert("Наименование",TrimAll(String.attributes.description));
DataRecord.Insert("Телефон",TrimAll(String.attributes.general_phone));
DataRecord.Insert("МобильныйТелефон",TrimAll(String.attributes.mobile_phone));
DataRecord.Insert("Email",TrimAll(String.attributes.email));
DataRecord.Insert("Владелец",Data.Link);
DataRecord.Insert("Ссылка",GetObject(String.id));
DataRecord.Insert("id",String.id);
UpdateCreateContact(DataRecord);
EndDo;
EndDo;
CounterpartyLink = Data.Link.Counterparty; /// Process the counterparty
If ValueIsFilled(CounterpartyLink) Then
SearchObjectCounterparty = CounterpartyLink.GetObject();
Else
SearchObjectCounterparty = Catalogs.Counterparty.CreateElement();
EndIf;
SetField(SearchObject, "Ид", Data.id); /// Write the identifier of the CRM object in the Ид detail
SetField(SearchObjectCounterparty, "НаименованиеПолное", SearchObject.FullName);
SetField(SearchObjectCounterparty, "Наименование", SearchObject.Name);
SetField(SearchObjectCounterparty, "ИНН", TrimAll(Data.TIN));
SetField(SearchObjectCounterparty, "КПП", TrimAll(Data.CAT));
SetField(SearchObjectCounterparty, "Партнер", Data.Link);
If StrLen(SearchObjectCounterparty.TIN) > 10 Then
SetField(SearchObjectCounterparty, "ЮрФизЛицо", Enums.LegalPhysPerson.PhysPerson);
Else
SetField(SearchObjectCounterparty, "ЮрФизЛицо", Enums.LegalPhysPerson.LegalPerson);
EndIf;
If ValueIsFilled(Data.Phone) Then
ManageContactInformation.AddContactInformation(SearchObjectCounterparty, Data.Phone, Catalogs.TypesContactInformation.PhoneCounterparty); /// BSP function
EndIf;
If ValueIsFilled(Data.Email) Then
ManageContactInformation.AddContactInformation(SearchObjectCounterparty, Data.Email, Catalogs.TypesContactInformation.EmailCounterparty);
EndIf;
If ValueIsFilled(Data.Address) Then
ManageContactInformation.AddContactInformation(SearchObjectCounterparty, Data.Address, Catalogs.TypesContactInformation.AddressCounterparty);
EndIf;
Try
SearchObjectCounterparty.Write();
Data.Counterparty = SearchObjectCounterparty.Link;
Except
GeneralPurpose.ReportToUser(ErrorDescription());
EndTry;
EndProcedure
Получение документов 1С
Получает (обновляет или создает) сделку по структуре данных (RuSyntax)
Процедура ОбновитьСоздатьСделку(Данные)
Если ЗначениеЗаполнено(Данные.Ссылка) Тогда
ИскомыйОбъект = Данные.Ссылка.ПолучитьОбъект();
Иначе
ИскомыйОбъект = Документы.ЗаказКлиента.СоздатьДокумент();
КонецЕсли;
УстановитьПоле(ИскомыйОбъект, "Ид", Данные.id); /// запишем идентификатор объекта CRM в реквизит Ид
УстановитьПоле(ИскомыйОбъект, "СуммаДокумента", Данные.СуммаДокумента);
УстановитьПоле(ИскомыйОбъект, "Комментарий", Данные.Комментарий);
УстановитьПоле(ИскомыйОбъект, "Номер", Данные.НомерДокумента);
УстановитьПоле(ИскомыйОбъект, "Дата", Данные.ДатаДокумента);
УстановитьПоле(ИскомыйОбъект, "ДатаСогласования", Данные.ДатаСогласования);
ИскомыйОбъект.Организация = Константы.ОрганизацияПоУмолчанию.Получить();
ИскомыйОбъект.Склад = Константы.СкладПоУмолчанию.Получить();
ИскомыйОбъект.Приоритет = Справочники.Приоритеты.НайтиПоНаименованию("Средний", Истина);
ИскомыйОбъект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
ИскомыйОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту;
ИскомыйОбъект.СпособДоставки = Перечисления.СпособыДоставки.Самовывоз;
ИскомыйОбъект.ЦенаВключаетНДС = Истина;
ИскомыйОбъект.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
ИскомыйОбъект.Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован;
СтруктураПолучатель = ПолучитьДанныеОбъекта("/api/v1/deals/"+Данные.id+"/responsible"); /// получаем ответственного и по ФИО ищем в справочнике пользователей
Если ЗначениеЗаполнено(СтруктураПолучатель) Тогда
ФИО = СокрЛП(СтруктураПолучатель.attributes.last_name) + " " + СокрЛП(СтруктураПолучатель.attributes.first_name) + " " + СокрЛП(СтруктураПолучатель.attributes.middle_name);
Менеджер = Справочники.Пользователи.НайтиПоНаименованию(ФИО, Истина);
УстановитьПоле(ИскомыйОбъект, "Менеджер", Менеджер);
УстановитьПоле(ИскомыйОбъект, "Автор", Менеджер);
КонецЕсли;
СтруктураПолучатель = ПолучитьДанныеОбъекта("/api/v1/deals/"+Данные.id+"/company"); /// получаем контрагента
Если ЗначениеЗаполнено(СтруктураПолучатель) Тогда
ДанныеЗаписи = Новый Структура;
ДанныеЗаписи.Вставить("НаименованиеПолное",СокрЛП(СтруктураПолучатель.attributes.name));
ДанныеЗаписи.Вставить("Наименование",СокрЛП(СтруктураПолучатель.attributes.customs.custom_20980));
ДанныеЗаписи.Вставить("Телефон",СокрЛП(СтруктураПолучатель.attributes.general_phone));
ДанныеЗаписи.Вставить("Email",СокрЛП(СтруктураПолучатель.attributes.email));
ДанныеЗаписи.Вставить("ФактАдрес",СокрЛП(СтруктураПолучатель.attributes.address));
ДанныеЗаписи.Вставить("ИНН",СокрЛП(СтруктураПолучатель.attributes.inn));
ДанныеЗаписи.Вставить("КПП",СокрЛП(СтруктураПолучатель.attributes.kpp));
ДанныеЗаписи.Вставить("ОсновнойМенеджер",ИскомыйОбъект.Менеджер);
ДанныеЗаписи.Вставить("Контрагент",Неопределено);
ДанныеЗаписи.Вставить("Ссылка",ПолучитьСсылкуПоИд(СтруктураПолучатель.id, "Справочник.Партнеры"));
ДанныеЗаписи.Вставить("id",СтруктураПолучатель.id);
ОбновитьСоздатьКонтрагента(ДанныеЗаписи);
УстановитьПоле(ИскомыйОбъект, "Партнер", ДанныеЗаписи.Ссылка);
УстановитьПоле(ИскомыйОбъект, "Контрагент", ДанныеЗаписи.Контрагент);
КонецЕсли;
МассивПолучатель = ПолучитьМассивОбъектов("/api/v1/deals/"+Данные.id+"/entities-products");/// получаем табличную часть сделки
Если ЗначениеЗаполнено(МассивПолучатель) Тогда
ИскомыйОбъект.Товары.Очистить();
Для каждого Строка из МассивПолучатель Цикл
НовСтрока = ИскомыйОбъект.Товары.Добавить();
НовСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Строка.attributes.code)); /// получаем номенклатуру по коду
НовСтрока.Количество = Строка.attributes.quantity;
НовСтрока.КоличествоУпаковок = Строка.attributes.quantity;
НовСтрока.Сумма = Строка.attributes.total_amount;
НовСтрока.СуммаСНДС = Строка.attributes.total_amount;
НовСтрока.Цена = ?(НовСтрока.Количество>0,НовСтрока.Сумма/НовСтрока.Количество,НовСтрока.Сумма);
НовСтрока.Упаковка = НовСтрока.Номенклатура.ЕдиницаИзмерения;
НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
НовСтрока.СуммаНДС = НовСтрока.Сумма * 20 / 120;
НовСтрока.Содержание = Строка.attributes.description;
НовСтрока.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада;
НовСтрока.Склад = ИскомыйОбъект.Склад;
КонецЦикла;
КонецЕсли;
Попытка
ИскомыйОбъект.Записать();
Данные.Ссылка = ИскомыйОбъект.Ссылка;
Исключение
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Получает (обновляет или создает) сделку по структуре данных (EnSyntax)
Procedure UpdateCreateDeal(Data)
If ValueIsFilled(Data.Link) Then
SearchObject = Data.Link.GetObject();
Else
SearchObject = Documents.OrderCustomer.CreateDocument();
EndIf;
SetField(SearchObject, "Ид", Data.id); /// Write the identifier of the CRM object in the ID detail
SetField(SearchObject, "СуммаДокумента", Data.AmountDocument);
SetField(SearchObject, "Комментарий", Data.Commentary);
SetField(SearchObject, "Номер", Data.DocumentNumber);
SetField(SearchObject, "Дата", Data.DateDocument);
SetField(SearchObject, "ДатаСогласования", Data.DateAgreement);
SearchObject.Organization = Constants.DefaultOrganization.Get();
SearchObject.Store = Constants.DefaultStore.Get();
SearchObject.Priority = Catalogs.Priority.FindByDescription("Средний", True);
SearchObject.TaxationVAT = Enums.TaxationVatTypes.SaleTaxedVAT;
SearchObject.EconomicOperation = Enums.EconomicOperation.RealizationCustomer;
SearchObject.MethodDelivery = Enums.MethodDelivery.Pickup;
SearchObject.PriceIncludesVAT = True;
SearchObject.Currency = Constants.CurrencyRegulatedAccounting.Get();
SearchObject.Status = Enums.StatsOrderCustomers.Unconsented;
StructureRecipient = GetDataObject("/api/v1/deals/"+Data.id+"/responsible"); /// Get the person in charge and use his/her name to search for him/her in the user directory
If ValueIsFilled(StructureRecipient) Then
NAME = TrimAll(StructureRecipient.attributes.last_name) + " " + TrimAll(StructureRecipient.attributes.first_name) + " " + TrimAll(StructureRecipient.attributes.middle_name);
Manager = Catalogs.Users.FindByDescription(NAME, True);
SetField(SearchObject, "Менеджер", Manager);
SetField(SearchObject, "Автор", Manager);
EndIf;
StructureRecipient = GetDataObject("/api/v1/deals/"+Data.id+"/company"); /// Getting a counterparty
Если ValueIsFilled(StructureRecipient) Then
DataRecord = New Structure;
DataRecord.Insert("НаименованиеПолное",TrimAll(StructureRecipient.attributes.name));
DataRecord.Insert("Наименование",TrimAll(StructureRecipient.attributes.customs.custom_20980));
DataRecord.Insert("Телефон",TrimAll(StructureRecipient.attributes.general_phone));
DataRecord.Insert("Email",TrimAll(StructureRecipient.attributes.email));
DataRecord.Insert("ФактАдрес",TrimAll(StructureRecipient.attributes.address));
DataRecord.Insert("ИНН",TrimAll(StructureRecipient.attributes.inn));
DataRecord.Insert("КПП",TrimAll(StructureRecipient.attributes.kpp));
DataRecord.Insert("ОсновнойМенеджер",SearchObject.Manager);
DataRecord.Insert("Контрагент",Undefined);
DataRecord.Insert("Ссылка",GetLinkAid(StructureRecipient.id, "Справочник.Партнеры"));
DataRecord.Insert("id",StructureRecipient.id);
UpdateCreateContractor(DataRecord);
SetField(SearchObject, "Партнер", DataRecord.Link);
SetField(SearchObject, "Контрагент", DataRecord.Counterparty);
EndIf;
ArrayRecipient = GetArrayObjects("/api/v1/deals/"+Data.id+"/entities-products");/// Get the table part of the transaction
If ValueIsFilled(ArrayRecipient) Then
SearchObject.Products.Clear();
For each String in ArrayRecipient Do
NewString = SearchObject.Products.Add();
NewString.Nomenclature = Catalogs.Nomenclature.FindByCode(String.attributes.code)); /// Get nomenclature by code
NewString.Count = String.attributes.quantity;
NewString.CountPackages = String.attributes.quantity;
NewString.Amount = String.attributes.total_amount;
NewString.AmountVAT = String.attributes.total_amount;
NewString.Price = ?(NewString.Quantity>0,NewString.Amount/NewString.Quantity,NewString.Amount);
NewString.Package = NewString.Nomenclature.UnitMeasure;
NewString.RateVAT = Enums.RateVAT.VAT20;
NewString.AmountVAT = NewString.Amount * 20 / 120;
NewString.Contents = String.attributes.description;
NewString.OptionSecurity = Enums.OptionSecurity.FromStore;
NewString.Store = SearchObject.Store;
EndDo;
EndDo;
Try
SearchObject.Record();
Data.Link = SearchObject.Link;
Except
GeneralPurpose.ReportToUser(ErrorDescription());
EndTry;
EndProcedure
Получает (обновляет или создает) сделку по идентификатору CRM (RuSyntax)
Функция ЗагрузитьДокумент(Идентификатор) Экспорт
Если ЗначениеЗаполнено(Идентификатор) Тогда
СтруктураПолучатель = ПолучитьДанныеОбъекта("/api/v1/deals/"+Идентификатор);
Если ЗначениеЗаполнено(СтруктураПолучатель) Тогда
ДанныеЗаписи = Новый Структура;
ДанныеЗаписи.Вставить("СуммаДокумента",Число(СтруктураПолучатель.attributes.amount));
ДанныеЗаписи.Вставить("Комментарий",СокрЛП(СтруктураПолучатель.attributes.description));
ДанныеЗаписи.Вставить("НомерДокумента",СокрЛП(СтруктураПолучатель.attributes.name));
ДанныеЗаписи.Вставить("ДатаДокумента",ПреобразоватьДату(СтруктураПолучатель.attributes.created_at));
ДанныеЗаписи.Вставить("ДатаСогласования",ПреобразоватьДату(СтруктураПолучатель.attributes.planned_at));
ДанныеЗаписи.Вставить("Ссылка",ПолучитьСсылкуПоИд(СтруктураПолучатель.id, "Документ.ЗаказКлиента"));
ДанныеЗаписи.Вставить("id",СтруктураПолучатель.id);
ОбновитьСоздатьСделку(ДанныеЗаписи);
Возврат ДанныеЗаписи.Ссылка;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Получает (обновляет или создает) сделку по идентификатору CRM (EnSyntax)
Function DownloadDocument(Identifier) Export
If ValueIsFilled(Identifier) Then
StructureRecipient = GetDataObject("/api/v1/deals/"+Identifier);
If ValueIsFilled(StructureRecipient) Then
DataRecords = New New Structure;
DataRecords.Insert("СуммаДокумента",Number(StructureRecipient.attributes.amount));
DataRecords.Insert("Комментарий",TrimAll(StructureRecipient.attributes.description));
DataRecords.Insert("НомерДокумента",TrimAll(StructureRecipient.attributes.name));
DataRecords.Insert("ДатаДокумента",ConvertDate(StructureRecipient.attributes.created_at));
DataRecords.Insert("ДатаСогласования",ConvertDate(StructureRecipient.attributes.planned_at));
DataRecords.Insert("Ссылка",GetLinkAid(StructureRecipient.id, "Документ.ЗаказКлиента"));
DataRecords.Insert("id",StructureRecipient.id);
UpdateCreateDeak(DataRecords);
Return DataRecords.Link;
EndIf;
EndIf;
Return Undefined;
EndFunction
Получает (обновляет или создает) сделки с заданной даты модификации и числом страниц не более 50 (RuSyntax)
Процедура ЗагрузитьДокументы(ДатаЗагрузки) Экспорт
МассивДанных = ПолучитьМассивОбъектов("/api/v1/deals?filter[updated-at-gte]="+Формат(ДатаЗагрузки, "ДФ=""гггг.ММ.дд""")+"&page[size]=50");
Для каждого Данные из МассивОбъектов Цикл
ДанныеЗаписи = Новый Структура;
ДанныеЗаписи.Вставить("СуммаДокумента",Число(Данные.attributes.amount));
ДанныеЗаписи.Вставить("Комментарий",СокрЛП(Данные.attributes.description));
ДанныеЗаписи.Вставить("НомерДокумента",СокрЛП(Данные.attributes.name));
ДанныеЗаписи.Вставить("ДатаДокумента",ПреобразоватьДату(Данные.attributes.created_at));
ДанныеЗаписи.Вставить("ДатаСогласования",ПреобразоватьДату(Данные.attributes.planned_at));
ДанныеЗаписи.Вставить("Ссылка",ПолучитьСсылкуПоИд(Данные.id, "Документ.ЗаказКлиента"));
ДанныеЗаписи.Вставить("id",Данные.id);
ОбновитьСоздатьСделку(ДанныеЗаписи);
КонецЦикла;
КонецПроцедуры
Получает (обновляет или создает) сделки с заданной даты модификации и числом страниц не более 50 (EnSyntax)
Procedure DownloadDocuments(UploadDate) Export
ArrayData = GetArrayObjects("/api/v1/deals?filter[updated-at-gte]="+format(UploadDate, "ДФ=""гггг.ММ.дд""")+"&page[size]=50");
For Each Data in ArrayData Do
DataRecord = Новый Структура;
DataRecord.Insert("СуммаДокумента",Number(Data.attributes.amount));
DataRecord.Insert("Комментарий",TrimAll(Data.attributes.description));
DataRecord.Insert("НомерДокумента",TrimAll(Data.attributes.name));
DataRecord.Insert("ДатаДокумента",ConvertDate(Data.attributes.created_at));
DataRecord.Insert("ДатаСогласования",ConvertDate(Data.attributes.planned_at));
DataRecord.Insert("Ссылка",GetLinkAid(Data.id, "Документ.ЗаказКлиента"));
DataRecord.Insert("id",Data.id);
UpdateCreateDeal(DataRecord);
EndDo;
EndProcedure