Можно ли в 1С v.8 хранить COM объект в глобальной переменной? #506425


#0 by Анатоль
Исходные данные:  1. Есть внешняя обработка для подключения торгового оборудования  2. Есть OLE сервер этого самого оборудования  3. Оборудование подключается в COM порт Есть написанный код, по общению 1С и OLE сервера, причем код написан так, что новый COM объект, содержащий OLE сервер, создается один раз. НО возникает следующая проблема:   - при очередном обращении к методам OLE сервера он говорит что COM порт занят другим приложением. Вопрос: может ли 1C при присваивании из глобальной переменной создавать новый OLE объект?
#1 by Defender aka LINN
Конечно. Создает, заново соединяется, свойства устанавливает...
#2 by Анатоль
Детализация задачи:   1. Проверил что на компьютере пользователи запускают только 1С.   2. 1С добавлена в исключения антивируса   3. COM порт занят не всегда, а иногда (как повезёт)   4. Оборудование - это фискальный регистратор   5. Код       5.1. В модуль приложения добавлены переменные  глДрайверOLE и глДрайверПодключен       5.2. Фрагмент кода, когда создается драйвер         Если глДрайверПодключен = Неопределено Тогда т.е. он по сути не должен создаваться новый
#3 by Анатоль
Defender aka LINN   по моей задумке драйвер не должен каждый раз создаваться, потому что он используется в разных местах конфигурации и обслуживает несколько логических устройств
#4 by big
что находится в глДрайверПодключен ??
#5 by Анатоль
в глДрайверПодключен находится значение Истина, после первого вызова
#6 by Анатоль
Вопрос собственно вот в чем: может ли 1С в момент, когда я просто присваиваю драйвер из глобальной переменной каким-то образом попытаться заново создать OLE объект А именно здесь:
#7 by big
надо проверять не так, а просмотром свойства УстройствоПодключено и ещё, вполне вероятно, что установлено свойство ВременноЗахватыватьУстройство. Тогда драйвер по прошествии некоторого времени отключается от фискальника (вроде бы так).
#8 by big
нет, ничего такого не будет происходить
#9 by Анатоль
Спасибо - буду дальше смотреть
#10 by ILM
Я бы проверил Если НЕ Драйвер = Неопределено Тогда
#11 by Torquader
Если блокируется порт, то где-то создаётся второй объект драйвера, который конфликтует с первым.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С