Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с Сом объектом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
Filosof
К машине подключены весы через Ком порт. В файловом варианте использую КомОбъект внешней компоненты Mscomm32 данные прекрасно считываются с весопроцессора. Но в клиент серверном варианте проблема. Создана на форме клиентская процедура с таким кодом:
&НаКлиенте
Процедура Брутто(Команда)
Попытка
        Весы = Новый 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;
    
//Возврат ЗнСВесов;            
    
    
    Объект.Брутто=ЗнСВесов;    
Объект.РучнойВводБрутто=Ложь;
Объект.ДатаПолученияБрутто=ТекущаяДата();
КонецПроцедуры


Но почему то выдает ошибки:
Ошибка создания объекта компоненты MSCommLib (Mscomm32.ocx)
и
{Документ.ПриемкаПродукцииСПолейКФК.Форма.ФормаДокумента.Форма(5)}: Ошибка при вызове конструктора (COMОбъект): -2147221230(0x80040112): Класс не лицензирован для использования


 ! 

необходимо зарегистрироваться для просмотра ссылки: 9
 
Petre
Filosof @ Сегодня, 11:06 необходимо зарегистрироваться для просмотра ссылки ,
Ошибка говорит об отсутствии лицензии на класс MSCommLib.
Filosof
Petre @ Сегодня, 11:17 необходимо зарегистрироваться для просмотра ссылки ,
Я это вижу. Но почему в файловом варианте лицензия находится а в клиент серверном нет? Где нужно еще кроме клиентской машины лицензировать эту компоненту? На клиентской машине компонента и зарегистрирована и залицензирована, благодаря чему все отрабатывает в файловом варианте. А вот в клиент серверном стопор на лицензировании компоненты.
Petre
Filosof @ Сегодня, 14:03 необходимо зарегистрироваться для просмотра ссылки ,
Оба варианта проверяются на одной машине? Версия / разрядность 1с одна?
Filosof
Petre @ Сегодня, 14:14 необходимо зарегистрироваться для просмотра ссылки ,
Да оба варианта на одной машине. Но в клиент серверном варианте запуск клиентского приложения происходит под другим пользователем. Подбросили мысль, что нужно залицензировать под этим другим пользователем. Буду пробовать отпишусь.
jackill88
Filosof @ Сегодня, 11:06 необходимо зарегистрироваться для просмотра ссылки ,
1) Проверьте, заходите ли Вы клиент-серверном режиме из Толстого клиента;
2) Возможно, сервер 1с Предприятия 64-х разрядный, а клиент - 32-х разрядный (возможно, сам сервер из-за того, что DLL не 64-х битная, не создает COM-объект)
Flexy
Новый COMОбъект(<Имя>, <ИмяСервера>)

Пробуйте задать второй параметр.
sava1
Цитата(jackill88 @ 18.07.17, 16:24) необходимо зарегистрироваться для просмотра ссылки
2) Возможно, сервер 1с Предприятия 64-х разрядный, а клиент - 32-х разрядный (возможно, сам сервер из-за того, что DLL не 64-х битная, не создает COM-объект)


Такого не бывает
Vofka
А чё многие к серверу прицепились, если код выполняется &НаКлиенте?
Flexy
Vofka @ Сегодня, 19:13 необходимо зарегистрироваться для просмотра ссылки ,
Видимо потому, что в "клиент-файловом режиме" (в режиме эмуляции сервера, на одном хосте) все работает. why.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.