Что это

Модуль «Интеграция с 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, привязка к компьютеру) и не отображается на страницах настроек.