Что это
Модуль «Интеграция с 1С» отправляет данные из НомерОК в 1С и ничего не принимает. Какие данные передавать, выбирается галками. Приёмную часть (HTTP-сервис или обработку чтения файлов) в вашей конфигурации создаёт интегратор 1С; от версии платформы со стороны НомерОК ничего не зависит, проверяйте приёмник на тестовой базе вашей версии «1С:Предприятие 8.3».
Способы передачи
- HTTP. НомерОК делает POST на адрес из настроек (например,
https://сервер/база/hs/nomerok/data). Заголовки:Content-Type(JSON, XML или CSV),X-NomerOK-Datasetс названием набора,Authorization: Basic, если указан логин. Ответ 2xx считается подтверждением. - Файлы. В папку обмена кладутся файлы
nomerok_<набор>_<дата_время>.json|xml|csv; обработка 1С их забирает. - 1С забирает сама:
GET /x/onec/api?set=journal&since_id=Nс заголовкомAuthorization: Bearer <токен API>(токен в «Настройки → Интеграции»). Параметрsince_idработает только для журнала, остальные наборы запрашиваются за периодfromиto.
Повтор при сбое: приёмник должен быть идемпотентным
Если 1С ответила не 2xx или не ответила, данные не теряются. Журнал отправляется заново при следующей проверке (каждые N минут), суточные наборы повторяются каждые 15 минут, пока не уйдут. Если 1С записала данные, но ответ потерялся, придёт тот же набор: для журнала уникален id строки, остальные наборы заменяются целиком за указанный период.
Наборы данных
| Набор | Когда уходит | Поля строки |
|---|---|---|
journal | порциями, каждые N минут | id, time, plate, direction (entry или exit), allowed, confidence, guest, passage, type, color, make, comment, snapshot, clip |
stays | раз в сутки, за вчера | plate, comment, entered, left, minutes, on_site; с модулем «Парковка» ещё free и amount |
fees | раз в сутки, за вчера | как у stays, только стоянки с суммой или бесплатные по тарифу (нужен модуль «Парковка») |
onsite | раз в сутки | plate, comment, entered, since, stale |
whitelist | раз в сутки | plate, note, days, time_from, time_to, expires_at, vehicle_type, vehicle_color |
occupancy | раз в сутки | capacity, inside, free, full (нужен модуль «Парковка») |
ping | кнопка «Проверить соединение» | message, time; принимается как обычный успешный запрос |
Форматы
- JSON:
{"dataset": "journal", "generated": "...", "program": "НомерОК", "version": "...", "rows": [ ... ]}, кодировка UTF-8. - XML:
<Данные Набор="journal"><Строка поле="значение" ... /></Данные>, поля атрибутами. - CSV: разделитель «;», первая строка — заголовки, UTF-8 с BOM.
Время во всех наборах — строка «ДД.ММ.ГГГГ ЧЧ:ММ:СС» по часам компьютера с НомерОК.
Пример приёмника (HTTP-сервис 1С)
Пример не проверен на конкретной конфигурации: проверьте на тестовой базе. Создайте HTTP-сервис с корневым URL «nomerok», шаблоном URL «/data» и методом POST, опубликуйте базу с проверкой логина и пароля (те же, что в настройках НомерОК).
Функция ДанныеPOST(Запрос)
Набор = Запрос.Заголовки.Получить("x-nomerok-dataset");
Если Набор = Неопределено Тогда
Набор = Запрос.Заголовки.Получить("X-NomerOK-Dataset");
КонецЕсли;
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение, Ложь);
Чтение.Закрыть();
Если Набор = "journal" Тогда
Для Каждого Строка Из Данные.rows Цикл
// найти запись по Строка.id; нет — создать (идемпотентность)
КонецЦикла;
КонецЕсли;
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки("ok");
Возврат Ответ;
КонецФункцииВремя «ДД.ММ.ГГГГ ЧЧ:ММ:СС» превращается в дату так: Дата(Сред(С,7,4) + Сред(С,4,2) + Лев(С,2) + Сред(С,12,2) + Сред(С,15,2) + Сред(С,18,2)). Тот же текст описания можно скачать из программы: «Настройки → Интеграция с 1С → скачать».
Безопасность
Пароль 1С хранится в настройках программы в защищённом виде (Windows DPAPI, привязка к компьютеру) и не отображается на страницах настроек.