Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.