Введение
Спасибо за выбор 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