Протокол обмена
На данной странице описан протокол обмена информацией между Учетной системой (1С, другой программой или внешним сервисом) и Продуктом 1С:Сайт ЖКХ
Инициатором обмена всегда выступает Учетная система: обмен происходит путем выполнения определенного вида запросов к сайту по протоколу HTTP. При этом на сайт передаются или получаются данные в формате XML.
Такие же файлы администратор сайта может передавать или получать вручную через административный интерфейс.
Страница указана в описании (см Форматы файлов).
Общие положения
Учетная система должна отправлять свои запросы на адрес вида: http://<адрес сайта>/bitrix/admin/tszh_exchange.php
Данный адрес используется в решении 1С:Сайт ЖКХ по умолчанию. Он может отличаться, если необходимо использовать защищенный протокол HTTPS, а также в случае если используется модифицированный вариант обмена
К этому адресу добавляются GET-параметры в зависимости от типа запроса. Основными параметрами являются:
mode— обязательный для любого запроса параметр
Режим обмена. Может принимать значенияcheckauth,init,file,importилиexporttype— обязателен для всех запросов режимаexportилиimport
Определяет тип данных загружаемых или выгружаемых с сайта (подробнее об этом в разделах ниже).
Авторизация
Любой сеанс обмена всегда начинается запросом c параметром ?mode=checkauth и заголовком Authorization для выполнения Basic-аутентификации по протоколу HTTP.
В качестве логина и пароля для HTTP-авторизации указываются данные пользователя на сайте, имеющего достаточные права на импорт или экспорт данных (например, администратора).
На этот запрос сайт отвечает тремя строками (используется разделитель строк \n):
success
<имя cookie>
<значение cookie>
Внимание! Во всех последующих запросах к сайту необходимо будет передать это значение в заголовке Cookie (что это?).
Возможные варианты ответа сервера
В первой строке ответа сервер отправляет результат операции:
success— запрос обработан успешноfailure— при обработке произошла ошибкаwarning— запрос обработан, однако возникли предупреждения
Может возникать при запросах с параметром?mode=import
Файлы, переданные на сайт, могут содержать ошибки и неточности, такой ответ означает, что файл был обработан не полностью и нужно исправить данные на стороне Учетной системыprogress— для завершения необходимо повторить текущий запрос
На данный момент такой ответ можно получить только при запросах параметром с?mode=import.
Некоторые операции требуют достаточно длительного времени, из-за ограничений на стороне сервера они разбиваются на несколько «шагов». При получении такого ответа, Учетная система должна повторить текущий запрос для продолжения обработки.
Вторая и последующие строки содержат текст ответа (ошибки, предупреждения, текущего состояния или другие сообщения, которые можно показать пользователю).
Кодировка
На данный момент Продукт всегда отдает данные и сообщения в кодировке windows-1251.
Однако, рекомендуется ориентироваться на кодировку и тип содержимого, указанные в заголовкеContent-Typeответа сервера — возможны внештатные ситуации, когда в ответ будет получено неожиданное содержимое (пользвоателем указан неверный адрес сервера, сервер временно недоступен, ответ содержит ошибки и т.п.)
Тип содержимого указывается в заголовке ответа
Content-Typeи может принимать следующие значения:
text/plain; charset=<кодировка>для всех вариантов ответа, описанных вышеapplication/xml; charset=<кодировка>в случае успешных ответов на запросы выгрузки данных (с параметром?mode=export)text/htmlилиtext/html; charset=<кодировка>в случае непредвиденных ошибок (внештатных ситуаций)
Для запросов с ?mode=export в случае успешной выгрузки, в ответ посылается содержимое файла выгрузки в формате XML. (см. Форматы обмена), в виде исключения первая строка со словом success при этом режиме опускается.
Для запроса с ?mode=checkauth текст ответа содержит имя и значение Cookie для авторизации (см. Авторизация), либо сообщение об ошибке.
Загрузка данных
Если в процессе обмена предполагается загрузка файлов обмена на сайт, после Авторизации должен следовать обязательный запрос с параметром ?mode=init
В ответ на него возвращается строка: file_limit=<число>, где <число> — максимально допустимый размер данных в байтах для передачи за один запрос. Если размер файла больше, он должен быть разбит на части, и передаваться в несколько запросов, каждый из которых будет дописывать данные к ранее переданным.
Процесс загрузки данных происходит в два этапа: передачи и обработки.
Общие требования к XML-файлам
Стандарт XML не допускает использования в текстовых данных непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением символов с кодами 9, 10, 13 — табуляция, перевод строки, возврат каретки). Это требует обязательной замены некоторых символов на эквивалентные им символьные коды:
Символ в тексте Код для XML-файла ""&&>><<''Допустимы кодировки
UTF-8иwindows-1251.Все элементы должны иметь открывающие и закрывающие теги. Если элемент не содержит значения или других элементов, правильной будет такая запись:
<tag />Порядок следования элементов имеет значение: они должны указываться в порядке описанном в примерах файлов
Атрибуты обязательно должны быть разделены пробелом, а их значения заключены в открывающие и закрывающие кавычки.
Недопустимо:
<tag attribute1="example"attribute="example2" /><tag attribute1="example />Правильная запись:
<tag attribute1="example" attribute="example2" />
Передача файлов
Для этого отправляется запрос с параметрами ?mode=file&filename=<имя файла>.
filename— имя загружаемого файла (регистр имеет значение)
Содержимое файла в виде данных POST-запроса (в исходном виде). В случае успешной записи файла сайт выдает строку success. Большие файлы (превышающие максимально допустимый размер данных) должны последовательно загружаться путём выполнения нескольких запросов с очередной частью файла.
Загрузка файлов
После передачи файлов производится пошаговая загрузка данных запросом с параметрами ?mode=import&type=<тип>&filename=<имя файла>&inn=<ИНН организации>.
type— тип загружаемого файла. Может принимать значения:accounts— Данные лицевых счетовpayments— Сведения о принятых платежах и задолженности
inn— ИНН организации, которой принадлежат данные из файла
Должен соответствовать ИНН одного из Объектов управления, существующих на сайтеfilename— имя ранее загруженного файла (регистр имеет значение)
Для обработки файла может потребоваться несколько запросов (см. Возможные варианты ответов сервера).
Важно! Двойные кавычки (
") в значениях атрибутов, символы<и>внутри тегов обязательно должны заменяться на соответствующие XML-сущности.
Получение данных
Получение данных с сайта производится после (авторизации)[#Общие-положения_Авторизация] запросом с параметрами ?mode=export&type=<тип>&inn=<ИНН организации>.
type— тип выгружаемых дынных. Может принимать значения:meters— Текущие показания счетчиковtickets— Обращения в Аварийно-диспетчерскую службуaccexistence— Cведения об аккаунтахpayments— Принятые на сайте платежи
inn— ИНН организации, данные которой требуется получить
Должен соответствовать ИНН одного из Объектов управления, существующих на сайте
При получении данных также могут обрабатываться дополнительные параметры в зависимости от типа выгружаемых данных. Перечень таких параметров можно найти на страницах с описанием формата этих данных.
В отличие от [загрузки данных](#Загрузка данных), выгрузка происходит в один запрос, в результате которого будет возвращены данные, либо сообщение об ошибке. Смотрите также: Возможные варианты ответа сервера.
На данный момент выгружаемые файлы всегда имеют кодировку windows-1251, однако рекомендуется определять кодировку на основании заголовка
Content-Type, либо содержимогоXML-файла
← ↖ Форматы файлов →