EXZOTRON knowledge base
ECOM TTelegram MMAX Вход
Умный инженер Exzotron knowledge
Здравствуйте. Задайте вопрос по оборудованию, настройке или документации Exzotron.

Памятка разработчику 1С: интеграция с EXZOTRON API для учета выдачи топлива

Памятка разработчику 1С: интеграция с EXZOTRON API для учета выдачи топлива

Документ описывает базовые методы EXZOTRON API, которые нужны для загрузки данных в 1С, получения операций выдачи топлива и управления RFID-картами: добавление, переименование, блокировка, лимиты, привязка к автомобилям и двойная идентификация.

Актуальная документация API:

  • Swagger UI: https://5g.exzotron.ru/swagger-ui/
  • OpenAPI JSON: https://5g.exzotron.ru/v3/api-docs

Базовый адрес:

https://5g.exzotron.ru

Все методы ниже находятся в префиксе /api/v1.

Схема обмена данными между 1С:УАТ и Exzotron: справочники, приходные накладные, накладные на перемещение и плановые путевые листы из 1С в Exzotron; реализация и перемещения по счётчику из Exzotron в 1С
Схема обмена данными между 1С:УАТ и Exzotron.

1. Авторизация#

API защищен стандартной авторизацией Spring Security. Для интеграции из 1С обычно используется один из вариантов:

  1. HTTP Basic Auth, если он разрешен для учетной записи.
  2. Авторизация через форму /login с сохранением cookie JSESSIONID.

CSRF в проекте отключен, поэтому отдельный CSRF-токен для POST/PUT/PATCH не нужен.

Права зависят от роли пользователя. Для управления картами обычно нужны ROLE_ADMIN или ROLE_ADVANCED_USER. Для чтения отчетов часто достаточно ROLE_USER, но часть методов доступна только администратору.

Пример проверки через curl с Basic Auth:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/get_products"

Пример через cookie-сессию:

curl -c cookies.txt -X POST "https://5g.exzotron.ru/login" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "username=login&password=password&lang=ru" curl -b cookies.txt "https://5g.exzotron.ru/api/v1/get_products"

2. Общий шаблон HTTP-запроса из 1С#

Функция ВыполнитьGET(Путь, Параметры = Неопределено) Экспорт Сервер = "5g.exzotron.ru"; Соединение = Новый HTTPСоединение(Сервер, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL); Если Параметры <> Неопределено Тогда Путь = Путь + "?" + Параметры; КонецЕсли; Запрос = Новый HTTPЗапрос(Путь); Запрос.Заголовки.Вставить("Accept", "application/json"); // Вариант 1: Basic Auth // СтрокаАвторизации = "login:password"; // Запрос.Заголовки.Вставить("Authorization", "Basic " + Base64Строка(СтрокаАвторизации)); // Вариант 2: cookie после логина // Запрос.Заголовки.Вставить("Cookie", "JSESSIONID=" + ИдентификаторСессии); Ответ = Соединение.Получить(Запрос); Если Ответ.КодСостояния < 200 Или Ответ.КодСостояния >= 300 Тогда ВызватьИсключение "Ошибка EXZOTRON API: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТелоКакСтроку(); КонецЕсли; ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); Возврат ПрочитатьJSON(ЧтениеJSON); КонецФункции

Для POST, PUT, PATCH JSON передается в тело запроса:

Функция ВыполнитьJSON(Метод, Путь, Данные) Экспорт Соединение = Новый HTTPСоединение("5g.exzotron.ru", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Данные); Тело = ЗаписьJSON.Закрыть(); Запрос = Новый HTTPЗапрос(Путь); Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8"); Запрос.Заголовки.Вставить("Accept", "application/json"); Запрос.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8); Если Метод = "POST" Тогда Ответ = Соединение.ОтправитьДляОбработки(Запрос); ИначеЕсли Метод = "PUT" Тогда Ответ = Соединение.Записать(Запрос); ИначеЕсли Метод = "PATCH" Тогда Ответ = Соединение.ВызватьHTTPМетод("PATCH", Запрос); КонецЕсли; Если Ответ.КодСостояния < 200 Или Ответ.КодСостояния >= 300 Тогда ВызватьИсключение "Ошибка EXZOTRON API: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТелоКакСтроку(); КонецЕсли; Возврат Ответ.ПолучитьТелоКакСтроку(); КонецФункции

3. Справочники, которые желательно загрузить в 1С#

Компании#

GET /api/v1/get_list_company_transformed

Назначение: получить список доступных компаний и их идентификаторы.

Основные поля ответа:

  • id - ID компании в EXZOTRON.
  • name, nameRu, nameEn - наименование.
  • telegram - Telegram ID пользователя/компании, часто нужен в старых API-методах как idUserTelegram.
  • utc, workFactUtc - часовой пояс.
  • rfidInsertStatus - тип RFID по умолчанию при добавлении.

Пример:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/get_list_company_transformed"

Виды топлива/продукты#

GET /api/v1/get_products

Назначение: получить виды продукта, по которым ведется учет.

Основные поля: id, name, nameRu, price.

Пример:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/get_products"

Модули ТРК / IMEI#

GET /api/v1/report_list_imei_current_user

Назначение: получить список модулей/объектов, доступных текущему пользователю.

Основные поля:

  • id - внутренний ID объекта.
  • imei - IMEI модуля.
  • name - наименование.
  • companyId - компания.
  • productId, productName - продукт/топливо.
  • divisionId, divisionName - подразделение.
  • trkTypeId, trkTypeName - тип ТРК.
  • status, licenseDate, lastReceivedPackageTime.

Пример:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/report_list_imei_current_user"

Типы RFID-карт/объектов#

GET /api/v1/object_rfid_type

Назначение: получить справочник типов RFID-объектов.

Из базы проекта используются типы:

ID Тип Назначение
1 Employee / Сотрудник Карта сотрудника/водителя
2 Vehicles / Автомобиль Карта автомобиля, используется для двойной идентификации
3 Capacity / Емкость Емкость
4 Provider / Поставщик Поставщик
5 Counterparty / Контрагент Контрагент
6 Operator / Оператор Оператор

Пример:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/object_rfid_type"

Типы лимитов#

GET /api/v1/get_limit_types

Назначение: получить справочник типов лимита. В карточке RFID также есть поле status:

status Значение
0 Лимитная
1 Безлимитная
2 Заблокированная

Пример:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/get_limit_types"

4. Загрузка RFID-карт в 1С#

Список RFID-карт#

GET /api/v1/rfid_list_api

Параметры:

Параметр Тип Обяз. Описание
idUserTelegram string да Telegram ID пользователя
idCompany string да ID компании
idProduct int да ID продукта/топлива

Пример:

curl -u "login:password" \ "https://5g.exzotron.ru/api/v1/rfid_list_api?idUserTelegram=123456&idCompany=10&idProduct=1"

Ответ приходит как объект с наборами obj1, obj2, ... В 1С его удобнее разбирать как соответствие и сохранять только нужные поля карты.

Для детальной карточки лучше использовать:

GET /api/v1/get_rfid_object?rfid=123456789&companyId=10&productId=1

Основные поля детальной карточки:

  • id - внутренний ID RFID-объекта.
  • rfid - номер карты.
  • name - имя карты.
  • typeId, typeName - тип RFID-объекта.
  • status - лимитная/безлимитная/заблокированная.
  • dailyLimit - суточный лимит.
  • balance - текущий баланс.
  • dailyBalance - остаток суточного лимита.
  • pinCode - PIN.
  • vehicleId, vehicleName - связанный автомобиль.
  • employeeId, employeeName - связанный сотрудник.
  • divisionId, divisionName - подразделение.
  • partnerId, partnerName - контрагент/партнер.
  • expireDate - срок действия.

5. Управление RFID-картами из 1С#

Добавить RFID-карту#

POST /api/v1/add_rfid

Тело JSON:

{ "idUserTelegram": "123456", "rfid": "1234567890", "name": "Иванов И.И.", "typeRfid": "1", "companyId": "10", "productId": "1" }

Пример:

curl -u "login:password" -X POST "https://5g.exzotron.ru/api/v1/add_rfid" \ -H "Content-Type: application/json" \ -d '{"idUserTelegram":"123456","rfid":"1234567890","name":"Иванов И.И.","typeRfid":"1","companyId":"10","productId":"1"}'

Примечание: в контроллере /add_rfid companyId и productId есть в DTO, но фактически метод опирается на текущего пользователя и его текущий продукт/подразделение. Если нужна жесткая привязка к компании/продукту, стоит согласовать использование /add_rfid_api или текущего контекста пользователя.

У /add_rfid_api (в отличие от большинства других мутирующих методов этого документа) нет проверки, что вызывающий пользователь действительно принадлежит переданной companyId — значение компании там доверяется телу запроса напрямую. Использовать эту разновидность стоит только из доверенного сервера интеграции, а не передавать companyId от конечного пользователя без своей проверки на стороне 1С.

Переименовать RFID-карту#

PUT /api/v1/set_name_rfid_tag_api

Параметры:

Параметр Тип Описание
companyId string ID компании
productId string ID продукта
rfid string Номер карты
name string Новое имя

Пример:

curl -u "login:password" -X PUT \ "https://5g.exzotron.ru/api/v1/set_name_rfid_tag_api?companyId=10&productId=1&rfid=1234567890&name=Иванов%20И.И."

Установить лимитная/безлимитная#

PUT /api/v1/set_rfid_type_limit

Параметры:

Параметр Тип Описание
idUserTelegram string Telegram ID пользователя
idCompany string ID компании
idProduct long ID продукта
rfid string Номер карты
limitType boolean Тип лимита

В коде обработки bulk-режима используется логика:

  • limitType=false - безлимитная карта.
  • limitType=true - лимитная карта.

Пример установки лимитной карты:

curl -u "login:password" -X PUT \ "https://5g.exzotron.ru/api/v1/set_rfid_type_limit?idUserTelegram=123456&idCompany=10&idProduct=1&rfid=1234567890&limitType=true"

Установить суточный лимит#

PUT /api/v1/set_day_limit

Параметры:

Параметр Тип Описание
idUserTelegram string Telegram ID пользователя
idCompany string ID компании
idProduct long ID продукта
rfid string Номер карты
limitDay string Суточный лимит, например 100 или 100.5

Пример:

curl -u "login:password" -X PUT \ "https://5g.exzotron.ru/api/v1/set_day_limit?idUserTelegram=123456&idCompany=10&idProduct=1&rfid=1234567890&limitDay=100"

Начислить топливо на баланс RFID-карты#

PATCH /api/v1/move_count_api

Параметры:

Параметр Тип Описание
idUserTelegram string Telegram ID пользователя
idCompany string ID компании
idProduct long ID продукта
rfid string Номер карты
count string Количество топлива

Возвращает строку с результатом/ID операции.

Пример:

curl -u "login:password" -X PATCH \ "https://5g.exzotron.ru/api/v1/move_count_api?idUserTelegram=123456&idCompany=10&idProduct=1&rfid=1234567890&count=250"

Сторнирование / списание с баланса. Отдельного метода «сторно» нет — count в PATCH /move_count_api принимает и отрицательные значения: положительное число начисляет топливо на баланс карты, отрицательное — списывает (сторнирует) ранее начисленное. Сервер не проверяет знак — проверка идёт только на достаточность баланса у оператора, который выполняет операцию.

Пример сторнирования 100 л, ранее ошибочно начисленных на карту:

curl -u "login:password" -X PATCH \
  "https://5g.exzotron.ru/api/v1/move_count_api?idUserTelegram=123456&idCompany=10&idProduct=1&rfid=1234567890&count=-100"

Заблокировать карту#

PATCH /api/v1/rfid_lock

Параметры:

Параметр Тип Описание
idUserTelegram string Telegram ID пользователя
rfid string Номер карты

Пример:

curl -u "login:password" -X PATCH \ "https://5g.exzotron.ru/api/v1/rfid_lock?idUserTelegram=123456&rfid=1234567890"

Разблокировать карту#

PATCH /api/v1/rfid_delock

curl -u "login:password" -X PATCH \ "https://5g.exzotron.ru/api/v1/rfid_delock?idUserTelegram=123456&rfid=1234567890"

Установить PIN#

PUT /api/v1/set_pin

curl -u "login:password" -X PUT \ "https://5g.exzotron.ru/api/v1/set_pin?companyId=10&productId=1&rfid=1234567890&pinCode=1234"

Установить подразделение карты#

PUT /api/v1/rfid/set_division

curl -u "login:password" -X PUT \ "https://5g.exzotron.ru/api/v1/rfid/set_division?productId=1&rfid=1234567890&divisionId=5"

Установить срок действия карты#

PUT /api/v1/rfid/set_expire_date

curl -u "login:password" -X PUT \ "https://5g.exzotron.ru/api/v1/rfid/set_expire_date?companyId=10&productId=1&rfid=1234567890&date=2026-12-31%2023:59:59"

Добавить RFID-карту (новый вариант, с явной компанией/продуктом)#

POST /api/v1/add_rfid_new

В отличие от /add_rfid, здесь companyId/productId реально используются (а не берутся из контекста текущего пользователя), и сервер дополнительно проверяет, что вызывающий пользователь действительно принадлежит указанной компании. Позволяет сразу указать привязку к автомобилю, подразделение, тип карты, статус и срок действия — без отдельных вызовов.

Тело JSON:

{
  "name": "Иванов И.И.",
  "companyId": 10,
  "productId": 1,
  "rfid": "1234567890",
  "vehicleId": null,
  "status": 0,
  "typeId": 1,
  "divisionId": null,
  "expireDate": null
}
Поле Тип Описание
name string Имя владельца карты
companyId int ID компании (обязателен, реально проверяется)
productId int ID вида топлива
rfid string Номер карты
vehicleId int, опц. Сразу привязать к автомобилю
status int 0 — активна, иное — по внутренней схеме статусов
typeId int Тип RFID-объекта (см. раздел 3, «Типы RFID-карт/объектов»)
divisionId int, опц. Подразделение
expireDate datetime, опц. Срок действия карты

Пример:

curl -u "login:password" -X POST "https://5g.exzotron.ru/api/v1/add_rfid_new" \
  -H "Content-Type: application/json" \
  -d '{"name":"Иванов И.И.","companyId":10,"productId":1,"rfid":"1234567890","typeId":1,"status":0}'

Добавить сразу несколько карт (пакетно)#

POST /api/v1/add_rfid_bulk

Принимает список карт построчно в одном текстовом поле — удобно для разовой загрузки готового списка без цикла из отдельных запросов /add_rfid. Формат строки (через запятую, поля после rfid — необязательны):

rfid,name,pin,mode,type_rfid,product

Поле По умолчанию Описание
rfid обязателен Только цифры
name = rfid Имя владельца
pin 0 PIN-код
mode 0 0 — без доп. действия, 1 — сделать безлимитной, 2 — сделать лимитной, 3 — сразу заблокировать
type_rfid 1 1–7, см. «Типы RFID-карт/объектов»
product 0 (текущий продукт пользователя) Допустимы только 0, 1, 2 или 9

Пример — добавить две карты, одну сразу лимитной:

curl -u "login:password" -X POST "https://5g.exzotron.ru/api/v1/add_rfid_bulk" \
  -H "Content-Type: application/json" \
  -d '{"text":"1234567890,Иванов И.И.,0,2,1\n0987654321,Петров П.П."}'

Ответ — список результатов по каждой строке (номер строки, распознанный текст, признак успеха, сообщение).

Привязать существующего сотрудника к RFID-карте#

Отдельного метода вида set_employee_id_to_rfid нет — привязка идёт через общий метод обновления карты:

PUT /api/v1/set_name_rfid_tag

Это не тот же метод, что /set_name_rfid_tag_api из раздела «Переименовать RFID-карту» — здесь компания и продукт берутся из контекста пользователя, чей логин/пароль передан в запросе (как и у /add_rfid), а не из параметров запроса. Метод многофункциональный: одним вызовом можно переименовать карту, задать суточный лимит, тип лимита, тип карты, склад и привязку к сотруднику/автомобилю — какие поля передать, то и обновится.

Параметр Тип Описание
idUserTelegram string Telegram ID пользователя, от имени которого выполняется запрос
rfid string Номер карты
pinCode int Обязателен, если передаётся employeeId — привязка сотрудника выполняется только когда оба параметра заданы одновременно; если PIN не меняется, передайте текущее значение (или 0)
employeeId int ID сотрудника для привязки
vehicleId, divisionId, partnerId, limitTypeId, status int, опц. Можно передать в том же вызове — см. соответствующие разделы этого документа

Пример:

curl -u "login:password" -X PUT \
  "https://5g.exzotron.ru/api/v1/set_name_rfid_tag?idUserTelegram=123456&rfid=1234567890&pinCode=0&employeeId=42"

Создать сотрудника и сразу привязать карту#

POST /api/v1/create_employee_from_rfid

Если сотрудника ещё нет в справочнике — создаёт его с ФИО из имени карты и сразу привязывает. Удобно, когда карта уже была заведена (например, синхронизирована), а сотрудника под неё завести отдельно не хочется.

curl -u "login:password" -X POST \
  "https://5g.exzotron.ru/api/v1/create_employee_from_rfid?companyId=10&productId=1&rfid=1234567890"

Ответ: {"employeeId": 42}.

Удалить RFID-карту#

DELETE /api/v1/delete_rfid

Удаление настоящее (запись пропадает из базы), а не просто блокировка. Работает только если по карте не было ни одной операции выдачи топлива — иначе сервер вернёт ошибку «Невозможно удалить карту по которой есть движения». Для карты с историей используйте блокировку (раздел «Заблокировать карту»), а не удаление.

Параметр Тип Описание
rfid string Номер карты

Пример:

curl -u "login:password" -X DELETE \
  "https://5g.exzotron.ru/api/v1/delete_rfid?rfid=1234567890"

6. Автомобили и двойная идентификация#

Двойная идентификация в EXZOTRON означает, что при выдаче топлива могут участвовать две RFID-метки:

  • rfid_tag1 / rfidUser - карта пользователя/водителя/сотрудника.
  • rfid_tag2 / rfidVehicle - карта автомобиля.
  • Дополнительно может быть rfid_tag3 / rfidRandomObject - произвольный объект.

В 1С для корректной загрузки двойной идентификации рекомендуется хранить:

  • справочник RFIDКарты: номер RFID, тип, статус, лимит, баланс;
  • справочник Автомобили: ID EXZOTRON, госномер, наименование, IMEI, RFID автомобиля;
  • связь RFIDКартаАвтомобиль: rfid, vehicleId, productId, companyId;
  • в документах выдачи топлива: rfidUser, rfidVehicle, vehicleId, vehicleName, imei.

Загрузить список автомобилей#

GET /api/v1/vehicle

Параметры:

Параметр Тип Обяз. Описание
companyId int нет ID компании. Если не передан, берется компания текущего пользователя
search string нет Поиск
control boolean нет Фильтр режима контроля

Пример:

curl -u "login:password" "https://5g.exzotron.ru/api/v1/vehicle?companyId=10"

Основные поля автомобиля:

  • id - ID автомобиля.
  • name, nameRu, nameEn - наименование.
  • licensePlate - госномер.
  • garageNumber - гаражный номер.
  • rfid - RFID автомобиля для двойной идентификации.
  • imei - IMEI объекта мониторинга.
  • divisionId, divisionName - подразделение.
  • companyId - компания.

Добавить автомобиль#

POST /api/v1/vehicle

Тело JSON:

{ "companyId": 10, "name": "КАМАЗ А123ВС", "licensePlate": "А123ВС777", "garageNumber": "42", "rfid": 987654321, "imei": "865513073778264", "divisionId": 5 }

Метод возвращает id созданного автомобиля.

Пример:

curl -u "login:password" -X POST "https://5g.exzotron.ru/api/v1/vehicle" \ -H "Content-Type: application/json" \ -d '{"companyId":10,"name":"КАМАЗ А123ВС","licensePlate":"А123ВС777","garageNumber":"42","rfid":987654321,"imei":"865513073778264","divisionId":5}'

Изменить автомобиль#

PUT /api/v1/vehicle

Передается объект Vehicle с заполненным id.

curl -u "login:password" -X PUT "https://5g.exzotron.ru/api/v1/vehicle" \ -H "Content-Type: application/json" \ -d '{"id":25,"companyId":10,"name":"КАМАЗ А123ВС","licensePlate":"А123ВС777","garageNumber":"42","rfid":987654321,"imei":"865513073778264","divisionId":5}'

Привязать автомобиль к RFID-карте#

PATCH /api/v1/set_vehicle_id_to_rfid

Параметры:

Параметр Тип Описание
vehicleId int ID автомобиля
productId int ID продукта
companyId int ID компании
rfid string Номер RFID-карты

Пример:

curl -u "login:password" -X PATCH \ "https://5g.exzotron.ru/api/v1/set_vehicle_id_to_rfid?vehicleId=25&companyId=10&productId=1&rfid=987654321"

Создать автомобиль и сразу привязать карту (короткий путь)#

POST /api/v1/create_vehicle_from_rfid

Заменяет шаги 1–3 сценария ниже одним вызовом, если карта уже создана с типом «Автомобиль»: берёт имя и RFID из самой карты, создаёт автомобиль и сразу привязывает.

curl -u "login:password" -X POST \
  "https://5g.exzotron.ru/api/v1/create_vehicle_from_rfid?companyId=10&productId=1&rfid=987654321"

Ответ: {"vehicleId": 25}.

Практический сценарий для 1С:

  1. Создать/обновить автомобиль через /api/v1/vehicle.
  2. Создать RFID-карту типа Vehicles, то есть typeRfid = "2".
  3. Привязать карту к автомобилю через /api/v1/set_vehicle_id_to_rfid.
  4. При загрузке операций сохранять и карту водителя, и карту автомобиля.

7. Отчеты и загрузка операций выдачи топлива#

Журнал операций по RFID-картам#

GET /api/v1/report_by_rfid

Параметры:

Параметр Тип Обяз. Описание
accounts string/list да RFID-карты. Можно передавать несколько значений
dateFrom string нет Начало периода
dateTo string нет Конец периода

Пример:

curl -u "login:password" \ "https://5g.exzotron.ru/api/v1/report_by_rfid?accounts=1234567890&accounts=987654321&dateFrom=2026-06-01%2000:00:00&dateTo=2026-06-02%2023:59:59"

Основные поля операции:

  • accountOperationId - ID операции.
  • operationLogId - ID записи журнала.
  • dateTime, operationDateTime - дата операции.
  • account - счет/RFID.
  • quantity - количество топлива.
  • debit, credit - движение по счету.
  • count, finalBalance - количество/остаток.
  • productId, product - продукт.
  • imei, objectName - ТРК/модуль.
  • rfidUser - RFID водителя/сотрудника.
  • rfidVehicle - RFID автомобиля.
  • rfidRandomObject - RFID произвольного объекта.
  • rfidName - имя RFID.
  • vehicleId, vehicleName, vehicleImei - автомобиль.
  • tankStart, tankEnd, tank - топливо в баке.
  • totalCounterIn, totalCounterOut, fuelCounter, totalAccount - счетчики.

Журнал транзакций по IMEI за период#

GET /api/v1/report_by_objects_income

Параметры:

Параметр Тип Обяз. Описание
imeis string/list нет IMEI объектов. Можно передавать несколько значений
dateFrom string нет Начало периода
dateTo string нет Конец периода

Пример:

curl -u "login:password" \ "https://5g.exzotron.ru/api/v1/report_by_objects_income?imeis=865513073778264&dateFrom=2026-06-01%2000:00:00&dateTo=2026-06-02%2023:59:59"

Для 1С это основной метод для загрузки фактических транзакций по ТРК/IMEI за период. Для двойной идентификации обязательно сохраняйте поля rfidUser, rfidVehicle, vehicleId, vehicleName.

8. Рекомендуемая последовательность обмена с 1С#

Первичная загрузка справочников#

  1. GET /api/v1/get_products - загрузить продукты/виды топлива.
  2. GET /api/v1/get_list_company_transformed - загрузить компании и определить companyId.
  3. GET /api/v1/object_rfid_type - загрузить типы RFID.
  4. GET /api/v1/get_limit_types - загрузить типы лимитов.
  5. GET /api/v1/report_list_imei_current_user - загрузить ТРК/IMEI.
  6. GET /api/v1/vehicle - загрузить автомобили.
  7. GET /api/v1/rfid_list_api или GET /api/v1/get_rfid_object - загрузить RFID-карты.

Регулярная загрузка операций выдачи топлива#

  1. Взять период обмена из регистра 1С, например последние 1-3 дня с перекрытием.
  2. Получить операции по IMEI: /api/v1/report_by_objects_income.
  3. Сопоставить операции по ключу operationLogId или accountOperationId.
  4. Обновить/создать документы выдачи топлива.
  5. Сохранить rfidUser, rfidVehicle, vehicleId, imei, quantity, dateTime, productId.

Управление картами из 1С#

  1. Добавить карту: /api/v1/add_rfid.
  2. Если это автомобильная карта: создать/найти автомобиль и привязать /api/v1/set_vehicle_id_to_rfid.
  3. Установить тип лимита: /api/v1/set_rfid_type_limit.
  4. Установить суточный лимит: /api/v1/set_day_limit.
  5. При необходимости установить PIN, подразделение, срок действия.
  6. При увольнении/выводе из эксплуатации блокировать карту через /api/v1/rfid_lock, а не удалять.

9. Минимальная модель данных в 1С#

Справочник ЭкзотронКомпании#

  • ИдентификаторEXZOTRON
  • Наименование
  • Telegram
  • UTC

Справочник ЭкзотронПродукты#

  • ИдентификаторEXZOTRON
  • Наименование
  • Цена

Справочник ЭкзотронRFIDКарты#

  • RFID
  • Наименование
  • Компания
  • Продукт
  • ТипКарты
  • Статус
  • СуточныйЛимит
  • Баланс
  • PIN
  • СрокДействия
  • Автомобиль
  • Сотрудник
  • Подразделение

Справочник ЭкзотронАвтомобили#

  • ИдентификаторEXZOTRON
  • Наименование
  • ГосНомер
  • ГаражныйНомер
  • RFIDАвтомобиля
  • IMEI
  • Подразделение

Документ/регистр ЭкзотронВыдачаТоплива#

  • ИдентификаторОперации
  • ИдентификаторЖурнала
  • ДатаОперации
  • IMEI
  • ОбъектТРК
  • Продукт
  • Количество
  • RFIDПользователя
  • RFIDАвтомобиля
  • Автомобиль
  • ОстатокДо
  • ОстатокПосле
  • Счетчики

10. Важные замечания для 1С-разработчика#

  • Даты передавайте URL-encoded, например 2026-06-01%2000:00:00.
  • Числа RFID храните строкой. Большие RFID-номера безопаснее не превращать в число 1С.
  • Для повторной загрузки операций используйте идемпотентность по operationLogId/accountOperationId.
  • Для двойной идентификации не ограничивайтесь полем account: в отчетах отдельно есть rfidUser и rfidVehicle.
  • Для автомобильных карт используйте тип RFID 2 и связь через /api/v1/set_vehicle_id_to_rfid.
  • Блокировка карты меняет доступ, но сохраняет историю операций. Это предпочтительнее удаления.
  • idUserTelegram берите из карточки компании/пользователя, если метод его требует.
  • Методы /api/v1/rfid_list_api, /api/v1/set_rfid_type_limit, /api/v1/set_day_limit, /api/v1/move_count_api дополнительно проверяют доступ к компании.

11. Короткая таблица методов#

Метод HTTP Назначение
/api/v1/get_list_company_transformed GET Компании
/api/v1/get_products GET Виды топлива
/api/v1/report_list_imei_current_user GET Модули ТРК / IMEI
/api/v1/object_rfid_type GET Типы RFID-карт
/api/v1/get_limit_types GET Типы лимитов
/api/v1/rfid_list_api GET Список RFID-карт
/api/v1/get_rfid_object GET Детальная RFID-карта
/api/v1/add_rfid POST Добавление RFID
/api/v1/set_name_rfid_tag_api PUT Переименование RFID
/api/v1/set_rfid_type_limit PUT Лимитная/безлимитная
/api/v1/set_day_limit PUT Суточный лимит
/api/v1/move_count_api PATCH Начисление топлива
/api/v1/rfid_lock PATCH Блокировка RFID
/api/v1/rfid_delock PATCH Разблокировка RFID
/api/v1/set_pin PUT PIN карты
/api/v1/rfid/set_division PUT Подразделение карты
/api/v1/rfid/set_expire_date PUT Срок действия карты
/api/v1/vehicle GET/POST/PUT/DELETE Автомобили
/api/v1/set_vehicle_id_to_rfid PATCH Привязка автомобиля к RFID
/api/v1/report_by_rfid GET Операции по RFID
/api/v1/report_by_objects_income GET Транзакции по IMEI
/api/v1/add_rfid_new POST Добавление RFID (с явной компанией/продуктом)
/api/v1/add_rfid_bulk POST Пакетное добавление RFID
/api/v1/delete_rfid DELETE Удаление RFID (только без движений)
/api/v1/set_name_rfid_tag PUT Универсальное обновление карты: имя, суточный лимит, тип лимита, тип карты, склад, привязка сотрудника/автомобиля
/api/v1/create_employee_from_rfid POST Создать сотрудника и привязать карту
/api/v1/create_vehicle_from_rfid POST Создать автомобиль и привязать карту