|
Как проверить идет ли обмен данными по Com-соединению? | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
19.05.20
✎
09:45
|
Вопрос был задан в теме Ошибка формата потока - не открывается конфигуратор. Установка Com-соединения процесс длительный, сразу после обмена его нельзя разрывать, может понадобится. Сейчас оно разрывается по выходу пользователя из базы, или при подключении к другой базе. Хотелось бы рвать его по истечении получаса, но если оно не используется.
|
|||
1
VladZ
19.05.20
✎
10:15
|
Предлагаю отказаться от работы по Com-соединению. Избавишься от многих проблем.
|
|||
2
Mikhail Volkov
19.05.20
✎
10:35
|
(1) OLE нужен.
|
|||
3
ДенисЧ
19.05.20
✎
10:42
|
(2) OLE не нужен
|
|||
4
Mikhail Volkov
19.05.20
✎
10:52
|
(3) Нужен/не нужен - еще вопрос... до меня бы. Можно ли сразу открыть объект (не всю базу) по найденной ссылке в другой базе?
А по вопросу темы нет ответа? |
|||
5
Галахад
гуру
19.05.20
✎
10:57
|
(4) Ну, не выходить сразу, а через полчаса.
|
|||
6
ДенисЧ
19.05.20
✎
11:00
|
(4) "Можно ли сразу открыть объект (не всю базу) по найденной ссылке в другой базе?"
За такое нужно бить тапком. По рыжей. |
|||
7
Mikhail Volkov
19.05.20
✎
11:09
|
(6) Что так? Какая-то альтернатива OLE.
|
|||
8
Mikhail Volkov
19.05.20
✎
11:14
|
(5) Через полчаса по новой установит Com-соединение, если нужно.
|
|||
9
VladZ
19.05.20
✎
11:16
|
(8) Зачем?
|
|||
10
Mikhail Volkov
19.05.20
✎
11:40
|
(9) Что зачем? Если нужно что-то получить или записать в другой базе. Или по (4): сделал пользователь сверку двух баз (можно без Com-соединения, чем-то другим), обнаружил документ несоответствия. Хочет его открыть в той базе, прямо из своей базы, посмотреть, например, кто его редактировал.
|
|||
11
fisher
19.05.20
✎
11:42
|
Логируй.
Анализируй лог. Профит. |
|||
12
VladZ
19.05.20
✎
11:55
|
(10) Вывел реестр. Отдал тем, кто отвечает за эти данные.
Дальнейший анализ - в рамках другой информационной базы. Com-соединение не нужно. |
|||
13
Mikhail Volkov
19.05.20
✎
13:26
|
(12) Приведу примеры использования Com-соединений: Обязательно ли совпадение версий платформы баз при соединении по COM ?, Обмен Альфа-Авто с КА2 (ERP): что лучше использовать WEB или HTTP сервис вместо COM?, Службы компонентов: возможно ли создать обертку OLE соединения V83.Application - в последнем как обойдешься без OLE? Но сейчас вопрос не о этом.
(11) Не то. Com-соединение хранится в переменной. Когда пользователю нужно обратиться к другой базе, то проверяется эта переменная. Если она Неопределено или не соответствует подключаемой базе, тогда устанавливается новое Com-соединение. Во время этой проверки в любом случае надо запускать или пере запускать обработку ожидания на разрыв Com-соединения. Это первое что в голову приходит. Может что лучше предложишь? |
|||
14
VladZ
19.05.20
✎
13:49
|
(13) Ты привел список проблем, а не список примеров. Мой ответ не изменился: от Com-соединения необходимо отказаться.
|
|||
15
Mikhail Volkov
19.05.20
✎
14:23
|
(14) Да, и список проблем. Можешь их решить без Com-соединения?
Что-то не понял на счет перезапуска ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>), если Однократно = Ложь и Интервал не истек, то она начнет с начало отсчитывать Интервал? А после того как отчитает Интервал, то надо делать ОтключитьОбработчикОжидания() или нет? |
|||
16
Mikhail Volkov
19.05.20
✎
18:11
|
При перезапуске (пользователь снова обратился к другой базе) надо ли выполнять ОтключитьОбработчикОжидания(<ИмяПроцедуры>) перед ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>), чтобы отсчет интервала пошел с начала?
|
|||
17
breezee
19.05.20
✎
19:22
|
Ком очень медленный. ОООООЧЕНЬ. Запилите веб-сервис
|
|||
18
Mikhail Volkov
20.05.20
✎
11:11
|
Написал так:
// Старт/Перезапуск Com-соединения для его завершения через полчаса: 30*60 // Процедура СтартComСоединения() Экспорт Если ОбъектКА <> Неопределено Тогда ОтключитьОбработчикОжидания("ЗавершениеComСоединения"); КонецЕсли; ПодключитьОбработчикОжидания("ЗавершениеComСоединения", 1800); КонецПроцедуры // СтартComСоединения() // Завершение Com-соединения // Процедура ЗавершениеComСоединения() Экспорт ОбъектКА = Неопределено; КонецПроцедуры // ЗавершениеComСоединения() Вызываю из ВыполнитьПодключениеКА(), все в одном общем модуле с галочками: Сервер и Клиент (обычное приложения), но без Глобальный. Получаю ошибку: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания) ПодключитьОбработчикОжидания("ЗавершениеComСоединения", 1800); по причине: ПодключитьОбработчикОжидания Недопустимое значение параметра (параметр номер '1') Из справки: Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля. Процедура должна располагаться на клиенте. Перенес процедуру ЗавершениеComСоединения() в Глобальный модуль - заработало!? Но не хотелось бы переносить в "чужие" модули, и на своем Глобальный не хочется ставить. Как сделать? |
|||
19
VladZ
20.05.20
✎
12:08
|
(15) В (13) указаны проблемы, связанные с COM. Откажешься - и этих проблем не будет.
Я не вижу причин, по которым ты используешь COM. Искать их по указанным ссылкам не буду - у меня на это нет времени. Составь сам список механизмов, которые тебе нужны и разработай план работ по отказу от COM. |
|||
20
Mikhail Volkov
20.05.20
✎
12:29
|
(19) Думаю над этим, тем более для разных версий платформ. От Com можно отказаться, но не от OLE. Например, есть решение проблемы (4)?
А по (18), обязательно в Глобальном модуле (вроде в справки "или")? |
|||
21
VladZ
20.05.20
✎
12:38
|
(20) "Можно ли сразу открыть объект (не всю базу) по найденной ссылке в другой базе?"
Да, есть решение: 1. Найти причины, по которым необходимо это делать. 2. Отказаться от них: либо решить, либо забить на них. 3. Больше никогда не открывать объект из другой базы. Всё. |
|||
22
Mikhail Volkov
20.05.20
✎
13:41
|
(21) Понятно: не делать, отказаться, забить... на кого.
(18)+ Перенес процедуру ЗавершениеComСоединения() в глобальный модуль, а там: Переменная не определена (ОбъектКА) - объявлена Экспорт в модуле обычного приложения. Почему? |
|||
23
Mikhail Volkov
20.05.20
✎
15:54
|
Вроде переменная объявленная в модуле обычного приложения как Экспорт везде рулит, а в глобальном модуле нет!?
Ладно, вернул ЗавершениеComСоединения() в свой модуль (там ОбъектКА точно работает), в глобальном переименовал в глЗавершениеComСоединения(), и прописал в ней ссылку на ЗавершениеComСоединения() в своем модуле. Все работает, но нельзя ли обойтись без глобального модуля? |
|||
24
Mikhail Volkov
26.05.20
✎
15:07
|
(21) Все же: Можно ли сразу открыть объект (например, из командной строки) по найденной ссылке в другой базе?
|
|||
25
Mikhail Volkov
26.05.20
✎
19:37
|
(24)+ Нашел пару обработок: Открытие документов и справочников по ссылке в другой базе http://catalog.mista.ru/public/1042208/ и Простой способ открыть документ по ссылке из другой базы http://catalog.mista.ru/public/191975/. Обе используют программу AutoIt, которую можно скачать с сайта http://www.autoitscript.com/site/autoit/downloads/.
|
|||
26
Mikhail Volkov
27.05.20
✎
10:59
|
(25)+ В первой статье говорится, что вроде можно открыть объект по найденной ссылке в другой базе не используя Com, AutoIt, только стандартные механизмы 1С?
|
|||
27
Mikhail Volkov
28.05.20
✎
09:43
|
По последнему вопросу создал новую тему Открыть объект по найденной ссылке в другой базе
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |