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

17.09.26

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

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

Файлы

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

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

См. также

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

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

50000 руб.

10.09.2026    13824    124    0    

85

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

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

24900 руб.

20.08.2024    83403    432    171    

364

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

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

16500 руб.

02.09.2020    285959    1608    423    

1220

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

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

14000 руб.

17.04.2026    16939    63    62    

74

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

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

22570 руб.

06.10.2023    44285    122    54    

135

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

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

15250 руб.

25.08.2025    77104    147    41    

154

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    7784    35    4    

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