Skip to content

bug(connection): Srvr/Ref с отдельными user/password преобразуется в неработающий /IBConnectionString + /N + /P #55

Description

@zeegin

Migrated from alkoleft/v8-runner-rust issue #55.
Original author: vozhukov; created: 2026-08-17T13:01:28Z; last upstream update: 2026-08-17T13:01:28Z.
GitHub shows the migration account as the new author; this block preserves actual attribution.


Кратко

На Windows и платформе 1С 8.3.27.1936 серверное подключение из v8project.yaml в виде Srvr=...;Ref=...; с отдельными infobase.user и infobase.password не проходит аутентификацию.

v8-runner преобразует такую конфигурацию в аргументы:

/IBConnectionString 'Srvr="<server>";Ref="<infobase>";' /N <user> /P <REDACTED>

Прямой запуск платформы с эквивалентным серверным адресом через /S "<server>\<infobase>" и теми же /N и /P успешно подключается.

Окружение

  • ОС: Windows NT 10.0.26200, x64
  • Платформа 1С: 8.3.27.1936, x64
  • v8-runner: 0.5.1, commit 7ce1b062843d86644fe55741dbe0ee79f7ca767d
  • Формат проекта: DESIGNER
  • Тип ИБ: клиент-серверная

Минимальная конфигурация

format: DESIGNER

infobase:
  connection: 'Srvr="<server>";Ref="<infobase>";'
  user: '<user>'
  password: '<REDACTED>'

Воспроизведение

  1. Создать или выбрать доступную клиент-серверную ИБ с пользователем и паролем.

  2. Указать подключение, пользователя и пароль как в примере выше.

  3. Запустить операцию, которая обращается к ИБ, например:

    v8-runner --config v8project.yaml make --source-set external-processors --output build/external
    
  4. Для контрольной проверки запустить ту же операцию с единственным изменением:

    infobase:
      connection: '/S "<server>\<infobase>"'
      user: '<user>'
      password: '<REDACTED>'

Фактическое поведение

Вариант Srvr/Ref завершается на аутентификации сообщением платформы:

Пользователь ИБ не идентифицирован

Контрольный вариант /S с теми же пользователем и паролем проходит подключение и доходит до загрузки XML. В конкретном downstream-проекте он затем завершился на независимой ошибке XDTO во входном XML; это подтверждает, что серверное подключение и аутентификация уже были пройдены.

Дополнительная нативная проверка той же ИБ через:

1cv8.exe DESIGNER /S "<server>\<infobase>" /N <user> /P <REDACTED> /CheckConfig -ConfigLogIntegrity

завершилась с кодом 0 и сообщением Ошибок не обнаружено.

Ожидаемое поведение

Декларативная серверная строка Srvr=...;Ref=...; с отдельными user/password должна формировать поддерживаемый платформой набор аргументов и аутентифицироваться так же, как эквивалентный /S-вариант.

Возможные варианты реализации:

  • разобрать Srvr/Ref и сформировать /S "<server>\<ref>", после чего добавить /N и /P;
  • либо формировать /IBConnectionString так, чтобы учётные данные передавались в совместимом с платформой виде.

Вероятная причина

В src/platform/connection.rs любая строка, не начинающаяся с / или -, без разбора заворачивается в /IBConnectionString, после чего пользователь и пароль добавляются отдельными /N и /P.

Текущие тесты проверяют только plain file connection и raw /F с /N//P; варианта Srvr/Ref с отдельной аутентификацией нет.

Предлагаемый regression test

Добавить тест для серверного подключения:

connection = 'Srvr="server";Ref="base";'
user = 'user'
password = 'secret'

и зафиксировать ожидаемые аргументы, совместимые с платформой. По возможности дополнить Windows integration test живой или контейнерной серверной ИБ.

Обходной путь

Указывать infobase.connection в raw-виде:

connection: '/S "<server>\<infobase>"'

Тогда v8-runner сохраняет /S и добавляет отдельные /N и /P.

Все адреса, имена ИБ и учётные данные в этом Issue обезличены.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    upstream-migratedMigrated from the historical upstream tracker

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions