
Автономный сервер
Файловая ИБ публикуется по 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.host | localhost | Сетевой интерфейс (localhost / any / IP). |
1c-platform-tools.server.port | 8314 | HTTP-порт. |
1c-platform-tools.server.httpBase | ib | Базовый путь публикации (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.distributeLicenses | true | Выдача клиентских лицензий (работа и отладка без отдельной лицензии). |
1c-platform-tools.server.publishOData | true | Публиковать OData по умолчанию. |
1c-platform-tools.server.publishWebServices | true | Публиковать Web-сервисы по умолчанию. |
1c-platform-tools.server.publishHttpServices | true | Публиковать HTTP-сервисы по умолчанию. |
1c-platform-tools.server.debug | false | Включить порт отладки сервера. |
1c-platform-tools.server.debugPort | 1550 | Порт сервера отладки. |
Настройки publish* задают поведение по умолчанию; точечный выбор сервисов (см. выше) его переопределяет.
Порты прямого соединения меняют, когда на машине уже стоит сервер 1С: ibsrv по умолчанию занимает те же 1541 и 1560:1591, что и кластер, и не стартует.
Связанные руководства
- Профили запуска — источник строки подключения к ИБ.
- Отладка 1С — отладчик, к которому подключается сервер.
- 1С: Метаданные — дерево метаданных, откуда берутся списки сервисов.