Кратко
На 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>'
Воспроизведение
-
Создать или выбрать доступную клиент-серверную ИБ с пользователем и паролем.
-
Указать подключение, пользователя и пароль как в примере выше.
-
Запустить операцию, которая обращается к ИБ, например:
v8-runner --config v8project.yaml make --source-set external-processors --output build/external
-
Для контрольной проверки запустить ту же операцию с единственным изменением:
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 обезличены.
Кратко
На Windows и платформе 1С 8.3.27.1936 серверное подключение из
v8project.yamlв видеSrvr=...;Ref=...;с отдельнымиinfobase.userиinfobase.passwordне проходит аутентификацию.v8-runnerпреобразует такую конфигурацию в аргументы:Прямой запуск платформы с эквивалентным серверным адресом через
/S "<server>\<infobase>"и теми же/Nи/Pуспешно подключается.Окружение
7ce1b062843d86644fe55741dbe0ee79f7ca767dDESIGNERМинимальная конфигурация
Воспроизведение
Создать или выбрать доступную клиент-серверную ИБ с пользователем и паролем.
Указать подключение, пользователя и пароль как в примере выше.
Запустить операцию, которая обращается к ИБ, например:
Для контрольной проверки запустить ту же операцию с единственным изменением:
Фактическое поведение
Вариант
Srvr/Refзавершается на аутентификации сообщением платформы:Контрольный вариант
/Sс теми же пользователем и паролем проходит подключение и доходит до загрузки XML. В конкретном downstream-проекте он затем завершился на независимой ошибке XDTO во входном XML; это подтверждает, что серверное подключение и аутентификация уже были пройдены.Дополнительная нативная проверка той же ИБ через:
завершилась с кодом
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
Добавить тест для серверного подключения:
и зафиксировать ожидаемые аргументы, совместимые с платформой. По возможности дополнить Windows integration test живой или контейнерной серверной ИБ.
Обходной путь
Указывать
infobase.connectionв raw-виде:Тогда
v8-runnerсохраняет/Sи добавляет отдельные/Nи/P.Все адреса, имена ИБ и учётные данные в этом Issue обезличены.