Имя: Пароль:
1C
1С v8
Функция СтрокаСоединенияИнформационнойБазы()
0 rowvg
 
16.06.23
14:31
Функция СтрокаСоединенияИнформационнойБазы()  возвращает разные значения имени сервера в зависимости от того в каком контексте выполняется, клиентском или серверном, с полным доменным именем или просто локальное имя компьютера в домене.

Как - то это можно исправить?
1 Aleksey
 
16.06.23
14:43
а надо это исправлять?
2 Мультук
 
16.06.23
14:44
(0)

Создать/открыть общий модуль с флагами "Сервер", "ВызовСервера"

и добавить

Функция ИстинноВернаяСтрокаСоединенияИнформационнойБазы() Экспорт
    Возврат  СтрокаСоединенияИнформационнойБазы();
КонецФункции
3 rowvg
 
16.06.23
14:45
Надо, в противном случае мы имеем дело с недетерминированным результатом работы функции
4 rowvg
 
16.06.23
14:47
(2) Сейчас так и сделано, но если код выполняется в фоновом потоке, то результат один, а если не в фоновом - то другой
5 lodger
 
16.06.23
14:52
(4) сейчас ты ввел 3й уровень.
так где какой?
наклиенте
насервере
насервере (в фоновом потоке)
6 rowvg
 
16.06.23
15:07
(5) в фоновом
в заголовке я неправильно написал, прошу прощения
7 Галахад
 
16.06.23
15:17
Не зависит случайно от пользователя под которым служба запущена?
8 lodger
 
16.06.23
15:18
можно
а) написать функцию, которая откусывает доменные и днс префиксы\суффиксы после СтрокаСоединенияИнформационнойБазы
б) прописать на клиенте полный путь к серверу
...
ещё идеи?

(7) в общем то да, строка соединения зависит от того как она прописана, даже если ты фоновое задание.
9 Fedor-1971
 
16.06.23
15:21
(0) По факту, тебе возвращают актуальное имя сервера, если вдруг захочешь запустить 1С прямо в полученной локации (по умолчанию, для соединения используется текущий пользователь)

Так, то SRV может иметь несколько адресов через запятую

Вот кусок справки:
Для клиент-серверного варианта определены параметры:
Srvr —  имя сервера «1С:Предприятия» в формате: [<протокол>://]<адрес>[:<порт>], где:
<протокол> – не обязателен, поддерживается только протокол TCP,
<адрес> – имя сервера или IP-адрес сервера в форматах IPv4 или IPv6,
<порт> – не обязателен, порт главного менеджера кластера, по умолчанию равен 1541.
Например:
server – указано имя сервера, остальные параметры используются по умолчанию;
tcp://server:1641 – указан протокол, имя сервера и порт;
127.0.0.1:1541 – указан IP-адрес сервера (в формате IPv4) и порт;
[fe10::c47b:90b7:fa32:a2fa%12] – указан IP-адрес сервера (в формате IPv6), при этом протокол и порт принимают значения по умолчанию.

Для обеспечения бесперебойной работы клиентских приложений возможно указание нескольких адресов кластера. Для этого:
Значением параметра Srvr может быть список адресов кластера через запятую.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn