Skip to content

Автономный сервер ​

Файловая ИБ публикуется по HTTP без отдельной серверной установки.

Автономный сервер (ibsrv) — это лёгкий сервер 1С:Предприятия, который публикует файловую ИБ проекта по HTTP без отдельной серверной установки. Расширение поднимает его для локальной разработки и отладки REST (HTTP-сервисы), SOAP (Web-сервисы) и OData: запустил — и сервисы доступны в браузере и из внешних клиентов.

Параметры сервера задаются в настройках расширения (1c-platform-tools.server.*). Публикуется база активного профиля запуска, и только файловая.

Статус-бар и меню ​

Элемент состояния сервера в статусной строке:

  • $(server) 1С: Сервер — остановлен;
  • $(sync~spin) 1С: Сервер… — запускается;
  • $(broadcast) 1С: Сервер :<порт> — запущен;
  • $(error) 1С: Сервер — ошибка (откройте журнал).

Клик открывает меню действий: Запустить / Остановить / Перезапустить, Открыть в браузере, Выбрать публикуемые сервисы, Отладка через сервер, Показать журнал, Открыть конфиг публикации. Те же действия доступны командами палитры в категории 1С: Автономный сервер.

Запуск, отладка, остановка и перезапуск ещё и с клавиатуры: Ctrl+Alt+F5, Alt+F5, Shift+Alt+F5 и Ctrl+Alt+Shift+F5.

Запуск ​

Сервер поднимается на базе активного профиля запуска. Версию платформы задаёт настройка server.platformVersion, пустая берёт версию из профиля, а если и там пусто, наибольшую установленную.

Когда сервер готов, в статусной строке появляется порт, а корневой адрес публикации пишется в журнал: канал Output → «1С: Автономный сервер».

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

Смена текущего проекта сервер не останавливает. Запуск в другом проекте спросит, остановить ли сервер первого.

Если каталог данных сервера держит ibsrv от прежнего запуска, например оставшийся после перезагрузки окна, новый сервер не стартует. Запуск находит такой процесс и предлагает его завершить.

Конфиг публикации и ручные правки ​

Конфиг лежит в build/ibsrv/publication.yaml (каталог build/ обычно в .gitignore — у каждого свой). Это источник истины для уже созданного файла:

  • файл создаётся при первом запуске (или командой Открыть конфиг публикации) и больше не перезаписывается автоматически;
  • можно остановить сервер, изменить параметры прямо в файле (например server.port) и запустить заново — новые параметры применятся (адрес и порт в статус-баре/браузере читаются из файла);
  • при изменении набора публикуемых сервисов (см. ниже) файл перегенерируется, но серверные параметры (порт/хост/база/лицензии) сохраняются из текущего файла;
  • каталог можно переопределить настройкой server.path.data.

Открыть в браузере ​

Действие Открыть в браузере предлагает корень публикации и OData $metadata. Адреса строятся по настройкам (host, port, httpBase), например http://localhost:8314/ib/ и http://localhost:8314/ib/odata/standard.odata/$metadata. HTTP-сервисы доступны по …/ib/hs/<корневой_URL>, Web-сервисы — по …/ib/ws/<имя>.

Выбор публикуемых сервисов ​

Выбрать публикуемые сервисы открывает множественный выбор по метаданным проекта: OData, отдельные Web- и HTTP-сервисы.

  • Отмеченные «Все Web-сервисы» / «Все HTTP-сервисы» — публикуется вся категория, вместе с сервисами расширений (по умолчанию).
  • Снимите «Все …» и отметьте конкретные сервисы — публикуются только они. Достаточно отметить имя: адрес публикации подставится из метаданных.

Выбор локальный, у каждого свой, и в репозиторий не попадает. Если сервер запущен, расширение предложит перезапустить его, чтобы применить новый набор публикации. Если метаданные недоступны, в выборе остаются только категории.

OData: данные и состав интерфейса ​

Отмеченный пункт OData публикует стандартный интерфейс: …/ib/odata/standard.odata/. С данными через него работают две команды категории 1С: OData. Агенту они доступны инструментами MCP odata_query и odata_setup. Как работать с данными через агента, в том числе с продуктивной системой, — в руководстве Данные через OData.

1С: OData: Запрос (odata_query) читает и меняет данные базы:

  • GET — выборка и элемент с параметрами $filter, $select, $expand, $orderby, $top, $skip, а также $metadata;
  • POST — создание, PATCH — изменение переданных полей, PUT — замена элемента целиком, DELETE — удаление. Автономный сервер 8.3.27 не принимает PATCH: команда сама читает элемент и записывает его через PUT с изменёнными полями.

Запрос идёт в публикацию запущенного сервера проекта. Для базы, опубликованной своим веб-сервером (IIS, Apache), адрес передаётся параметром url: корень публикации, например http://srv/base. Учётная запись берётся из активного профиля запуска (db-user, db-pwd), отдельных секретов не нужно. Пользователю нужно право на стандартный интерфейс OData, обычно роль УдаленныйДоступOData.

Ответ содержит код HTTP и тело. Ошибка объясняет причину:

  • сервер не запущен или OData не отмечен в выборе сервисов — подсказка запустить или перезапустить сервер либо передать url;
  • 401 — учётная запись профиля;
  • объекта нет в $metadata — он не входит в состав интерфейса, подсказка включить его командой ниже.

Из палитры команда выполняет GET по введённому ресурсу и открывает ответ в редакторе.

1С: OData: Состав (odata_setup, в меню сервера — Состав OData) показывает и меняет, какие справочники, документы, регистры и другие объекты доступны через OData. Это не то же, что пункт публикации: публикация открывает сам сервис, а состав хранится в информационной базе (УстановитьСоставСтандартногоИнтерфейсаOData).

  • Без параметров команда возвращает текущий состав.
  • include и exclude включают и исключают перечисленные объекты, остальной состав не меняется. Имя задаётся полностью (Справочник.Номенклатура) или как набор OData (Catalog_Номенклатура).
  • available: true добавляет объекты проекта вне состава. Состав и объекты в ответе — имена наборов OData (Catalog_Номенклатура).

Откуда что берётся:

ЧтоИсточник
Объекты, которые можно включитьМетаданные проекта (md-sparrow)
Текущий состав$metadata запущенного сервера; без сервера — служебная обработка
Изменение составаСлужебная обработка

Из палитры и из меню сервера команда показывает объекты проекта с отметками текущего состава, а изменения записывает задачей VS Code: вывод в терминале, как у остальных команд.

Состав меняется кодом на сервере 1С, поэтому команда собирает служебную внешнюю обработку в каталоге сборки (build/out/odata) и запускает её в Предприятии на базе профиля. Обработка собирается один раз и пересобирается при обновлении расширения. Нужны административные права и отключённая у пользователя защита от опасных действий: иначе Предприятие ждёт подтверждения открытия внешней обработки. Работающий сервер этой базы останавливается на время запуска и поднимается снова, уже с новым составом.

Команды, которым нужна база ​

Файловую базу нельзя открыть, пока её держит ibsrv. Поэтому команды, которые открывают базу своим процессом, сначала останавливают запущенный сервер, а после завершения поднимают обратно:

  • загрузка и выгрузка cf и cfe, поставка и обновление конфигурации БД;
  • инициализация базы, выгрузка и загрузка dt, чтение списка расширений;
  • запуск конфигуратора и предприятия, включая команды поддержки и настройку состава OData;
  • тестирование и синтаксический контроль.

Сборка и разборка файлов останавливают сервер, только когда vanessa-runner работает в базе проекта.

Остановка ждёт, пока процесс ibsrv завершится. Если он не вышел за 8 секунд, расширение повторяет сигнал, а затем завершает процесс принудительно. Если остановить так и не удалось, команда не начинается: расширение говорит об этом вместо того, чтобы дать конфигуратору упасть на занятой базе.

Сервер возвращается сам, когда команда идёт задачей VS Code: о её завершении расширение знает. С выключенной настройкой execution.useTasks команда уходит в интерактивный терминал, завершение остаётся за кадром, поэтому сервер остаётся выключенным и запускается из статусной строки. Так же расширение поступает с запуском конфигуратора и предприятия: vanessa-runner отдаёт управление сразу, а базу дальше держит само приложение 1С.

Отладка через сервер ​

Отладка через сервер сама включает отладку в настройках, поднимает сервер с портом отладки и подключает к нему отладчик. Остановка сервера завершает отладку, перезапуск подключает отладчик снова. Благодаря выдаче лицензий автономным сервером отлаживать серверный код HTTP/Web-сервисов можно без отдельной лицензии. Подробнее об отладчике — в руководстве по отладке.

Тесты на этом же сервере ​

Порт сервера берётся из настроек и не меняется от запуска к запуску, поэтому прогоны тестов можно направлять на уже поднятый сервер: --ibsrv-attach --ibsrv-port <порт>. Один сервер и для ручной работы с сервисами, и для тестов.

Настройки ​

НастройкаПо умолчаниюНазначение
1c-platform-tools.server.platformVersionпустоВерсия платформы (8.3.27.1936 или префикс 8.3.27). Пусто — наибольшая установленная.
1c-platform-tools.server.hostlocalhostСетевой интерфейс (localhost / any / IP).
1c-platform-tools.server.port8314HTTP-порт.
1c-platform-tools.server.httpBaseibБазовый путь публикации (ib → …/ib/; пусто или / — корень сайта).
1c-platform-tools.server.directRegPortпустоПорт регистрации прямого соединения (--direct-regport). Пусто: умолчание платформы 1541.
1c-platform-tools.server.directRangeпустоДиапазон портов прямого соединения (--direct-range) в формате нижний:верхний. Пусто: умолчание платформы 1560:1591.
1c-platform-tools.server.path.dataпустоКаталог данных сервера и publication.yaml; относительный путь — от корня проекта. Пусто — build/ibsrv.
1c-platform-tools.server.distributeLicensestrueВыдача клиентских лицензий (работа и отладка без отдельной лицензии).
1c-platform-tools.server.publishODatatrueПубликовать OData по умолчанию.
1c-platform-tools.server.publishWebServicestrueПубликовать Web-сервисы по умолчанию.
1c-platform-tools.server.publishHttpServicestrueПубликовать HTTP-сервисы по умолчанию.
1c-platform-tools.server.debugfalseВключить порт отладки сервера.
1c-platform-tools.server.debugPort1550Порт сервера отладки.

Настройки publish* задают поведение по умолчанию; точечный выбор сервисов (см. выше) его переопределяет.

Порты прямого соединения меняют, когда на машине уже стоит сервер 1С: ibsrv по умолчанию занимает те же 1541 и 1560:1591, что и кластер, и не стартует.

Связанные руководства ​

Распространяется по лицензии MIT.