К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Подсоединиться к запущенному сеансу.

Гость
0 - 08.10.2012 - 22:22
Здравствуйте.
Я соединяюсь из 1С 8.2 (назовем ее Б1) через ОЛЕ к другой базе 1С 8.2. (назовем ее Б2). Но для этого надо, чтобы на компьютере у пользователя Б2 не была запущена. Если запущена, то сначала пользователь ее закрывает, а потом Б1 ее запускает с интерфейсом. Пользователь может работать как с Б1, так и с Б2, а также Б1 может работать с Б2. Б2 приоритетнее, поэтому она часто запущена у пользователя прежде чем требуется запустить Б1. Я хочу пользователям упростить этот момент - сначала закрывать Б2, чтобы запустить Б1, а она потом Б2. Сам вопрос - могу ли я в Б1 соединиться к уже запущенному сеансу Б2 с интерфейсом? Как пример - из конфигуратора я могу к запущенному процессу, правда этой же базы, подсоединиться для отладки, хотя конфигуратор был позднее запущен.
В общем, как-то так.



1 - 08.10.2012 - 22:56
можно и нового пользователя завести в Б2
Гость
2 - 08.10.2012 - 23:42
Пользователь имелся в виду физический - сам оператор. В обоих базах он заведен. Из Б1 в Б2 подключаться может. Просто надо, чтобы если Б2 уже запущена, то не создавался новый сеанс Б2 с интерфейсом, а Б1 получала ОЛЕ соединение к уже запущенной Б2.
Гость
3 - 08.10.2012 - 23:50
В справке описана функция ПолучитьCOMОбъект(). Написано, что если первый параметр опустить, а во втором передать имя класса, то, вроде как можно получить соединение к уже запущенному ОЛЕ серверу. Пробовал - не получилось. Да и не пойму, а если несколько будет запущено баз, то как определять к какой соединиться (если, конечно получилось бы - а тож нет)?
banned
4 - 09.10.2012 - 07:31
2-Фидер > "Просто надо, чтобы если Б2 уже запущена, то не создавался новый сеанс Б2 с интерфейсом"
- Так по ОЛЕ - никакого интерфейса юзер и не увидит...

Заводи служебного пользователя "Робот" в Б2 и не выноси мосх ни себе ни людям...
5 - 10.10.2012 - 10:57
я вот тоже не понял про интерфейс по OLE. может от жизни отстал, конечно... дай код посмотреть как OLE с интерфейсом запустить? а главное, зачем?
по идее, подключился, хапнул данных, отключился... жамкает юзер только в экземпляре-источнике (иначе всё равно запутается).
Гость
6 - 10.10.2012 - 15:43
СоединениеСИнтерфейсом = Новый COMОбъект("V82.Application");
Попытка
СоединениеСИнтерфейсом.Connect("Srvr=""srv01"";Ref =""prod""");
СоединениеСИнтерфейсом.Visible = True;
Исключение
...
КонецПопытки;

Надо затем, что у пользователя и так почти всегда запущена Б2. То что надо делать с Б2 из Б1 работает только при соединении с интерфейсом. Если у пользователя уже открыта Б2, то приходится из Б1 открывать второй сеанс к Б2, что тянет ресурсы (компы не ахти, а сеанс с интерфейсом существенно тянет ресурсы). Для того, чтобы работало быстрее пользователи знают, что надо тогда закрыть Б2, открыть Б1 и она снова откроет Б2. Тогда они могут работать с меньшими тормозами и с Б1 и с Б2 и Б1 с Б2.
Создавать "Робот2" и др. мне не поможет и смысла нет, т.к. количество подключений у меня к Б2 по пользователю не ограничено.
7 - 10.10.2012 - 15:56
6-Фидер > погляжу про подключение к существующему.
но по идее подключение к базе (хоть по OLE хоть ещё как) нужно только для получения или передачи данных. и запускать у каждого клиента вторую базу с интерфесом довольно-таки... не экономно. имхо.
может всё-таки можно без интерфейса и выполнять на сервере... по обработке ожидания... или ещё как?
в общем, чего в интерфейсе юзеры монстрячат?
8 - 10.10.2012 - 15:59
если это тупо обмен документами, то зачем в реальном режиме времени? и проще вести обе организации в одной базе (типовая БП проф не запрещает).
banned
9 - 10.10.2012 - 17:31
6-Фидер > Спасибо за пример.

Остался вопрос: Зачем обязательно с интерфейсом?

"сеанс с интерфейсом существенно тянет ресурсы".

Как вариант - без ОЛЕ тогда обходись, либо наращивай ресурсы на данном ПК, либо переходи на СУБД, либо переходи на терминал...

Без ОЛЕ:
Из Б1 что-то куда-то выгружать по кнопочке, В Б2 - оттуда загружать по кнопочке...
10 - 10.10.2012 - 17:48
А что, ComConnector ещё не предлагали?
Я так и не вкурил зачем "внутри" сеанса Б1 иметь кусок интерфейса Б2...
Гость
11 - 10.10.2012 - 19:49
7,8.Зеленый тролль, DeiMos, roma_n. Я уже все предложенные вами варианты до этого пересмотрел. Ситуация такая как я пишу. Б1 интегрировать в Б2 будет сложно, да и не нужно - Б2 самостоятельная и Б1 в ней делает то, что пользователь мог бы делать и сам. Еще куча приколов есть в этом взаимодействии. С точки зрения Б2 она и не знает (конечно условно), что вместо пользователя ее параллельно робот пользует - для нее все как обычно. Но так и надо. Многие вещи не работают без интерфейса (это для roma_n - так что ComConnector не подходит, а жаль - это бы все решило, тем более что ресурсов почти не тянет).
Я просто что хочу сказать. Сейчас все работает как надо - за одним исключением: пользователю надо выходить из Б2 и запускать ее снова через Б1 чтобы не тормозило или тормозило хотя бы приемлемо. Пользователи не жалуются - им все нравится что я им делаю и даже за такую реализацию благодарны, но я чую, что это не кашерно как-то и хочу, если есть возможность, сделать чтобы подключаться к уже запущенной на компе Б2. Может быть покажусь слишком самоуверенным, но то что мне нужно - это единственный вариант, если не трогать Б2. Я в помощи нашел функцию ПолучитьCOMОбъект() - по описанию должна была помочь, но не получается, а если бы и получалось, то не понятно как указывать к какой из открытых баз соединиться.
12 - 10.10.2012 - 20:05
Многие вещи не работают без интерфейса
- например?
banned
13 - 10.10.2012 - 20:31
Многие вещи не работают без интерфейса
- например?
14 - 10.10.2012 - 21:14
интерфейс полностью грузится? тогда сменить всем юзерам пароли к Б2 и заставить запускать только через Б1.
Гость
15 - 10.10.2012 - 23:47
12 и 13. В ряде открытых форм в Б2 пользователь выполняет ввод данных. Производятся промежуточные вычисления самой Б2 при изменении того или иного реквизита как документа, так и в табличных частях. Б1 следит за этим и помогает изменять значения требуемым образом используя при этом свои данные. Пользователи могли бы это делать и без Б1, но тогда пришлось бы справляться к некоторой требуемой информации. Ну такая особенность. Б2 менять не надо. Компы уж какие есть.
14. Да интерфейс грузится полностью. Принуждать никого не надо. Пользователи и так работают. Улучшить - это моя собственная инициатива. Не получится и ладно. Но если так можно сделать - то я реализую и успокоюсь. Просто иногда нужна Б1, а иногда нет, а Б2 всегда нужна. Если всегда запускать сразу Б2 из Б1, а Б1 не нужна, то компы будут притормаживать без надобности (когда Б1 не нужна, а запущена).

Если я правильно понял, то либо нельзя так сделать, либо вы как и я не знаете как так сделать.

Я по инету искал - информация встречается скудно, да и та, что встречается ни одна не дает нужного ответа. По ходу нельзя так сделать в 1с.
16 - 11.10.2012 - 08:10
15-Фидер > ни вразумительного, ни невнятного ответа на вопрос (12,13) в (15) я не вижу. Зачем интерфейс-то? Что отрабатывает OLE и невозможно при данных условиях отработать в COMconnector?
Гость
17 - 11.10.2012 - 09:18
16.roma n - ну как же не видно вразумительного? Я же пишу пользователь заполняет/меняет реквизиты документа (это как пример из ряда ситуаций у меня). Документ еще не записан и до его записи еще далеко! В COMconnector я этого не увижу и не отреагирую, а значит пользователю все придется заполнять и справляться как надо самому. Т.е. опять, так сказать, в "каменный век". Б2 менять не надо. Если бы можно было - все было бы куда прозаичнее и этой темы от меня не было бы.
Гость
18 - 11.10.2012 - 10:48
чего наводить тень на плетень ? что там за расчёты ? юзер воводит то что вводит, записал. Скопируй и перепиши нужны и недостающие расчёты-данные
19 - 11.10.2012 - 11:58
17-Фидер > Каким образом Application узнаёт, что "пользователь что-то вводит в документ который ещё не записан"? Как этому помогает интерфейс? Печёнкой чую, что вызов функций/методов Applicanion производится явно. Так что мешает вызвать эти процедуры/функции в Com ???
Интерфейс нужен, если необходимо организовать интерактивный ввод данных в "чужую" базу. Во всех остальных случаях - консерватория не та. ИМХО
Гость
20 - 11.10.2012 - 16:54
Фактически, тебе нужен какой то канал передачи данных между 2мя запущенными работающими 1Сками. И это будет точно не OLE - обмен файлами или UDP
Гость
21 - 11.10.2012 - 18:13
Блин, ну что за форум? Я спрашиваю как мне именно надо, а вы мне все в сторону уйти предлагаете. Причем каждый раз я же говорю - все работает и так, только перезапускаться надо. И каждый раз в сторону предложение. Мне что, всю кухню тут надо расписать? Что за допросы с пристрастием?

Всем спасибо, тема закрыта.
22 - 11.10.2012 - 19:55
21-Фидер > так и пиши в вопросе "отвечать только <да> или <нет>".
Гость
23 - 12.10.2012 - 06:51
плохому танцору всегда что-то мешает
24 - 12.10.2012 - 07:59
21-Фидер > а мы не ищем лёгких путей... :)
Мне вот, честно, интересно узнать ответы.
Мало ли... Неизвестно где и когда опыт может пригодиться, а я так и не понял каким образом решить задачу тебе помогает интерфейс "чужой" базы...
Гость
25 - 12.10.2012 - 22:25
24 roma n, "Мне вот, честно, интересно узнать ответы. " - спасибо за честность. А то я уже подумал - то ли лыжи ..., то ли я ...
26 - 13.10.2012 - 01:17
banned
27 - 13.10.2012 - 12:01
25-Фидер > Ты не отмазывайся, ты на вопросы Жаждущего сообщества ответь?


Вопросы (12, 13)...

Примеры приведи нужды в интерфейсе?


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены