Подключаю внешнюю компоненту CAScentre_DLL_AllScale.dll проходит без ошибок и пишет Сообщить("Компонента для весов загружена!");
потом пытаюсь создать объект и обратиться к его методам Новый ,так он в Драйвер пишет Драйвер(наименование) COMОбъект(значение) COMОбъект(Тип) и все,а должно быт видно методы.В чем ошибка подскажите.

&НаКлиенте
перем Драйвер;
&НаКлиенте
Функция СоздатьОбъектДрайвера()

  Попытка
 //УстановитьВнешнююКомпоненту("ОбщиеМакеты.CAScentre_DLL_AllScale");

 ПодключитьВнешнююКомпоненту("ОбщиеМакеты.CAScentre_DLL_AllScale");
 Сообщить("Компонента для весов загружена!");
 Исключение
  Сообщить("Компонента для весов не загружена");

 КонецПопытки;

 Результат = Ложь;

  Попытка
  //ПрогИД = "CAScentre_DLL_AllScale.GetWeight";
  Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");

  Результат = Истина;

 Исключение
 КонецПопытки;

 Возврат Результат;

КонецФункции // СоздатьОбъектДрайвера()
---
siranush, вероятно, библиотека не сделана по технологии native, а просто dll. Зарегистрируйте через regsvr32, а затем создавайте внешний объект через Новый ("...") - только надо в спецификации почитать, под каким именем он регистрируется в системе.
---
а что сам метод возвращает? который ПодключитьВнешнююКомпоненту()
---
caponid, Хороший вопрос) ПодключитьВнешнююКомпоненту()говорит что ошибка в выражении.
---
Теперь метод ПодключитьВнешнююКомпоненту() возвращает ложь.
&НаСервере
Функция Объектус()

макет = ПолучитьОбщийМакет("CAScentre_DLL_AllScale");
адрес = ПоместитьВоВременноеХранилище( макет );

 Возврат адрес;

КонецФункции

&НаКлиенте
Функция СоздатьОбъектДрайвера()
 адрес = Объектус();
 ПодключениеВыполнено = ПодключитьВнешнююКомпоненту( адрес, "CAScentre_DLL_AllScale", ТипВнешнейКомпоненты.Native );
    Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");

КонецФункции;
---
может кто-нить поможет разобраться?
---
siranush, вызывайте специалиста. В такие дебри лучше не лезть
---
Vladimirrr, уже весь в этих дебрях))
---
Всем гуру -ау!
---
попробуй так
---
&НаКлиенте
Функция СоздатьОбъектДрайвера()
адрес = Объектус();
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту( адрес, "CAScentre_DLL_AllScale", ТипВнешнейКомпоненты.Native );
Драйвер = Новый ("CAScentre_DLL_AllScale.GetWeight");
---
или
&НаКлиенте
Функция СоздатьОбъектДрайвера()
адрес = Объектус();
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту( адрес, "CAScentre_DLL_AllScale", ТипВнешнейКомпоненты.Native );
Драйвер = Новый ("CAScentre_DLL_AllScale");
Драйвер.GetWeight();
---
Думаю что-то с *.dll и с библиотекой .net framework,какая -то старая версия используется.
---
Как понимаю, пытаетесь весы КАС "подружить" с 1С?
Недавно читал документацию к применяемому драйверу и не припомню что был такой метод -GetWeight(), уверены что такой метод существует?
---
HameleonA, Описание библиотеки классов CAScentre_DLL_AllScale.

Описание.
Библиотека предназначена для работы с весовым оборудованием производства CAS Corporation: получения от них текущего веса (состояния) и передачи в windows-приложения.

Поддерживаемые ОС:
• Windows 98/Me/Nt/2000/XP, с установленным Ms .Net framework 2.0.
• Windows Vista/7.

Установка.
 Для установки приложения запустите setup.msi и следуйте инструкциям установщика.

Настройка весов и список поддерживаемого оборудования.
На данный момент драйвер поддерживает следующее оборудование CAS:
- Все весовые индикаторы (CI, NT, BW, BI);
- Торговые весы EB, ED, PB, AP, AD, ER, EMR, ED, DB, DB-H, DB-2, DB2-NEW, PDS;
- Лабораторные весы – MWP.

Если нужных Вам весов нет в списке, отправьте запрос в ООО «КАСцентр», возможно ваши весы уже поддерживаются.

 Для настройки весового оборудования необходимо выставить на весах скорость обмена «9600», постоянную (непрерывную) передачу данных, отключить принтер. Подробнее в руководстве по эксплуатации к весам. По вопросам настройки обращайтесь в ООО «КАСцентр».

Методы и свойства.

Название метода Параметры Возвращаемое значение Описание
ConnectTCP • IP – ip-адрес весов;
• Port – номер порта связи для Ethernet соединения;
• scaleType – номер типа весов. Если этот параметр равен нулю, то происходит автоматическое определение типа весов.
 Нет. Метод производит попытку соединиться с весами по Ethernet, в случае ошибки возникает соответствующие исключение.
ConnectRS • ComPortNumber – номер порта связи для КЫ соединения, например, значение «1» означает связаться по порту “COM1”;
• BaundRate – скорость обмена для RS-соединения, например, 9600.
• scaleType – номер типа весов*.
 Нет. Метод производит попытку соединиться с весами по RS232, в случае ошибки возникает соответствующие исключение.
Disconnect Нет. Нет. Разрывает установленное соединение с весами.

Update Нет. Текущий вес на весах – вещественное число двойной точности. Метод производит запрос к весам для получения текущего состояния весов. После вызова этого метода обновляются все свойства доступные данным весам.

CurrentWeight Нет. Текущий вес.
 Метод возвращает данные полученные в результате последнего обновления.

CurrentUnitsOfMeasure Нет. Текущие единицы взвешивания (граммы, килограммы, тонны).
 Метод возвращает данные полученные в результате последнего обновления.
CurrentWeightKg Нет. Текущий вес в килограммах. Метод возвращает данные полученные в результате последнего обновления.

CurrentStable Нет. True – в данный момент вес стабилен.
False – в данный момент вес не стабилен.
 Метод возвращает данные полученные в результате последнего обновления.

CurrentGross Нет. True – в данный момент весы взвешивают вес в режиме брутто.
False – в данный момент весы взвешивают вес в режиме нетто. Метод возвращает данные полученные в результате последнего обновления.

Существующие ограничения для разных моделей весов.
 Драйвер позволяет работать со многими моделями весов CAS. Некоторые модели весов могут поддерживать отправку не всех параметров о своем состоянии. В таблице перечислены все модели весов и параметры, которые весы передают в компьютер.

Модель весов CAS Поддержка получения свойств состояния весов
 Текущий вес

(метод CurrentWeight) Текущие единицы измерения

(методы: CurrentUnitsOfMeasure, CurrentWeightKg) Стабильность веса

(метод CurrentStable) Брутто/нетто

(метод CurrentGross)

Все весовые индикаторы (CI, NT, BW, BI), весы PDS

Да

Да

Да

Да

Торговые весы EB, ED, PB, AP, AD, ER, EMR, ED, DB, DB-H, DB2-NEW

Да

Да

Да

Нет

DB2

Да
Да
Нет
Нет

Примеры работы с драйвером.

Пример 1. C#.NET.
using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            CAScentre_DLL_AllScale.GetWeight scale = new CAScentre_DLL_AllScale.GetWeight();
            scale.ConnectTCP("127.0.0.1", 8111, 0);
            var weight = scale.Update();
            Console.WriteLine("TEst. {0} kg", weight);
            scale.Disconnect();
        }
    }
}

Пример 2. Скрипт.
// Создание объекта драйвреа
Object o = CreateObject(CAScentre_DLL_AllScale.GetWeight);

// Установка соединения с весами
o.ConnectTCP( 192.168.0.3, 8111, 0 );

// Получение веса от драйвера
Weight = o.Update();

// Вывод данных на экран.
Print( Weight );

// Ожидание 5 сек.
Sleep(5000);

// Получение веса от драйвера
Weight = o.Update();

// Вывод данных на экран.
Print( Weight );

// Разрыв соединения с весами.
o.Disconnet();
---
siranush, вероятно, библиотека не сделана по технологии native, а просто dll. Зарегистрируйте через regsvr32, а затем создавайте внешний объект через Новый ("...") - только надо в спецификации почитать, под каким именем он регистрируется в системе.
---
juntatalor, ошибка компиляции,думаю все же это c#
---
siranush, не похоже, скорей всего что-то не так делаете по установке. Давайте по порядку:
1. Переустановите (напишите как удаляете, как устанавливаете)
2. Если вручную, то какие ещё dll есть в комплекте
3. Выполните скрипт из примера. Какие ошибки?
---
попробуй

Драйвер = Новый ("CAScentre_DLL_AllScale.GetWeight");
---
ineshyk, ПРи отработке Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");
пишет
{Форма.Форма.Форма(531)}: Ошибка при вызове конструктора (COMОбъект)
Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");
по причине:
Не найден указанный модуль.(14)
---
Драйвер = Новый ("CAScentre_DLL_AllScale.GetWeight");
---
arrgh, думаю верный метод,только пока на framework 2.0 ругается
---
Сообщение было скрыто модератором.
---
я чего-то не понимаю, а какая связь между
ПодключитьВнешнююКомпоненту( адрес, "CAScentre_DLL_AllScale", ТипВнешнейКомпоненты.Native);
и
Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");

Native API это же к COM никакого отношения не имеет?

Делали
regsvr32 CAScentre_DLL_AllScale.dll
?
---
stanru1, regsvr32 CAScentre_DLL_AllScale.dll не регистрирует компоненту,я так понимаю что необходимо писать путь к ней типа C:\CAScentre_DLL_AllScale.dll.
у меня winserver 2008 r2 64x.
библиотека использует framework 2.0,которая уже встроенна в winserver 2008.

да действительно не совсем не нужно :
ПодключитьВнешнююКомпоненту( адрес, "CAScentre_DLL_AllScale", ТипВнешнейКомпоненты.Native);
---
siranush, можно путь писать, а можно просто в каталоге с этой компонентой находиться. Делай так:
1. Запусти cmd под администратором.
2. Перейди в каталог компоненты, например так:cd c:\
3. Выполни команду: regsvr32 /n /i:user CAScentre_DLL_AllScale.dll
Если будут ошибки, приведи их полный текст или скриншот на форуме.
Если все норм, то первой в 1С должна выполниться команда:
Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");
Далее по скрипту из примера в отладчике по шагам разберешься.
---
DKiguin, Окошко Windows выскакивает :Модуль "CAScentre_DLL_AllScale.dll" загружен,но точка входа DllInstall
не найдена .Проверьте,что "CAScentre_DLL_AllScale.dll" является правильным файлом Dll или OCX и повторите попытку.
Думаю компонента не регистрируется в системе,код
Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");
отрабатывает и выходит ошибка : Окошко Windows 1cv8c.exe-This application could not be started.
C:\Windows\Microsoft.NET\Framework\v2.0.50727\could not be loaded.
думаю проблема в frameworke 2.0
---
siranush, для команды regsvr32 CAScentre_DLL_AllScale.dll какая ошибка?
---
DKiguin,
Окошко Windows выскакивает :Модуль "CAScentre_DLL_AllScale.dll" загружен,но точка входа DllInstall
не найдена .Проверьте,что "CAScentre_DLL_AllScale.dll" является правильным файлом Dll или OCX и повторите попытку.
---
скрипт из примера работает?
---
stanru1, У меня студии не стоит) Может действительно поставить))
---
пример 2 не требует студии. Это vbscript, работает в любой винде. сохраните его в файл с расширением vbs. потом в командной строке выполните cscript имясохраненногофайла.vbs
---
Эту библиотеку так не зарегистрируешь. Качай универсальный драйвер для весов CAS, устанавливай и получишь правильно зарегистрированную библиотеку.
И потом уже
Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");
---
Caliban, На самом деле с этого все началось))При установке драйвера,появляется библиотека CAScentre_DLL_AllScale.dll,которая почему-то не регистрируется в системе.
---
Установку точно из под администратора запускали?
---
Caliban, под админом на сервер зашёл,правой кнопкой "запустить от Админа"
---
Наконец УСПЕХ!!!Всем Спасибо за содействие!

Действия для правильной установки: необходим ключ на драйвер от CAS весов(платный)
1)Устанавливаем драйвер КАС http://cas.ru/3_produkt/software/detail.php?ID=2704
2)Обязательно устанавливаем framework 2.0!!!
Копируем C:\Program Files (x86)\КАСцентр\Драйвер торговых весов CAS два файла
 2.1-SendWeightValueToWinApp.exe
 2.2-CAScentre_DLL_AllScale.dll
в корень диска С:\SendWeightValueToWinApp.exe и С:\CAScentre_DLL_AllScale.dll
3)Запускаем "SendWeightValueToWinApp.exe" Настраиваем индикаторы и ком порт,на который будут приходить данные.Пример: rs232,ком порт 4,скорость потока 9600.Нажимаем кнопку ТЕСТ соединения с весами.
Выйдет окошко "Данные успешно получены и цифра веса".В трее (там где часы на рабочем столе) правой кнопкой -Выход.
4)Теперь можно тестировать CAScentre_DLL_AllScale.GetWeight.
Создаем в 1с УФ в модуле формы

```1c
    &НаКлиенте
    &НаКлиенте
    Перем Драйвер;
    Перем Результат;

    Функция Подключить()
    Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");

    //ОчиститьСообщения();
    Результат = Ложь;

    Порт = 4;
    Скорость = 9600;
    ТипВесов = 0;

    Если Порт=4 Тогда
    Попытка
    Драйвер.ConnectRS(Порт,Скорость,ТипВесов);
    Результат = Истина;
    Предупреждение("Успех подключения к весам по RS232");

    Исключение
    Предупреждение("Ошибка подключения к весам по RS232");
    КонецПопытки;

    Иначе
    Предупреждение("Ошибка параметров настройки! Неверно указан интерфейс подключения!");
    КонецЕсли;

    Возврат Результат;

    КонецФункции // Подключить()
```

Должно работать дальше

```1c
    &НаКлиенте
    Функция Вес() Экспорт

    Попытка
    Вес = Драйвер.Update();
    Исключение
    Вес = 0;
    Предупреждение("Ошибка получения веса с весов!");
    КонецПопытки;

    Возврат Вес;

    КонецФункции // Вес(
```

Запущеный SendWeightValueToWinApp.exe и CAScentre_DLL_AllScale.dll не работают вместе,не забывайте выходить из SendWeightValueToWinApp.exe!
---
Молодец, что разобрались. Однако, немного смутил код:

```1c
    Порт = 4;
    ...
    Если Порт=4 Тогда
```
---
juntatalor,было так ,думаю и будет ,только без TCP)))

```1c
    &НаКлиенте
    Функция Подключить()

    //ОчиститьСообщения();
    Результат = Ложь;

    Если Объект.Интерфейс = 1 Тогда //TCP\IP

    Попытка
    Драйвер.ConnectTCP(Объект.IPАдрес, Объект.Порт, Объект.ТипВесов);
    Результат = Истина;

    Исключение
    Диалог("Ошибка подключения к весам по TCP/IP");
    КонецПопытки;

    ИначеЕсли Объект.Интерфейс = 2 Тогда //COM

    Попытка
    Драйвер.ConnectRS(Объект.Порт, Объект.Скорость, Объект.ТипВесов);
    Результат = Истина;
    Исключение
    Диалог("Ошибка подключения к весам по RS232");
    КонецПопытки;

    Иначе
    Диалог("Ошибка параметров настройки! Неверно указан интерфейс подключения!");
    КонецЕсли;

    Возврат Результат;

    КонецФункции // Подключить()
```
---
На Win2008 поставить отдельно Framework2.0 не получилось (он уже есть в Win2008).
Вывернулся другим способом. Через утилиту RegAsm которая входит в FrameWork.
1. открыл консоль
2. забил команду C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe "C:\Program Files (x86)\КАСцентр\Драйвер торговых весов CAS\CAScentre_DLL_AllScale.dll" /codebase

После этого новый COM объект стал создаваться на ура. Хотя разработка CAS писала "Если windows 64-bit, а 1С используется 32-бит. То объект драйвера создать в системе невозможно."
---
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe "C:\Program Files (x86)\КАСцентр\Драйвер торговых весов CAS\CAScentre_DLL_AllScale.dll" /codebase

что-то у меня такой фокус не проходит, хоть и написал "Типы зарегистрированы успешно", всёравно объект не создаётся.
---
единственное драйвером другим пользуюсь: CAScentre_DLL_PrintScale.dll