Подсоединиться к запущенному сеансу. Здравствуйте. Я соединяюсь из 1С 8.2 (назовем ее Б1) через ОЛЕ к другой базе 1С 8.2. (назовем ее Б2). Но для этого надо, чтобы на компьютере у пользователя Б2 не была запущена. Если запущена, то сначала пользователь ее закрывает, а потом Б1 ее запускает с интерфейсом. Пользователь может работать как с Б1, так и с Б2, а также Б1 может работать с Б2. Б2 приоритетнее, поэтому она часто запущена у пользователя прежде чем требуется запустить Б1. Я хочу пользователям упростить этот момент - сначала закрывать Б2, чтобы запустить Б1, а она потом Б2. Сам вопрос - могу ли я в Б1 соединиться к уже запущенному сеансу Б2 с интерфейсом? Как пример - из конфигуратора я могу к запущенному процессу, правда этой же базы, подсоединиться для отладки, хотя конфигуратор был позднее запущен. В общем, как-то так. |
можно и нового пользователя завести в Б2 |
Пользователь имелся в виду физический - сам оператор. В обоих базах он заведен. Из Б1 в Б2 подключаться может. Просто надо, чтобы если Б2 уже запущена, то не создавался новый сеанс Б2 с интерфейсом, а Б1 получала ОЛЕ соединение к уже запущенной Б2. |
В справке описана функция ПолучитьCOMОбъект(). Написано, что если первый параметр опустить, а во втором передать имя класса, то, вроде как можно получить соединение к уже запущенному ОЛЕ серверу. Пробовал - не получилось. Да и не пойму, а если несколько будет запущено баз, то как определять к какой соединиться (если, конечно получилось бы - а тож нет)? |
2-Фидер > "Просто надо, чтобы если Б2 уже запущена, то не создавался новый сеанс Б2 с интерфейсом" - Так по ОЛЕ - никакого интерфейса юзер и не увидит... Заводи служебного пользователя "Робот" в Б2 и не выноси мосх ни себе ни людям... |
я вот тоже не понял про интерфейс по OLE. может от жизни отстал, конечно... дай код посмотреть как OLE с интерфейсом запустить? а главное, зачем? по идее, подключился, хапнул данных, отключился... жамкает юзер только в экземпляре-источнике (иначе всё равно запутается). |
СоединениеСИнтерфейсом = Новый 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 по пользователю не ограничено. |
6-Фидер > погляжу про подключение к существующему. но по идее подключение к базе (хоть по OLE хоть ещё как) нужно только для получения или передачи данных. и запускать у каждого клиента вторую базу с интерфесом довольно-таки... не экономно. имхо. может всё-таки можно без интерфейса и выполнять на сервере... по обработке ожидания... или ещё как? в общем, чего в интерфейсе юзеры монстрячат? |
если это тупо обмен документами, то зачем в реальном режиме времени? и проще вести обе организации в одной базе (типовая БП проф не запрещает). |
6-Фидер > Спасибо за пример. Остался вопрос: Зачем обязательно с интерфейсом? "сеанс с интерфейсом существенно тянет ресурсы". Как вариант - без ОЛЕ тогда обходись, либо наращивай ресурсы на данном ПК, либо переходи на СУБД, либо переходи на терминал... Без ОЛЕ: Из Б1 что-то куда-то выгружать по кнопочке, В Б2 - оттуда загружать по кнопочке... |
А что, ComConnector ещё не предлагали? Я так и не вкурил зачем "внутри" сеанса Б1 иметь кусок интерфейса Б2... |
7,8.Зеленый тролль, DeiMos, roma_n. Я уже все предложенные вами варианты до этого пересмотрел. Ситуация такая как я пишу. Б1 интегрировать в Б2 будет сложно, да и не нужно - Б2 самостоятельная и Б1 в ней делает то, что пользователь мог бы делать и сам. Еще куча приколов есть в этом взаимодействии. С точки зрения Б2 она и не знает (конечно условно), что вместо пользователя ее параллельно робот пользует - для нее все как обычно. Но так и надо. Многие вещи не работают без интерфейса (это для roma_n - так что ComConnector не подходит, а жаль - это бы все решило, тем более что ресурсов почти не тянет). Я просто что хочу сказать. Сейчас все работает как надо - за одним исключением: пользователю надо выходить из Б2 и запускать ее снова через Б1 чтобы не тормозило или тормозило хотя бы приемлемо. Пользователи не жалуются - им все нравится что я им делаю и даже за такую реализацию благодарны, но я чую, что это не кашерно как-то и хочу, если есть возможность, сделать чтобы подключаться к уже запущенной на компе Б2. Может быть покажусь слишком самоуверенным, но то что мне нужно - это единственный вариант, если не трогать Б2. Я в помощи нашел функцию ПолучитьCOMОбъект() - по описанию должна была помочь, но не получается, а если бы и получалось, то не понятно как указывать к какой из открытых баз соединиться. |
[em]Многие вещи не работают без интерфейса[/em] - например? |
Многие вещи не работают без интерфейса - например? |
интерфейс полностью грузится? тогда сменить всем юзерам пароли к Б2 и заставить запускать только через Б1. |
12 и 13. В ряде открытых форм в Б2 пользователь выполняет ввод данных. Производятся промежуточные вычисления самой Б2 при изменении того или иного реквизита как документа, так и в табличных частях. Б1 следит за этим и помогает изменять значения требуемым образом используя при этом свои данные. Пользователи могли бы это делать и без Б1, но тогда пришлось бы справляться к некоторой требуемой информации. Ну такая особенность. Б2 менять не надо. Компы уж какие есть. 14. Да интерфейс грузится полностью. Принуждать никого не надо. Пользователи и так работают. Улучшить - это моя собственная инициатива. Не получится и ладно. Но если так можно сделать - то я реализую и успокоюсь. Просто иногда нужна Б1, а иногда нет, а Б2 всегда нужна. Если всегда запускать сразу Б2 из Б1, а Б1 не нужна, то компы будут притормаживать без надобности (когда Б1 не нужна, а запущена). Если я правильно понял, то либо нельзя так сделать, либо вы как и я не знаете как так сделать. Я по инету искал - информация встречается скудно, да и та, что встречается ни одна не дает нужного ответа. По ходу нельзя так сделать в 1с. |
15-Фидер > ни вразумительного, ни невнятного ответа на вопрос (12,13) в (15) я не вижу. Зачем интерфейс-то? Что отрабатывает OLE и невозможно при данных условиях отработать в COMconnector? |
16.roma n - ну как же не видно вразумительного? Я же пишу пользователь заполняет/меняет реквизиты документа (это как пример из ряда ситуаций у меня). Документ еще не записан и до его записи еще далеко! В COMconnector я этого не увижу и не отреагирую, а значит пользователю все придется заполнять и справляться как надо самому. Т.е. опять, так сказать, в "каменный век". Б2 менять не надо. Если бы можно было - все было бы куда прозаичнее и этой темы от меня не было бы. |
чего наводить тень на плетень ? что там за расчёты ? юзер воводит то что вводит, записал. Скопируй и перепиши нужны и недостающие расчёты-данные |
17-Фидер > Каким образом Application узнаёт, что "пользователь что-то вводит в документ который ещё не записан"? Как этому помогает интерфейс? Печёнкой чую, что вызов функций/методов Applicanion производится [b]явно[/b]. Так что мешает вызвать эти процедуры/функции в Com ??? Интерфейс нужен, если [u]необходимо организовать интерактивный ввод данных[/u] в "чужую" базу. Во всех остальных случаях - консерватория не та. ИМХО |
Фактически, тебе нужен какой то канал передачи данных между 2мя запущенными работающими 1Сками. И это будет точно не OLE - обмен файлами или UDP |
Блин, ну что за форум? Я спрашиваю как мне именно надо, а вы мне все в сторону уйти предлагаете. Причем каждый раз я же говорю - все работает и так, только перезапускаться надо. И каждый раз в сторону предложение. Мне что, всю кухню тут надо расписать? Что за допросы с пристрастием? Всем спасибо, тема закрыта. |
21-Фидер > так и пиши в вопросе "[b]отвечать только <да> или <нет>[/b]". |
плохому танцору всегда что-то мешает |
21-Фидер > а мы не ищем лёгких путей... :) Мне вот, честно, интересно узнать ответы. Мало ли... Неизвестно где и когда опыт может пригодиться, а я так и не понял каким образом решить задачу тебе помогает интерфейс "чужой" базы... |
24 roma n, "Мне вот, честно, интересно узнать ответы. " - спасибо за честность. А то я уже подумал - то ли лыжи ..., то ли я ... |
[img]http://demotivators.to/media/posters/4017/936159_nu-nakonets-to.jpg[/img] |
25-Фидер > Ты не отмазывайся, ты на вопросы Жаждущего сообщества ответь? Вопросы (12, 13)... Примеры приведи нужды в интерфейсе? |
Текущее время: 02:11. Часовой пояс GMT +3. |