Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как проверить идет ли обмен данными по Com-соединению?

Как проверить идет ли обмен данными по Com-соединению?
Я
   Mikhail Volkov
 
19.05.20 - 09:45
Вопрос был задан в теме Ошибка формата потока - не открывается конфигуратор. Установка Com-соединения процесс длительный, сразу после обмена его нельзя разрывать, может понадобится. Сейчас оно разрывается по выходу пользователя из базы, или при подключении к другой базе. Хотелось бы рвать его по истечении получаса, но если оно не используется.
   VladZ
 
1 - 19.05.20 - 10:15
Предлагаю отказаться от работы по Com-соединению. Избавишься от многих проблем.
   Mikhail Volkov
 
2 - 19.05.20 - 10:35
(1) OLE нужен.
   ДенисЧ
 
3 - 19.05.20 - 10:42
(2) OLE не нужен
   Mikhail Volkov
 
4 - 19.05.20 - 10:52
(3) Нужен/не нужен - еще вопрос... до меня бы. Можно ли сразу открыть объект (не всю базу) по найденной ссылке в другой базе?
А по вопросу темы нет ответа?
   Галахад
 
5 - 19.05.20 - 10:57
(4) Ну, не выходить сразу, а через полчаса.
   ДенисЧ
 
6 - 19.05.20 - 11:00
(4) "Можно ли сразу открыть объект (не всю базу) по найденной ссылке в другой базе?"
За такое нужно бить тапком. По рыжей.
   Mikhail Volkov
 
7 - 19.05.20 - 11:09
(6) Что так? Какая-то альтернатива OLE.
   Mikhail Volkov
 
8 - 19.05.20 - 11:14
(5) Через полчаса по новой установит Com-соединение, если нужно.
   VladZ
 
9 - 19.05.20 - 11:16
(8) Зачем?
   Mikhail Volkov
 
10 - 19.05.20 - 11:40
(9) Что зачем? Если нужно что-то получить или записать в другой базе. Или по (4): сделал пользователь сверку двух баз (можно без Com-соединения, чем-то другим), обнаружил документ несоответствия. Хочет его открыть в той базе, прямо из своей базы, посмотреть, например, кто его редактировал.
   fisher
 
11 - 19.05.20 - 11:42
Логируй.
Анализируй лог.
Профит.
   VladZ
 
12 - 19.05.20 - 11:55
(10) Вывел реестр. Отдал тем, кто отвечает за эти данные.
Дальнейший анализ - в рамках другой информационной базы. Com-соединение не нужно.
   Mikhail Volkov
 
13 - 19.05.20 - 13:26
(12) Приведу примеры использования Com-соединений: Обязательно ли совпадение версий платформы баз при соединении по COM ?, Обмен Альфа-Авто с КА2 (ERP): что лучше использовать WEB или HTTP сервис вместо COM?, Службы компонентов: возможно ли создать обертку OLE соединения V83.Application - в последнем как обойдешься без OLE? Но сейчас вопрос не о этом.
(11) Не то. Com-соединение хранится в переменной. Когда пользователю нужно обратиться к другой базе, то проверяется эта переменная. Если она Неопределено или не соответствует подключаемой базе, тогда устанавливается новое Com-соединение. Во время этой проверки в любом случае надо запускать или пере запускать обработку ожидания на разрыв Com-соединения. Это первое что в голову приходит. Может что лучше предложишь?
   VladZ
 
14 - 19.05.20 - 13:49
(13) Ты привел список проблем, а не список примеров. Мой ответ не изменился: от Com-соединения необходимо отказаться.
   Mikhail Volkov
 
15 - 19.05.20 - 14:23
(14) Да, и список проблем. Можешь их решить без Com-соединения?
Что-то не понял на счет перезапуска ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>), если Однократно = Ложь и Интервал не истек, то она начнет с начало отсчитывать Интервал? А после того как отчитает Интервал, то надо делать ОтключитьОбработчикОжидания() или нет?
   Mikhail Volkov
 
16 - 19.05.20 - 18:11
При перезапуске (пользователь снова обратился к другой базе) надо ли выполнять ОтключитьОбработчикОжидания(<ИмяПроцедуры>) перед ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>), чтобы отсчет интервала пошел с начала?
   breezee
 
17 - 19.05.20 - 19:22
Ком очень медленный. ОООООЧЕНЬ. Запилите веб-сервис
   Mikhail Volkov
 
18 - 20.05.20 - 11:11
Написал так:
// Старт/Перезапуск Com-соединения для его завершения через полчаса: 30*60

//
Процедура СтартComСоединения() Экспорт
    Если ОбъектКА <> Неопределено Тогда
        ОтключитьОбработчикОжидания("ЗавершениеComСоединения");
    КонецЕсли;
    ПодключитьОбработчикОжидания("ЗавершениеComСоединения", 1800);
КонецПроцедуры    // СтартComСоединения()


// Завершение Com-соединения

//
Процедура ЗавершениеComСоединения() Экспорт
    ОбъектКА = Неопределено;
КонецПроцедуры    // ЗавершениеComСоединения()


Вызываю из ВыполнитьПодключениеКА(), все в одном общем модуле с галочками: Сервер и Клиент (обычное приложения), но без Глобальный. Получаю ошибку:
Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания)
    ПодключитьОбработчикОжидания("ЗавершениеComСоединения", 1800);
по причине:
ПодключитьОбработчикОжидания Недопустимое значение параметра (параметр номер '1')

Из справки: Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля. Процедура должна располагаться на клиенте.
Перенес процедуру ЗавершениеComСоединения() в Глобальный модуль - заработало!? Но не хотелось бы переносить в "чужие" модули, и на своем Глобальный не хочется ставить. Как сделать?
   VladZ
 
19 - 20.05.20 - 12:08
(15) В (13) указаны проблемы, связанные с COM. Откажешься - и этих проблем не будет.
Я не вижу причин, по которым ты используешь COM. Искать их по указанным ссылкам не буду - у меня на это нет времени.

Составь сам список механизмов, которые тебе нужны и разработай план работ по отказу от COM.
   Mikhail Volkov
 
20 - 20.05.20 - 12:29
(19) Думаю над этим, тем более для разных версий платформ. От Com можно отказаться, но не от OLE. Например, есть решение проблемы (4)?
А по (18), обязательно в Глобальном модуле (вроде в справки "или")?
   VladZ
 
21 - 20.05.20 - 12:38
(20) "Можно ли сразу открыть объект (не всю базу) по найденной ссылке в другой базе?" 

Да, есть решение:
1. Найти причины, по которым необходимо это делать.
2. Отказаться от них: либо решить, либо забить на них.
3. Больше никогда не открывать объект из другой базы.

Всё.
   Mikhail Volkov
 
22 - 20.05.20 - 13:41
(21) Понятно: не делать, отказаться, забить... на кого.
(18)+ Перенес процедуру ЗавершениеComСоединения() в глобальный модуль, а там: Переменная не определена (ОбъектКА) - объявлена Экспорт в модуле обычного приложения. Почему?
   Mikhail Volkov
 
23 - 20.05.20 - 15:54
Вроде переменная объявленная в модуле обычного приложения как Экспорт везде рулит, а в глобальном модуле нет!?
Ладно, вернул ЗавершениеComСоединения() в свой модуль (там ОбъектКА точно работает), в глобальном переименовал в глЗавершениеComСоединения(), и прописал в ней ссылку на ЗавершениеComСоединения() в своем модуле.
Все работает, но нельзя ли обойтись без глобального модуля?
   Mikhail Volkov
 
24 - 26.05.20 - 15:07
(21) Все же: Можно ли сразу открыть объект (например, из командной строки) по найденной ссылке в другой базе?
   Mikhail Volkov
 
25 - 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/.
   Mikhail Volkov
 
26 - 27.05.20 - 10:59
(25)+ В первой статье говорится, что вроде можно открыть  объект по найденной ссылке в другой базе не используя Com, AutoIt, только стандартные механизмы 1С?
   Mikhail Volkov
 
27 - 28.05.20 - 09:43
По последнему вопросу создал новую тему Открыть объект по найденной ссылке в другой базе


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.