Имя: Пароль:
1C
1С v8
сом объект на клиенте
,
0 Filosof
 
13.07.17
08:46
К клиентской машине подключены весы через Ком порт. Нужно считать вес на форму через тонкий клиент. Использую ВК Mscomm32.ocx. Пишу код в клиентской процедуре:
&НаКлиенте
Процедура Брутто(Команда)
Попытка
        Весы = Новый COMОбъект("MSCOMMLib.MSComm");
    Исключение
        Сообщить("Ошибка создания объекта компоненты MSCommLib (Mscomm32.ocx)", СтатусСообщения.Внимание);
        Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
        //Возврат;
    КонецПопытки;
    
    Весы.CommPort = 7;
    Весы.Settings = "9600,N,8,1";
    Весы.InputLen = 0;
    Попытка
        Весы.PortOpen = 1;
    Исключение
        Сообщить("Порт занят другим устройством, отключите его и повторите попытку");
    КонецПопытки;
    
    тЗапросНаВзвешивание = Символ(2) + "AB03" + Символ(3);
    
    Для Н = 1 по 5 Цикл        // попытки если вес не стабилен
        
        
        Весы.Output = тЗапросНаВзвешивание;
        
        Пока Весы.InBufferCount < 12 Цикл
            #Если Клиент Тогда
                ОбработкаПрерыванияПользователя();
            #КонецЕсли
        КонецЦикла;
        
        См = Весы.Input;
        
        Если ПустаяСтрока(См) Тогда
            
            Продолжить;
            
        Иначе
            //Сообщить(См);
            
            См = Сред(СтрЗаменить(См, Лев(тЗапросНаВзвешивание,3), ""), 2);
            См = СтрЗаменить(См, Символ(3), "");
            См = Лев(См, СтрДлина(См)-2);    // последние 2 символа служебные
                        
            ЗнСВесов = Число(См);
            
            Прервать;
            
        КонецЕсли;    
        
    КонецЦикла;
    
    Весы.PortOpen = 0;
    
//Возврат ЗнСВесов;            
    
    
    Объект.Брутто=ЗнСВесов;    
Объект.РучнойВводБрутто=Ложь;
Объект.ДатаПолученияБрутто=ТекущаяДата();
КонецПроцедуры


Код взят из файловой базы в файлом варианте работает без проблем. Тут не работает. Прошу натолкнуть на мысль где не прав.
1 vde69
 
модератор
13.07.17
08:49
опишите код ошибки или что конктетно не работает
2 Filosof
 
13.07.17
09:03
Ошибка создания объекта компоненты MSCommLib (Mscomm32.ocx)
3 Filosof
 
13.07.17
09:10
Нужно ли регистрировать и лицензировать ВК на Сервере если КомОбъект создается на Клиенте ( на нем ВК и зарегистрирована и лицензирована) и считывается тут же?
4 1dvd
 
13.07.17
09:12
Клиент точно х86?
5 1dvd
 
13.07.17
09:12
(3) не нужно
6 butterbean
 
13.07.17
09:13
ОписаниеОшибки ничего не показывает?
7 Filosof
 
13.07.17
09:18
{Документ.ПриемкаПродукцииСПолейКФК.Форма.ФормаДокумента.Форма(5)}: Ошибка при вызове конструктора (COMОбъект): -2147221230(0x80040112): Класс не лицензирован для использования
8 Filosof
 
13.07.17
09:21
7 - (6)
похоже что нужно лицензировать на клиенте?
9 Filosof
 
13.07.17
10:11
(4) ОС 32 разрядная на клиенте
10 Filosof
 
13.07.17
10:12
Лицензирование на клиенте провел еще раз. Результат тот же. Ошибки те же.
11 Filosof
 
18.07.17
10:48
апну, может новый глаз увидит, новая мысль возникнет.
12 SiAl-chel
 
18.07.17
11:17
(11) Попробуй в исключение попытки добавить:
Сообщить(ИмяКомпьютера());
13 h-sp
 
18.07.17
11:36
(10) может не для того пользователя отлицензировали.
14 Filosof
 
19.07.17
10:29
(13) Спасибо за идею. В этом и была проблема.