NAV

Введение

Спасибо за выбор 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 да Факс
email 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 да ВКонтакте
facebook string facebook.com/domain да Facebook
linkedin string ru.linkedin.com/domain да Linked-in
odnoklassniki string ok.ru/domain да Одноклассники
instagram string instagram.com/domain да Instagram
twitter string twitter.com/domain да Twitter
whatsapp string wa.me/79876543211 да WhatsApp
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 Выгрузить контакты по определенному 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 да Факс  
email 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 Выгрузить компании по определенному 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 да Телефон (основной)
email 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 Выгрузить юридическое лицо аккаунта по определенному 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 Иванович да Отчество
email string test@mail.ru да Email
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
email Выгрузить пользователей по определенному 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