HTTP-сервис: запросы, метаданные и запись объектов из внешней системы

17.09.26

Разработка - Инструментарий разработчика

Готовый модуль HTTP-сервиса платформы: внешняя программа передаёт JSON, база выполняет запрос или записывает объект и возвращает результат таблицей. В статье — контракт, установка, примеры вызова, сериализация ссылок и обязательные ограничения по безопасности.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
HTTP-сервис: Модуль HTTP-Сервиса
.bsl 34,84Kb
2 2 500 руб. Купить
HTTP-сервис: Подробная инструкция подключения, ошибки и их исправления
.txt 6,04Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Задача

Внешней программе часто нужно не «красивое API под одну конфигурацию», а три вещи:

  1. понять, какие объекты есть в конкретной базе;

  2. выполнить запрос и получить таблицу;

  3. точечно записать реквизит или табличную часть уже существующего объекта.

Последнее время все чаще появляются ИИ-агенты или способы работы Cursor и 1С, но при этом нет быстрого способа подключить любого агента напрямую к 1С, чтобы он мог вносить изменения в базу или читать ее не в файловом варианте. При разработке КонфигРедактора, осталось достаточно много интересных функций и модулей по работе напрямую с 1С.

 
 Пример использования модуля

COM-соединение неудобно с Linux и с сервисами. Штатный OData не всегда покрывает произвольный запрос и запись табличных частей «как есть». Писать отдельный HTTP-сервис под каждый документ накладно, если задача — отладка, выгрузка, сверка или тонкий коннектор к своей утилите.

Ниже — универсальный модуль шаблонного HTTP-сервиса. Это не продукт «под ключ» и не замена правам доступа. Это исходник, который администратор сам вставляет в свою конфигурацию или расширение и сам решает, кому его открывать.

К статье приложен файл модуля. Имя обработчика в шаблоне URL — execute1.

Что умеет модуль

Точка входа принимает тело POST в JSON и ветвится по полю action.

action

Назначение

metadata

Список имён справочников, документов, регистров, констант, ролей, планов счетов, ПВХ, перечислений, бизнес-процессов, задач. Отдельно — ссылочные типы констант и реквизитов документов/справочников (включая табличные части).

(пусто)

Выполнить текст запроса из query с параметрами params. Ответ: columns + rows.

write_constant

Записать константу по имени.

write_object

Найти объект по префиксу метаданных, имени и GUID, проставить реквизиты, перезаписать табличные части, вызвать Записать().

Ответ всегда application/json; charset=utf-8. Ошибки — объект {"error": "..."} и код 400 или 500.

Модуль не создаёт новые объекты «с нуля»: write_object работает с уже существующей ссылкой. Создание элементов — отдельная доработка, её в файле нет.
 

Как подключить(краткая инструкция)

  1. В конфигураторе или расширении создайте HTTP-сервис, например Connector.

  2. Корневой URL — короткий и без «секрета в пути». Секрет должен быть в аутентификации веб-сервера / HTTP-сервиса, а не в адресе.

  3. Добавьте шаблон URL, например execute.

  4. Метод — POST. Обработчик — экспортная функция execute1 из приложенного модуля (скопируйте текст в модуль HTTP-сервиса).

  5. Опубликуйте базу на веб-сервере. Проверьте, что HTTP-сервисы включены в публикации.

  6. Назначьте роль: только нужным пользователям разрешите использование этого HTTP-сервиса. Не оставляйте выполнение от пользователя с полными правами «потому что так проще отладить».

Адрес будет вида:

https://сервер/база/hs/Connector/execute

Точное написание зависит от имени сервиса и шаблона в вашей публикации.

Проверка «сервис жив» без полезной нагрузки должна давать 400 и текст про пустое тело — это нормально. Пустой POST специально отвергается.

Контракт: общий вид запроса

Минимальный запрос на выборку:

{
  "query": "ВЫБРАТЬ ПЕРВЫЕ 10 Наименование ИЗ Справочник.Номенклатура",
  "params": {}
}

Поле params — объект. Ключ — имя параметра запроса без амперсанда. Значения приводятся к типам платформы: число, булево, дата, UUID (строка 8-4-4-4-12), обычная строка.

Пример с параметром:

{
  "query": "ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Контрагенты ГДЕ ИНН = &ИНН",
  "params": {
    "ИНН": "7700000000"
  }
}

Успешный ответ:

{
  "columns": ["Ссылка", "Наименование"],
  "rows": [
    ["3f2c1a10-....-....-....-............", "ООО Пример"]
  ]
}

Почему таблица, а не массив объектов: так проще разбирать ответ в Python, PowerShell и Excel-подобных конвейерах; имена колонок не нужно угадывать по первой строке. Ссылки в ячейках сериализуются в GUID (через УникальныйИдентификатор()), даты — в yyyy-MM-ddTHH:mm:ss. Пустые значения и хранилища значений в JSON не выводятся.

Если JSON тела разобрать нельзя — 400. Если падает выполнение запроса — 500 и подробное представление ошибки платформы. На боевой базе подробный стек лучше обрезать: сейчас модуль отдаёт ПодробноеПредставлениеОшибки, это удобно при отладке и опасно в открытом контуре.

Действие metadata

{
  "action": "metadata"
}

Внешняя программа получает карту имён. Это нужно, когда база нетиповая или сильно доработана и клиент не хочет хардкодить Справочник.Номенклатура.

Дополнительно модуль собирает только те типы, в строковом представлении которых есть «Ссылка» / Reference. Примитивы (строка, число, дата, булево) в эти словари не попадают. Если клиенту нужна полная схема реквизитов — расширьте СобратьТипыРеквизитов: уберите фильтр по подстроке «Ссылка».

Имена пользователей в метаданных читаются в попытке: на части платформ коллекция недоступна, тогда вернётся пустой массив.

Действие write_object

Нужны prefix, obj_name, guid. Реквизиты — массив, табличные части — объект «имя ТЧ → массив строк».

{
  "action": "write_object",
  "prefix": "Справочник",
  "obj_name": "Номенклатура",
  "guid": "3f2c1a10-1111-2222-3333-444444444444",
  "requisites": [
    {
      "attr": "Комментарий",
      "value": "заполнено из внешней системы"
    }
  ],
  "tabular": {}
}

Префикс понимается по-русски: справочник, документ, плансчетов, планвидовхарактеристик. Английские имена менеджеров в текущей версии не разбираются.

Ссылочный реквизит можно передать объектом:

{
  "type": "reference",
  "guid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "meta": "Справочник.ЕдиницыИзмерения"
}

Либо строкой UUID, если в поле meta_type у элемента requisites уже указан тип ссылки.

Поведение табличных частей жёсткое: ТЧ очищается и заполняется заново. Частичное изменение одной строки без остальных в модуле не предусмотрено. Перед вызовом клиент должен прислать полный снимок ТЧ.

Стандартные поля вроде «Ссылка» / reference пропускаются, чтобы не пытаться присвоить неизменяемый реквизит.

После заполнения вызывается обычный Объект.Записать(). Обработчики записи, подписки и контроль остатков работают. Это не «запись в обход логики» (кроме ветки константы, см. ниже).

Действие write_constant

{
  "action": "write_constant",
  "const_name": "ЗаголовокСистемы",
  "value": "Тестовая база"
}

Для ссылочной константы добавьте value_meta_type, например Справочник.Организации, и передайте GUID.

В приложенном модуле запись константы идёт через получение менеджера и попытку выставить ОбменДанными.Загрузка. На части релизов удобнее заменить блок на прямой вызов:

Константы[ИмяКонстанты].Установить(ЗначениеУстановить);

либо на СоздатьМенеджерЗначения(), присвоение .Значение и Записать(). Если решите оставить обход обмена — делайте это осознанно: подписки на запись константы могут не сработать.

Проверьте эту ветку на своей платформе до выкладки в рабочий контур. Остальные действия от неё не зависят.

Как вызывается снаружи

PowerShell:

$body = @{
  query  = "ВЫБРАТЬ ПЕРВЫЕ 5 Наименование ИЗ Справочник.Номенклатура"
  params = @{}
} | ConvertTo-Json

Invoke-RestMethod `
  -Uri "https://server/db/hs/Connector/execute" `
  -Method Post `
  -ContentType "application/json; charset=utf-8" `
  -Headers @{ Authorization = "Basic ...." } `
  -Body $body

Python:

import requests

r = requests.post(
    "https://server/db/hs/Connector/execute",
    json={
        "query": "ВЫБРАТЬ ПЕРВЫЕ 5 Наименование ИЗ Справочник.Номенклатура",
        "params": {},
    },
    auth=("user", "password"),
    timeout=60,
)
r.raise_for_status()
print(r.json())

Авторизацию берите ту, которую настроили в публикации: basic, cookie infobase user, OS. Модуль сам логин не проверяет — он выполняется уже от имени пользователя HTTP-сервиса.

Устройство сериализации

В модуле три слоя преобразования.

  1. Параметр запроса (ПолучитьЗначениеПараметра). Строка-UUID становится УникальныйИдентификатор. Строка, похожая на дату, пробуется через XMLЗначение и Дата(). Остальное остаётся строкой, числом или булевом. Этого достаточно для &ДатаНачала и &Ссылка в типичных запросах, если ссылку передавать UUID и в тексте запроса сравнивать с Ссылка.

  2. Ячейка ответа (ЗначениеВJSON). Ссылку пытаемся отдать как GUID. Если у значения нет УникальныйИдентификатор(), уходит Строка(). Хранилище значения отбрасывается: тащить двоичные данные в каждую строку выборки нельзя.

  3. Запись из JSON (ПреобразоватьЗначениеИзJSON). Булевы слова true/Да/1, даты, числа с запятой, объект {type, guid, meta}. Ошибка преобразования глотается в нескольких местах: лучше недозаписать поле, чем уронить весь объект. Для критичных реквизитов после вызова перечитайте объект запросом.

Разбор JSON тела сделан с запасом: ПрочитатьЗначениеJSON, затем ПрочитатьJSON, затем ЧтениеJSON.Прочитать(). На новых платформах сработает первый путь.

Безопасность — это не приложение к статье, это условие использования

Модуль выполняет произвольный текст запроса и умеет писать объекты. Это штатный HTTP-сервис вашей базы, а не «дыра с улицы». Если опубликовать его в интернет без аутентификации и с полными правами, последствия те же, что у открытого консоли запросов.

Минимальный набор, без которого файл лучше не включать:

  • HTTP-сервис только для служебного пользователя с отдельной ролью.

  • Роль не содержит интерактивного удаления, администрирования и лишних прав на запись. Для сценария «только читаем» уберите из модуля ветки write_* совсем.

  • Веб-сервер: HTTPS, basic/OS, ограничение по IP или VPN. Не публикуйте сервис на том же endpoint, что пользовательский тонкий клиент, без отдельной публикации.

  • На рабочей базе замените произвольный query на белый список: разрешённые имена сохранённых запросов или заранее заданные шаблоны. Текущий файл — для контура разработки и контролируемой интеграции.

  • Не логируйте тело запроса целиком: там могут быть персональные данные.

  • ПодробноеПредставлениеОшибки на периметре уберите: клиенту достаточно короткого кода.

  • Журнал регистрации: фиксируйте пользователя, action, имя объекта, GUID. Текст запроса — по необходимости, в закрытом журнале.

Пункт про белый список повторяю отдельно: приложенный исходник намеренно широкий. Узкий контур — ваша доработка, не «забытая опция».

Файл не обходит лицензирование платформы, не является средством скрытого доступа и не предназначен для работы без ведома администратора информационной базы.

Ограничения текущей версии

  • Нет GET, нет пагинации, нет асинхронных длительных запросов. Тяжёлый запрос без ПЕРВЫЕ и без отбора повесит HTTP-поток.

  • Нет записи регистров сведений/накопления отдельным action.

  • Нет создания объектов и копирования.

  • write_object не ставит режим загрузки обмена: сработают проверки проведения и подписки.

  • Пользовательские поля составного типа: клиент должен прислать meta, иначе GUID не во что превратить.

  • Имена метаданных в metadata — только Имя, без синонимов и комментариев.

  • Код рассчитан на управляемое приложение и платформу 8.3 с JSON. На конкретной конфигурации проверьте запись константы и разбор дат.

Если нужно проведение документа — после записи вызывайте Записать(РежимЗаписиДокумента.Проведение) отдельной доработкой. Сейчас модуль этого не делает: проведённый документ при изменении табличной части может потребовать перепроведения, и это уже бизнес-решение, не транспорт.

Отличия от OData/COM/Обмен/Шина/SQL

OData — стандартная витрина объектов. Этот файл — универсальный коннектор разработчика. На периметре без белого списка запросов он опаснее OData: OData не даст выполнить ВЫБРАТЬ по всей базе произвольным текстом.

SOAP web-сервис — жёсткий контракт операций: ПолучитьОстатки(Склад, Дата). Удобно, когда набор методов известен заранее. Тяжелее JSON, хуже для «произвольного запроса».

COM-коннектор — полный объектный модель 1С снаружи. Мощно, но Windows, DCOM, сессии, не HTTP. С Linux-сервиса и из облака обычно не вариант.

Обмен через планы обмена / EnterpriseData / КД — пакетная синхронизация справочников и документов между базами. Не интерактивный «выполни запрос и запиши одну строку».

Шина / ESB / «1С:Шина» — очереди, гарантия доставки, идемпотентность. Это транспорт предприятия, не консоль.

Прямой SQL к СУБД — обходит логику 1С, права, регистраторы. Для прикладной записи объектов не подходит.

Обработка в базе / регламентное задание — нет внешнего HTTP. Файл на диске, ручной запуск.

Итог

Шаблон закрывает типовой зазор между «внешний скрипт» и «консоль запросов внутри базы»: карта метаданных, выборка таблицей, точечная запись. Ставьте его как служебный сервис с узкой ролью. Произвольный запрос на периметре без белого списка — это уже не интеграция, а открытая консоль.

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.6.1.61, 2.5.26.118
  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.206.19
  • Управление торговлей, редакция 11, релизы 11.6.1.61
  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.38.92

Вступайте в нашу телеграмм-группу Инфостарт

HTTP-сервис JSON запрос метаданные запись объекта интеграция внешняя система GUID справочник документ константа REST

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    79420    405    171    

341

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    277731    1564    423    

1205

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Программист Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    1996    17    0    

11

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    42378    117    54    

131

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    12796    50    62    

59

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    70541    139    41    

148

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    27776    101    46    

107
Для отправки сообщения требуется регистрация/авторизация