Имя: Пароль:
1C
1С v8
Куда сохранить общую переменную с внешним подключением для доступа с разных модулей?
0 pvase
 
01.10.21
10:24
Задача такая: Создать подключение к базе данных один раз за сеанс и потом его использовать в разных модулях на сервере. База отдельная, база может быть как MS SQL, так и PostgreSQL. Подскажите как такое можно реализовать?
Зачем это надо? Каждый раз создавать подключение - очень много времени занимает.
1 ДенисЧ
 
01.10.21
10:25
Никак.
2 ДенисЧ
 
01.10.21
10:26
Максимум - модуль с переиспользованием значений и проверкой/переподключением.
3 pvase
 
01.10.21
10:26
Только внешний источник?
4 pvase
 
01.10.21
10:27
Я про тот, что в метаданных определяется.
5 ДенисЧ
 
01.10.21
10:27
(3) Так он тоже не очень-то сохранит подключения.
Представь себе кластер из N серверов, между которыми будет бегать твой сеанс...
6 Guk
 
01.10.21
10:27
(0) если у тебя какое-то сом-соединение, то его можно хранить во временном хранилище. только живет оно там не долго...
7 TormozIT
 
гуру
01.10.21
10:28
> Каждый раз создавать подключение - очень много времени занимает
Пробуй указать все параметры подключения явно
- порт
- протокол
Часто при установке соединения происходит перебор всех возможных значений.
8 Василий Алибабаевич
 
01.10.21
10:29
(0) Сохрани в глобальную переменную на клиенте. Как в БПО.
9 Ненавижу 1С
 
гуру
01.10.21
10:31
(8) точно, но клиент находится ХЗ где от той базы
10 Василий Алибабаевич
 
01.10.21
10:31
+ (8)
Врезка в модуль управляемого приложения из БПО
"
Перем глПодключаемоеОборудование Экспорт; // для кэширования на клиенте
"

внутри глПодключаемоеОборудование могут быть и натив и КОМ подключения. И вполне себе доступны из любой клиентской части.
11 Василий Алибабаевич
 
01.10.21
10:33
(9) но клиент находится ХЗ где от той базы. И что?
12 Garykom
 
гуру
01.10.21
10:34
(0) только выносом наружу из 1С
13 Garykom
 
гуру
01.10.21
10:34
(12)+ особенность работы сервера 1С
14 Guk
 
01.10.21
10:34
(10) теперь попробуй достать эту переменную из серверного модуля...
15 Guk
 
01.10.21
10:35
+(14) о чем пишет автор...
16 ДенисЧ
 
01.10.21
10:36
О! Нужно написать микросервис (обязательно на GO), который будет хранить подключение.
17 Garykom
 
гуру
01.10.21
10:37
(16) это один из вариантов
лично я его применяю ибо он очень удобный, простой и шустрый
18 Guk
 
01.10.21
10:37
короче, в (6) вариант абсолютно рабочий, у меня так нативная компонента для весов сидит и доступна из любых модулей программы, но её дергать не реже чем раз в 20 мин надо, иначе сдохнет...
19 Garykom
 
гуру
01.10.21
10:39
(18) решение очень стремное и сильно ограниченное
в случае кластера из нескольких серверов 1С или файловой упс
20 Мультук
 
гуру
01.10.21
10:43
(0) Главное, чтобы несколько пользователей/фоновых и т.п. одновременно не начали общаться через это подключение
Как бы ему не поплохело от этого
21 Guk
 
01.10.21
10:44
(20) что мешает хранить адрес подключения в параметрах сеанса? тогда такой проблемы не будет...
22 Garykom
 
гуру
01.10.21
10:46
(21) очередь как реализуешь?
23 Guk
 
01.10.21
10:47
(22) очередь из чего?...
24 Ненавижу 1С
 
гуру
01.10.21
10:53
(11) и доступа с клиента нет
25 Garykom
 
гуру
01.10.21
10:53
(23) для чего
для того "чтобы несколько пользователей/фоновых и т.п. одновременно" одно подключение юзали
а очередь это дело разруливает
26 Garykom
 
гуру
01.10.21
10:54
(25)+ в больших языках это называется пул соединений (1-много)
и пул клиентов может этот пул легко использовать не заботясь поднято ли и занято ли, просто время ответа меняется
27 Guk
 
01.10.21
10:58
(25) автор пишет:
"Создать подключение к базе данных один раз за сеанс и потом его использовать"

и где здесь про то, что это соединение одновременно должны пользовать несколько пользователей?...
28 Garykom
 
гуру
01.10.21
11:02
(27) Хороший программист думает наперед и предвидит затыки
29 Guk
 
01.10.21
11:03
(28) ааа...
30 Garykom
 
гуру
01.10.21
11:03
(28)+ а плохому это не надо
ему надо взять "готовый модуль" написанный хорошим и тупо его юзать
ну или слегка подучиться чтобы стать программистом получше
31 Guk
 
01.10.21
11:09
(30) если хороший программист, в твоем понимании, это тот, кто делает задачу не соответствующую поставленной задаче, то по-моему это не хороший программист, а чудак какой-то, который попусту тратит время и деньги клиента/работодателя...
32 pechkin
 
01.10.21
11:14
(31) думаешь ему начальник такую задачу поставил?
33 Garykom
 
гуру
01.10.21
11:14
(31) а вот где надо остановиться в делании задачи это уже искусство с кучей опыта
говнокод тяп ляп и ХХП вполне допустимы на разовой задаче или для MVP
если же долгоиграющий прод с вероятным превращением в легаси то решение задачи на низком уровне означает что некто уже навострил лыжи и после него хоть потоп
34 Garykom
 
гуру
01.10.21
11:15
(33) *низком уровне = хреновом
35 Garykom
 
гуру
01.10.21
11:16
(33)+ хотя на практике часто "давай быстрей-быстрей" и заставляют говнокодить а потом удивляются техдолгу
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший