HTTP-сервис АнД_Аналитика
HTTP-сервис предназначен для обмена аналитическими данными с 1С: получения списка проведенных документов за период, детальной выгрузки документов выбранного вида вместе с реквизитами, табличными частями и движениями, получения списка справочников и полной выгрузки выбранного справочника, а также создания платежного поручения по JSON-запросу.
Базовый адрес
Корневой URL сервиса в конфигурации: data.
Относительный путь публикации 1С:
/hs/data
Полный URL зависит от имени публикации и адреса сервера:
http(s)://<host>/<publication>/hs/data
Все методы возвращают JSON с заголовком:
Content-Type: application/json; charset=utf-8
Шаблоны HTTP-сервиса
| Шаблон | Метод | Назначение |
|---|---|---|
/intro |
GET |
Проверка доступности сервиса. |
/Documents/{BDate}/{EDate} |
GET |
Список проведенных документов за период и их количество. |
/ResultData/{BDate}/{EDate}/{NameDoc} |
GET |
Детальная выгрузка документа как структура JSON. |
/ResultJSON/{BDate}/{EDate}/{NameDoc} |
GET |
Детальная выгрузка документа как готовая строка JSON. |
/Catalogs |
GET |
Список справочников и количество активных элементов. |
/CatalogData/{NameCatalog} |
GET |
Полная выгрузка активных элементов заданного справочника. |
/PaymentOrder |
POST |
Создание платежного поручения по JSON-запросу. |
Общие параметры
Параметры периода передаются в пути URL:
| Параметр | Обязательный | Формат | Описание |
|---|---|---|---|
BDate |
Да | YYYY-MM-DD |
Начало периода. |
EDate |
Да | YYYY-MM-DD |
Окончание периода. |
NameDoc |
Да, для детальных методов | Строка | Имя объекта метаданных документа, например РеализацияТоваровУслуг. |
NameCatalog |
Да, для выгрузки справочника | Строка | Имя объекта метаданных справочника, например Контрагенты. |
Период проверяется сервисом:
BDateиEDateдолжны быть переданы и иметь форматYYYY-MM-DD.BDateне может быть большеEDate.NameDocне должен быть пустым и должен существовать вМетаданные.Документы.NameCatalogне должен быть пустым и должен существовать вМетаданные.Справочники.
Важно: по текущей реализации даты преобразуются в значения 1С без времени. Если в EDate передана дата 2026-04-25, фактическая верхняя граница периода будет 2026-04-25 00:00:00.
Проверка доступности
GET /hs/data/intro
Возвращает короткое описание сервиса.
Пример ответа:
{
"Интро": "Аналитические данные из 1с"
}
Список документов за период
GET /hs/data/Documents/{BDate}/{EDate}
Возвращает виды проведенных документов, по которым за период есть данные, и количество документов каждого вида.
Пример запроса:
GET /hs/data/Documents/2026-01-01/2026-01-31
Пример ответа:
{
"Документы": [
{
"Вид": "РеализацияТоваровУслуг",
"Количество": 12
},
{
"Вид": "ПоступлениеТоваровУслуг",
"Количество": 8
}
]
}
Особенности:
- В выборку попадают только проведенные документы.
- Виды документов с количеством
0в ответ не включаются. - Значение
Видиспользуется какNameDocв методах детальной выгрузки.
Детальная выгрузка документа как структура JSON
GET /hs/data/ResultData/{BDate}/{EDate}/{NameDoc}
Возвращает данные документов указанного вида за период. Сервис формирует структуру 1С и сериализует ее в JSON.
Пример запроса:
GET /hs/data/ResultData/2026-01-01/2026-01-31/РеализацияТоваровУслуг
Логическая форма ответа:
{
"remotes": [
{
"name": "entries-update",
"data": [
{
"ТипДокумента": "Реализация товаров и услуг",
"Реквизиты": {
"Дата": "2026-01-15T00:00:00",
"Номер": "000000001",
"Организация": {
"ВидОбъекта": "Справочник.Организации",
"Ссылка": "...",
"Представление": "Основная организация"
}
},
"ТабличныеЧасти": {
"Товары": [
{
"Номенклатура": {
"ВидОбъекта": "Справочник.Номенклатура",
"Ссылка": "...",
"Представление": "Товар 1"
},
"Количество": "10"
}
]
},
"Движения": {
"Хозрасчетный": [
{
"Период": "2026-01-15T00:00:00",
"Активность": "true",
"СчетДт": {
"ВидОбъекта": "ПланСчетов.Хозрасчетный",
"Ссылка": "...",
"Представление": "62.01"
},
"СчетКт": {
"ВидОбъекта": "ПланСчетов.Хозрасчетный",
"Ссылка": "...",
"Представление": "90.01.1"
},
"Сумма": "1000"
}
]
}
}
]
}
]
}
Если документов за период нет, возвращается пустой объект:
{}
Детальная выгрузка документа как готовая строка JSON
GET /hs/data/ResultJSON/{BDate}/{EDate}/{NameDoc}
Возвращает заранее собранную строку JSON для документов указанного вида. Метод предназначен для той же бизнес-задачи, что и ResultData, но формирует JSON текстом и может использоваться для более тяжелых выгрузок.
Пример запроса:
GET /hs/data/ResultJSON/2026-01-01/2026-01-31/РеализацияТоваровУслуг
Ожидайте ту же логическую структуру данных, что и у ResultData: корневой объект с массивом remotes, элементом entries-update и массивом документов в data.
Список справочников
GET /hs/data/Catalogs
Возвращает справочники, в которых есть активные элементы (ПометкаУдаления = Ложь), и количество таких элементов.
Метод не принимает параметры периода: справочники выгружаются без отбора по датам.
Пример запроса:
curl "http://<host>/<publication>/hs/data/Catalogs"
Пример ответа:
{
"Справочники": [
{
"Вид": "Контрагенты",
"Синоним": "Контрагенты",
"Количество": 125
}
]
}
Поля ответа:
| Поле | Описание |
|---|---|
Справочники |
Массив справочников, доступных для выгрузки. |
Вид |
Имя объекта метаданных справочника. Это значение передается как NameCatalog в шаблон /CatalogData/{NameCatalog}. |
Синоним |
Синоним справочника из метаданных 1С. |
Количество |
Количество элементов справочника без пометки удаления. |
Особенности:
- Справочники с количеством активных элементов
0в ответ не включаются. - Подсчет выполняется по каждому объекту
Метаданные.Справочники. - Удаленные элементы (
ПометкаУдаления = Истина) не учитываются.
Полная выгрузка справочника
GET /hs/data/CatalogData/{NameCatalog}
Возвращает активные элементы выбранного справочника вместе с реквизитами и табличными частями.
Параметр NameCatalog должен быть именем объекта из Метаданные.Справочники. Удобнее всего брать его из поля Вид, возвращаемого методом GET /hs/data/Catalogs.
Пример запроса:
GET /hs/data/CatalogData/Контрагенты
Пример вызова:
curl "http://<host>/<publication>/hs/data/CatalogData/Контрагенты"
Логическая форма ответа:
{
"remotes": [
{
"name": "entries-update",
"data": [
{
"ТипСправочника": "Контрагенты",
"Реквизиты": {
"Ссылка": {
"ВидОбъекта": "Справочник.Контрагенты",
"Ссылка": "...",
"Представление": "Контрагент 1"
},
"Код": "000000001",
"Наименование": "Контрагент 1"
},
"ТабличныеЧасти": {}
}
]
}
]
}
Если в справочнике нет активных элементов, возвращается пустой объект:
{}
Особенности выгрузки справочника:
- В выгрузку попадают только элементы без пометки удаления.
- Период не передается и не применяется.
- Стандартные поля
Ссылка,ПометкаУдаления,Код,Наименование,Родитель,Владелецдобавляются по возможностям конкретного справочника. - Табличные части выгружаются в объекте
ТабличныеЧасти; если табличных частей нет, возвращается пустой объект. - Значения
НеопределеноиNullв результирующей JSON-структуре заменяются пустой строкой. - Ссылочные значения возвращаются в порядке полей
ВидОбъекта,Ссылка,Представление.
Создание платежного поручения
POST /hs/data/PaymentOrder
Создает и записывает платежное поручение без проведения. В конфигурации используется доступный документ ПлатежноеПоручение; если его нет, сервис пробует ПлатежноеПоручениеИсходящее.
При создании сервис заполняет основные реквизиты документа из JSON, а также устанавливает доступные в конфигурации служебные реквизиты:
ВидОперации=Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику.ОчередностьПлатежа=5.
Тело запроса передается JSON-объектом:
{
"date": "2026-04-25",
"amount": 15000.5,
"paymentPurpose": "Оплата по счету 123",
"organization": {
"uid": "00000000-0000-0000-0000-000000000000",
"inn": "7700000000",
"kpp": "770001001"
},
"counterparty": {
"uid": "00000000-0000-0000-0000-000000000000",
"inn": "7800000000",
"kpp": "780001001"
},
"organizationBankAccount": {
"uid": "00000000-0000-0000-0000-000000000000",
"account": "40702810000000000001"
},
"counterpartyBankAccount": {
"uid": "00000000-0000-0000-0000-000000000000",
"account": "40702810000000000002"
},
"contract": {
"uid": "00000000-0000-0000-0000-000000000000",
"contractNumber": "123"
},
"ИННПолучателя": "7800000000",
"КПППолучателя": "780001001",
"ИННПлательщика": "7700000000",
"КПППлательщика": "770001001",
"СтатьяДвиженияДенежныхСредств": {
"uid": "00000000-0000-0000-0000-000000000000",
"code": "000000001",
"name": "Оплата поставщику"
},
"ВидПлатежа": "электронно",
"СтавкаНДС": "НДС20",
"СуммаНДС": 2500.08,
"Комментарий": "Создано через HTTP-сервис",
"Ответственный": {
"uid": "00000000-0000-0000-0000-000000000000",
"code": "000000001",
"name": "Иванов Иван Иванович"
},
"notificationRecipients": [
{
"name": "Иванов Иван Иванович",
"uid": "00000000-0000-0000-0000-000000000000"
}
]
}
Обязательные поля: date, amount, paymentPurpose, organization, counterparty, organizationBankAccount, counterpartyBankAccount.
Для ссылочных реквизитов можно передать uid. Если uid не передан, сервис ищет:
organizationиcounterpartyпоinnи, если передан,kpp.organizationBankAccountиcounterpartyBankAccountпоaccountи владельцу.contractпоcontractNumberи контрагенту.
Поле contract необязательное. Если оно передано, но договор не найден, сервис вернет 400.
Дополнительные реквизиты платежного поручения необязательные. Если поле передано, сервис валидирует тип/длину и заполняет одноименный реквизит документа:
| Поле JSON | Реквизит документа | Тип/ограничение | Правило заполнения |
|---|---|---|---|
ИННПолучателя |
ИННПолучателя |
Строка, до 12 символов | Записывается как строка. |
КПППолучателя |
КПППолучателя |
Строка, до 9 символов | Записывается как строка. |
ИННПлательщика |
ИННПлательщика |
Строка, до 12 символов | Записывается как строка. |
КПППлательщика |
КПППлательщика |
Строка, до 9 символов | Записывается как строка. |
СтатьяДвиженияДенежныхСредств |
СтатьяДвиженияДенежныхСредств |
Справочник.СтатьиДвиженияДенежныхСредств |
Ищется по uid, затем по code/Код, затем по name/Наименование. |
ВидПлатежа |
ВидПлатежа |
Строка, до 15 символов | Записывается как строка. |
СтавкаНДС |
СтавкаНДС |
Перечисления.СтавкиНДС |
Ищется по имени или синониму значения перечисления, например НДС20. |
СуммаНДС |
СуммаНДС |
Число | Передается JSON-числом, например 2500.08. |
Комментарий |
Комментарий |
Строка, до 500 символов | Записывается как строка. |
Ответственный |
Ответственный |
Справочник.Пользователи |
Ищется по uid, затем по code/Код, затем по name/Наименование. |
Для ссылочных дополнительных реквизитов можно передать объект:
{
"uid": "00000000-0000-0000-0000-000000000000",
"code": "000000001",
"name": "Наименование элемента"
}
Если uid передан, но элемент по нему не найден, сервис продолжит поиск по code/Код и name/Наименование. Если uid имеет некорректный формат UUID, сервис вернет ошибку.
Поле notificationRecipients необязательное. В него можно передать массив адресатов уведомления о созданном платежном поручении:
| Поле | Описание |
|---|---|
name |
Имя пользователя для читаемости запроса. При поиске сеансов не используется. |
uid |
Значение ИдентификаторПользователяИБ пользователя 1С. По нему сервис ищет активные сеансы и отправляет уведомление. |
Уведомление отправляется после успешной записи платежного поручения:
- серверный модуль
АнД_СлужбаОповещенийСерверпреобразуетuidадресатов в номера активных сеансов черезПолучитьСеансыИнформационнойБазы()и реквизитИдентификаторПользователяИБ; - уведомление отправляется событием
СозданиеПлатежногоПоручения.ВнешнийВызовтолько в найденные активные сеансы; - клиентский модуль
АнД_СлужбаОповещенийподключает обработчик события при начале работы системы и показывает пользователю сообщение; - в данные уведомления передаются
ДокументСсылка,ПредставлениеиНавигационнаяСсылка, полученная черезПолучитьНавигационнуюСсылку(); - если пользователь с указанным
uidне имеет активных сеансов, уведомление ему не отправляется; - ошибка отправки уведомления не отменяет создание платежного поручения и не меняет успешный HTTP-ответ.
Важно: uid в notificationRecipients - это не ссылка на справочник пользователей и не имя пользователя, а значение ИдентификаторПользователяИБ активного пользователя информационной базы.
Пример вызова с передачей ссылок по uid:
curl -X POST "http://<host>/<publication>/hs/data/PaymentOrder" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"date": "2026-04-25",
"amount": 15000.5,
"paymentPurpose": "Оплата по счету 123",
"organization": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"counterparty": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"organizationBankAccount": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"counterpartyBankAccount": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"contract": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"СтатьяДвиженияДенежныхСредств": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"СтавкаНДС": "НДС20",
"СуммаНДС": 2500.08,
"Ответственный": {
"uid": "00000000-0000-0000-0000-000000000000"
},
"notificationRecipients": [
{
"name": "Иванов Иван Иванович",
"uid": "00000000-0000-0000-0000-000000000000"
}
]
}'
Пример вызова без uid, с поиском объектов по бизнес-реквизитам:
curl -X POST "http://<host>/<publication>/hs/data/PaymentOrder" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"date": "2026-04-25",
"amount": 15000.5,
"paymentPurpose": "Оплата по счету 123",
"organization": {
"inn": "7700000000",
"kpp": "770001001"
},
"counterparty": {
"inn": "7800000000",
"kpp": "780001001"
},
"organizationBankAccount": {
"account": "40702810000000000001"
},
"counterpartyBankAccount": {
"account": "40702810000000000002"
},
"contract": {
"contractNumber": "123"
},
"ИННПолучателя": "7800000000",
"КПППолучателя": "780001001",
"ИННПлательщика": "7700000000",
"КПППлательщика": "770001001",
"СтатьяДвиженияДенежныхСредств": {
"code": "000000001",
"name": "Оплата поставщику"
},
"ВидПлатежа": "электронно",
"СтавкаНДС": "НДС20",
"СуммаНДС": 2500.08,
"Комментарий": "Создано через HTTP-сервис",
"Ответственный": {
"name": "Иванов Иван Иванович"
}
}'
Рекомендуемый вариант интеграции - передавать uid, если внешняя система хранит ссылки 1С. Поиск по ИНН/КПП, номеру счета и номеру договора удобен для первичной интеграции, но требует уникальности этих реквизитов в базе.
Успешный ответ:
HTTP/1.1 201 Created
{
"success": true,
"document": {
"type": "ПлатежноеПоручениеИсходящее",
"ref": "...",
"number": "0000-000001",
"date": "2026-04-25T00:00:00"
}
}
В успешном ответе возвращаются только данные созданного документа. Информация о доставке уведомления в ответ не включается: уведомление является дополнительным действием после записи документа.
Формат значений в детальной выгрузке
Внутри Реквизиты, ТабличныеЧасти и Движения значения передаются так:
- Простые типы (
Число,Строка,Дата,Булево) передаются как JSON-значения или как строковое представление, подготовленное сервисом. - Ссылочные значения передаются объектом с полями
ВидОбъекта,Ссылка,Представление. - Для перечислений в поле
Ссылкаиспользуется строковое значение перечисления. - Для регистра бухгалтерии
Хозрасчетныйформируется расширенный набор полей: счета Дт/Кт, субконто, организация, подразделения, суммы, количества и другие реквизиты движения.
Ошибки валидации
При ошибке входных параметров сервис возвращает HTTP 400 и JSON:
{
"success": false,
"error": "Описание ошибки"
}
Возможные ошибки:
Тело запроса не должно быть пустым.Тело запроса должно быть корректным JSON.Тело запроса должно быть JSON-объектом.Не передано обязательное поле <field>.Поле date должно быть в формате ГГГГ-ММ-ДД.Поле amount должно быть числом.Поле amount должно быть больше нуля.Поле <field> должно быть строкой.Длина поля <field> не должна превышать <N> символов.Поле СуммаНДС должно быть числом.Поле СтавкаНДС должно содержать имя или представление значения перечисления.Значение перечисления СтавкаНДС "<value>" не найдено.Элемент справочника СтатьиДвиженияДенежныхСредств не найден по переданным реквизитам.Элемент справочника Пользователи не найден по переданным реквизитам.Организация не найдена по переданным реквизитам.Контрагент не найден по переданным реквизитам.Банковский счет не найден по переданным реквизитам.Договор контрагента не найден по переданным реквизитам.Не передан обязательный параметр BDate.Не передан обязательный параметр EDate.Параметр BDate должен быть в формате ГГГГ-ММ-ДД.Параметр EDate должен быть в формате ГГГГ-ММ-ДД.Не удалось преобразовать параметры BDate и EDate в дату.Параметр BDate не может быть больше EDate.Не передан обязательный параметр NameDoc.Параметр NameDoc не должен быть пустым.Документ с именем "<NameDoc>" не найден в метаданных.Не передан обязательный параметр NameCatalog.Параметр NameCatalog не должен быть пустым.Справочник с именем "<NameCatalog>" не найден в метаданных.
Необработанные ошибки выполнения запроса или формирования данных возвращаются платформой 1С как серверная ошибка.
Рекомендованный сценарий использования
- Вызвать
GET /hs/data/intro, чтобы проверить доступность публикации. - Вызвать
GET /hs/data/Documents/{BDate}/{EDate}, чтобы получить список доступных видов документов и количество данных. - Для каждого нужного
ВидвызватьGET /hs/data/ResultJSON/{BDate}/{EDate}/{NameDoc}илиGET /hs/data/ResultData/{BDate}/{EDate}/{NameDoc}. - Вызвать
GET /hs/data/Catalogs, чтобы получить список доступных справочников и количество активных элементов. - Для каждого нужного
ВидвызватьGET /hs/data/CatalogData/{NameCatalog}. - Для создания платежного поручения подготовить JSON с датой, суммой, назначением платежа, организацией, контрагентом и банковскими счетами.
- Если нужно уведомить пользователей 1С, добавить в JSON массив
notificationRecipientsсuidпользователей ИБ. - Вызвать
POST /hs/data/PaymentOrder; при ответе201сохранитьdocument.refиdocument.numberна стороне внешней системы. - На стороне клиента обрабатывать
400как ошибку параметров или поиска ссылочных объектов, а пустой объект{}в методах выгрузки как отсутствие документов или элементов за выбранный отбор.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.199.13
Вступайте в нашу телеграмм-группу Инфостарт