|
V82.Application проблема при повтором соединении | ☑ | ||
---|---|---|---|---|
0
golden-pack
16.10.11
✎
15:17
|
Код:
1.КОМ = Новый COMОбъект("V82.Application"); 2.Соединение = КОМ.Connect(СтрокаСоединения); 3.//произвольный код 4.Соединение = КОМ.Connect(СтрокаСоединения); Вопрос: В строке 2 - например происходит сбой авторизации, почему при выполнении строки 4 - происходит неизвестная ошибка ? Вот так работает, но вопрос в силе: 1.КОМ = Новый COMОбъект("V82.Application"); 2.Соединение = КОМ.Connect(СтрокаСоединения); 3.//произвольный код 4.КОМ = Новый COMОбъект("V82.Application"); 5.Соединение = КОМ.Connect(СтрокаСоединения); |
|||
1
golden-pack
16.10.11
✎
15:18
|
Например КомКоннектор так работает:
1.КОМ = Новый COMОбъект("V82.COMConnector"); 2.Соединение = КОМ.Connect(СтрокаСоединения); 3.//произвольный код 4.Соединение = КОМ.Connect(СтрокаСоединения); |
|||
2
golden-pack
17.10.11
✎
02:36
|
ап
|
|||
3
golden-pack
17.10.11
✎
05:34
|
up
|
|||
4
vicof
17.10.11
✎
06:07
|
возможно, в первом случае уже подконнекчено к одному объекту, и к нему же пытается коннектиться.
|
|||
5
golden-pack
17.10.11
✎
06:09
|
(4) хорошо - еще вариант зависло соединение - тогда вопрос:
Как отконнектить тогда, без объявления Новый ComОбъект ? Есть такая процедура ? |
|||
6
vicof
17.10.11
✎
06:11
|
Возможно, Quit()
|
|||
7
golden-pack
17.10.11
✎
06:13
|
(6) спс. буду пробывать
|
|||
8
marty0701
17.10.11
✎
06:31
|
В случае Automation-сервера запускается полноценное приложение 1С:Предприятие 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер. В 1ом случае у тебя ошибка доступа к БД и приплыли.
|
|||
9
golden-pack
17.10.11
✎
06:37
|
(8) приплыли к чему ?
|
|||
10
marty0701
17.10.11
✎
06:42
|
(9)Вранье, но все равно приплыли.
|
|||
11
golden-pack
17.10.11
✎
06:45
|
(10) не пиши тут ни о чем пожалуйста
|
|||
12
marty0701
17.10.11
✎
06:46
|
(11)Почему?
|
|||
13
golden-pack
17.10.11
✎
14:19
|
(6) Quit() Exit() Close()
Не работают! UP! |
|||
14
Nutsiiam
17.10.11
✎
14:50
|
= неопределено
|
|||
15
golden-pack
17.10.11
✎
16:47
|
сразу пробовал - не работает
|
|||
16
golden-pack
17.10.11
✎
17:22
|
ап
|
|||
17
golden-pack
18.10.11
✎
01:47
|
up
|
|||
18
golden-pack
18.10.11
✎
06:01
|
up
|
|||
19
golden-pack
18.10.11
✎
08:19
|
up
|
|||
20
Diversus
18.10.11
✎
08:31
|
Необходимо использовать
КОМ.ЗавершитьРаботуСистемы(Ложь); |
|||
21
golden-pack
18.10.11
✎
10:50
|
(20) спасибо - буду пробывать
|
|||
22
golden-pack
18.10.11
✎
13:26
|
(20) Метод ЗавершитьРаботуСистемы не обнаружен :(
|
|||
23
golden-pack
18.10.11
✎
16:04
|
ап
|
|||
24
golden-pack
19.10.11
✎
03:54
|
апппппп
|
|||
25
golden-pack
19.10.11
✎
09:09
|
ап
|
|||
26
Diversus
19.10.11
✎
09:15
|
>> Метод ЗавершитьРаботуСистемы не обнаружен :(
Его надо использовать для Application. Проверено, у меня этот метод работает... |
|||
27
golden-pack
19.10.11
✎
09:19
|
(26) после сбоя авторизации - в обработке исключения = не обнаружен. Проверено.
|
|||
28
Diversus
19.10.11
✎
09:28
|
(27) А почему не использовать новое COM-соединение для следующего подключения, например, КОМ2?
И если хотите решить проблему, лучше опиши задачу полнее, а то не понятно зачем это все делается... |
|||
29
golden-pack
19.10.11
✎
10:02
|
(28) с ком2 мысль - согласен - попробую.
Задачу смысла описывать нет, т.к. проблема описана в полном объеме. |
|||
30
MaxS
19.10.11
✎
10:07
|
В типовых бывают настройки запрет нескольких соединений.
Может быть при втором входе где-то появляется модальное окно, которое пытается сообщить, что нельзя войти. |
|||
31
golden-pack
19.10.11
✎
10:09
|
конфа нетиповая. Запретов нет.
|
|||
32
golden-pack
19.10.11
✎
12:59
|
ап
|
|||
33
MaxS
19.10.11
✎
15:02
|
см.(28)
|
|||
34
golden-pack
20.10.11
✎
02:13
|
(33) это как вариант. но вопрос из (0) в силе.
|
|||
35
golden-pack
20.10.11
✎
14:56
|
ап
|
|||
36
izekia
20.10.11
✎
15:05
|
а MaxConnections у менедждера соединений какой стоит?
|
|||
37
Serginio1
20.10.11
✎
15:09
|
(36) у Automation сервер такого понятия нет. Поэтому наверное и не срабатывает второе соединеие
|
|||
38
izekia
20.10.11
✎
15:13
|
(37) а в СП?
|
|||
39
izekia
20.10.11
✎
16:37
|
(37) в смысле в СП не предлагать посмотреть?)
|
|||
40
Serginio1
20.10.11
✎
16:47
|
(39) В спаравке даже такой код присутствует
connector = Новый COMObject("V82.Application"); connector.Connect("File=c:\InfoBases\Trade;Usr=Director;") ТДокумент = connector.NewObject("ТекстовыйДокумент"); ТДокумент.ВставитьСтроку(1, "Новая строка"); Сообщить(ТДокумент. КоличествоСтрок()); То есть Один экземпляр соединения |
|||
41
izekia
20.10.11
✎
16:49
|
(40) как это соотносится с (37)
про имакс коннекшнс, кстати, раз настолько лень) Менеджер COM-соединений (COM connector) MaxConnections (MaxConnections) Использование: Только чтение. Описание: Тип: Число. Определяет максимальное число одновременно существующих объектов Внешнее соединение, созданных через данный менеджер COM-соединений. Число одновременно существующих соединений включает также число соединений, находящихся в пуле внешних соединений. Значением по умолчанию 0 (число одновременно существующих объектов Внешнее соединение не ограничено). Устанавливать свойству не нулевое значение можно только в том случае, если сам объект был создан в Multithreaded Apartment (MTA), что обеспечивает реальное функционирование самого менеджера и созданных им объектов Внешнее соединение в многопотоковой (multithreaded) среде. Это условие соблюдается в частности, если COM-соединитель был создан в приложении ASP.NET. Если же объект был создан в Singlethreaded Apartment (STA), то реально все действия с ним и созданными им объектами Внешнее соединение будут выполняться в одном потоке. В этом случае, если метод Connect не сможет на первом проходе найти подходящее или создать новое Внешнее соединение, то выполнение этого метода зациклится, так как освободить уже, возможно, ненужное другое Внешнее соединение будет нельзя по той причине, что операция освобождения объекта Внешнее соединение должна быть выполнена в том же потоке, в котором уже выполняется метод Connect. Следует помнить, что создание COM-объектов из приложения 1C:Предприятие 8 выполняется из STA. Это же справедливо для большинства GUI-приложений Windows. Доступность: Интеграция. |
|||
42
Serginio1
20.10.11
✎
17:02
|
А ты не путаешь COMObject("V82.Application");
с COMОбъект("V82.COMConnector"); ? |
|||
43
izekia
20.10.11
✎
17:30
|
(42) ой пля простите, я - осел
|
|||
44
Serginio1
20.10.11
✎
17:44
|
Ну зачем, же так жестко? Если даже ошибся, ничего страшного. "и опыт сын ошибок трудных и гений парадоксов друг"
|
|||
45
izekia
20.10.11
✎
18:36
|
(44) да первый пост внимательно не прочитал, сорри)
|
|||
46
golden-pack
21.10.11
✎
01:53
|
Итог за 5 дней жизни темы: "V82.Application" - 1 соединение максимум. жаль.
|
|||
47
H A D G E H O G s
21.10.11
✎
01:57
|
Щас посмотрим
|
|||
48
H A D G E H O G s
21.10.11
✎
02:33
|
Да, действительно, при ошибке в Коннекте, при повторном коннекте - неопознанная ошибка.
1) ЗавершитьРаботуСистемы() как и свойство visible доступны только после успешного коннекта! 2) Отключать надо так КОМ =неопределено; 3) Вот это у меня вполне работает, см. отладку по шагам и наличие процессов в диспетчере &НаКлиенте Перем Соединение; &НаКлиенте Процедура коннект(Команда) КОМ = Новый COMОбъект("V82.Application"); Попытка Соединение = КОМ.Connect("File=""G:\database\8.2\Пустая\Пустая1"";usr=badname"); КОМ.visible=Истина; возврат; Исключение КОМ=Неопределено; КонецПопытки; КОМ = Новый COMОбъект("V82.Application"); Попытка Соединение = КОМ.Connect("File=""G:\database\8.2\Пустая\Пустая1"";usr=admin"); КОМ.visible=Истина; Ком.ЗавершитьРаботуСистемы(Ложь); возврат; Исключение КОМ=Неопределено; КонецПопытки; КонецПроцедуры |
|||
49
golden-pack
21.10.11
✎
02:52
|
Ок.
|
|||
50
H A D G E H O G s
21.10.11
✎
02:56
|
||||
51
golden-pack
21.10.11
✎
04:03
|
(50) нет. вот такЪ http://demotivation.me/lgeotvm42dscpic.html
|
|||
52
TAA
21.10.11
✎
04:49
|
Ты похоже не закрыв базу пытаешься снова подключиться в случае COM это прокатит а с Application нет
|
|||
53
golden-pack
21.10.11
✎
05:08
|
(52) >>>Ты похоже
Ты код в (0) видел ??????? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |