Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УФ: Хранить переменную COM-типа на сервере "глобально"?

УФ: Хранить переменную COM-типа на сервере "глобально"?
Я
   seperblunt2
 
03.04.19 - 18:11
Добрый день.

Обработка юзает подключение к SQL.

Что то не пойму где мне нужно это подключение "оставить", чтобы его можно было использовать в разных серверных процедурах?

т.е. на кнопарь навесил "подключиться к SQL" - далее серверная процедура формирует это подключение..

на другой кнопарь хочу навесить "выполнить SQL-запрос" - вызываю из нее "Выполнить_SQL_Запрос_НаСервере" - и вот чтобы тут добраться до созданного ранее подключения SQL - его нужно гдето оставить полежать.

Вопрос ГДЕ :)?
 
 
   H A D G E H O G s
 
1 - 03.04.19 - 18:18
В Структуре, помещенной во ВременноеХранилище.
Испортиться через 20 минут, или при перезапуске rphost / переброске пользователя на другой rphost.
Поэтому, перед использованием, нужно проверять.
   seperblunt2
 
2 - 03.04.19 - 18:25
(1) ух тыж мне.. хотя в целом неплохо...

других вариантов никто не предложит?
   VS-1976
 
3 - 03.04.19 - 18:29
(2) В УФ их больше не существует, на сколько я знаю
   seperblunt2
 
4 - 03.04.19 - 18:30
(1) я вот подумал - если у меня будет выполняться длительная процедура на SQL, а в середине этой процедуры Подключение_SQL  ВременноеХранилище решит самоликвидироваться - будет неприятно

а каждый раз проверять на месте ли подключение в цикле помещения таблицы на SQL тоже не совсем приятно.

хотелось бы что то найти..
   seperblunt2
 
5 - 03.04.19 - 18:35
(1)  (4) хотя нет, это я ерунду написал, перед длительной процедурой я же получу уже из хранилища подключение..

НО! проверив обнаружил, что не может он во временное COM поместить. Хоть в структуре, хоть без...
   Garykom
 
6 - 03.04.19 - 18:43
(0) В отдельном вынесенном наружу из 1С веб-сервисе, к которому можно подключаться из любого сеанса 1С.
   seperblunt2
 
7 - 03.04.19 - 18:57
Так то бы полбеды - создавать перед каждой операцией новое подключение (50 мс времени), НО в процессе работы создаются указатели RecordSet, которые точно должны жить между вызовами..
   VS-1976
 
8 - 03.04.19 - 19:27
(7) Если только читать, есть же внешние источники данных в конфигурации, может их попробовать?
   singlych
 
9 - 03.04.19 - 19:37
(1) "Испортиться через 20 минут"
Вроде не должен испортиться, если адрес указать.
   PR
 
10 - 03.04.19 - 19:41
Я думаю, что единственно возможный вариант — сделать фоновое задание, в нем уже COM, а потом уже как-то оперировать фоновым заданием
Все остальные варианты, когда серверный вызов закончился, а потом вызвался новый — думаю, что неработоспособны
   seperblunt2
 
11 - 03.04.19 - 19:41
(9) увы, хранилище не принимает COM объекты.. только сериализуемые
   PR
 
12 - 03.04.19 - 19:42
(1) Дима, как ты COM в хранилище засунешь, оно же не сериализуется
   seperblunt2
 
13 - 03.04.19 - 19:43
(10) тоже в эту сторону думаю. и тоже кажется, что других методов нет
   Immortal
 
14 - 03.04.19 - 19:43
Почему никто не пишет, что сама по себе затея это адская дурь?
   Immortal
 
15 - 03.04.19 - 19:43
Для подключения к SQL на сервере херова туча методов без хранения COM объекта на сервере
   hhhh
 
16 - 03.04.19 - 19:44
(13) в параметр сеанса тогда пробуй.
   PR
 
17 - 03.04.19 - 19:46
(16) Какой параметр сеанса?
Это COM, его никуда не засунешь в сериализованном виде
   seperblunt2
 
18 - 03.04.19 - 19:46
(16) так же не дает засунуть несериализуемое
   seperblunt2
 
19 - 03.04.19 - 19:46
(15) см 7
   seperblunt2
 
20 - 03.04.19 - 19:46
(15) или рассказывай )
   hhhh
 
21 - 03.04.19 - 19:48
(17) зачем в сериализованном?
   hhhh
 
22 - 03.04.19 - 19:49
(18) ну структуру же дает засунуть.
   Immortal
 
23 - 03.04.19 - 19:50
рекомендую подумать про внешние источники данных, временные таблицы и view в MS SQL
   PR
 
24 - 03.04.19 - 19:51
(22) И че и че? Че с этим делать-то потом, как ты его через границу перевозить будешь?
   hhhh
 
25 - 03.04.19 - 19:55
(24) ну, не перевозить через границу.
   Провинциальный 1сник
 
26 - 03.04.19 - 19:55
+(1) А еще можно возвращать из общего модуля с признаком кэширования возвращаемых значений. И те же проблемы - если поменяется рпхост, то будет повторного вычисление ну или через 20 минут, а по усмотрению сервера и раньше, если например памяти не хватает...
   PR
 
27 - 03.04.19 - 19:56
(25) А зачем тогда она нужна?
Как ее передать в новый серверный вызов из предыдущего?
Рукалицо
   Провинциальный 1сник
 
28 - 03.04.19 - 19:57
(7) "создавать перед каждой операцией новое подключение (50 мс времени)"
А у меня на пару порядков больше получается, если база типовая БП.
   H A D G E H O G s
 
29 - 03.04.19 - 19:57
(26) "а по усмотрению сервера и раньше, если например памяти не хватает..." Или даже если хватает. Поэтому отказались от этого и вернулись к ВременномуХрану.
   Провинциальный 1сник
 
30 - 03.04.19 - 19:58
(29) Это ведь тоже костыль, и в какой-то версии сериализация COM-подключения может перестать работать..
 
 Рекламное место пустует
   H A D G E H O G s
 
31 - 03.04.19 - 20:00
(30) Да, костыль, но шли годы...
   Провинциальный 1сник
 
32 - 03.04.19 - 20:09
В общем и целом, _документированных_ способов, чтобы хранить между серверными вызовами несериализуемые объекты в управляемом приложении, нет. К сожалению.
Чтобы это было возможно, нужно вводить возможность фиксации рабочего процесса в серверном общем модуле. Скажем, сделать галку "Фиксировать рабочий процесс", чтобы все обращения к этому модулю выполнялись на том рпхосте, к которому сеанс обратился в первый раз, и в этом случае чтобы глобальные переменные модуля сохранялись между вызовами. Но это противоречит идеологии направленности на большие масштабы.
   Cyberhawk
 
33 - 03.04.19 - 21:04
Кастую TormozIT в ветку
   TormozIT
 
34 - 03.04.19 - 21:50
В (1) и (26) уже все сказано
   Immortal
 
35 - 03.04.19 - 22:09
ну то есть про пулы соединений мы даже думать не будем=)
   TormozIT
 
36 - 04.04.19 - 10:01
(35) Так есть же попытки на инфостарте. Но до высокой универсальности не доведены.
   Garykom
 
37 - 04.04.19 - 10:27
Не пора ли уже закопать стюуардессу? Откажитесь уже от OLE/COM/ActiveX
   Провинциальный 1сник
 
38 - 04.04.19 - 11:17
(37) "При всём богатстве выбора другой альтернативы нет" (с) реклама 90-х
   H A D G E H O G s
 
39 - 04.04.19 - 11:34
(37) Откажитесь от винды, ибо вся она построена на COM начиная с Vistы.
   Провинциальный 1сник
 
40 - 04.04.19 - 11:39
(39) Да дело скорее не в этом, а в том что 1с не предоставляет иного механизма для обращения к ИБ из сторонней программы, не требующего адаптации подключаемой конфигурации.
   H A D G E H O G s
 
41 - 04.04.19 - 11:40
(40) Других вариантов то и быть не может.
   Провинциальный 1сник
 
43 - 04.04.19 - 11:42
(41) Если речь о подключении из любой программы - то да. Если же речь о подключении из одной базы 1с к другой - то можно придумать интерконнект на уровне прикладной модели.
   H A D G E H O G s
 
44 - 04.04.19 - 11:44
(43) Ну я о подключении из любой программы - даже ms sql ничего кроме COM модели не предлагает.
А между 1С - это да, можно было бы придумать что то более элегантное, чем подгружать 1.5 Гб-а метаданных на каждое COMподключение.
   Провинциальный 1сник
 
45 - 04.04.19 - 11:45
(42) Все эти веб-сервисы нельзя считать прозрачным доступом к базе. Это скорее "настройка взаимодействия".
   Провинциальный 1сник
 
46 - 04.04.19 - 11:52
(44) По поводу тормозной загрузки метаданных, тут проблема в том что метаданные хранятся в блобах, которые надо парсить. Если бы хранились в виде нормализованного набора таблиц, всё было бы намного быстрее.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.