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