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Объект(). Написано, что если первый параметр опустить, а во втором передать имя класса, то, вроде как можно получить соединение к уже запущенному ОЛЕ серверу. Пробовал - не получилось. Да и не пойму, а если несколько будет запущено баз, то как определять к какой соединиться (если, конечно получилось бы - а тож нет)? | |
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
| если это тупо обмен документами, то зачем в реальном режиме времени? и проще вести обе организации в одной базе (типовая БП проф не запрещает). | |
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
| Многие вещи не работают без интерфейса - например? | |
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
| | |
27
- 13.10.2012 - 12:01
|
25-Фидер > Ты не отмазывайся, ты на вопросы Жаждущего сообщества ответь? Вопросы (12, 13)... Примеры приведи нужды в интерфейсе? | |
| Интернет-форум Краснодарского края и Краснодара |