Внешние компоненты. Проблема подключения к Dll

Тема в разделе "1C и всё что с ней связано", создана пользователем YarlikovaE, 16 апр 2010.

Статус темы:
Закрыта.
  1. YarlikovaE

    YarlikovaE Гость

    Помогите решить проблему!

    Нужно подключить к 1С 8.х dll-библиотеку с незамысловатым функционированием. Например, функция MySumm(a,c). Возможно ли это сделать без создания COM - сервера?
    Что необходимо написать в модуле внешней обработки 1С 8.х, если название библиотеки "Sm.dll"?
    Библиотека написана в Delphi и содержит только одну функцию MySumm (возвращает значение Real)/

    Данные из книги Попова не приводить: слишком сложный пример.

    Встречала такой пример:

    ЗагрузитьВнешнююКомпоненту("Math.dll");
    МФ = Новый("Addln.Math");
    Сообщить(МФ.RAND());

    Но исходя из объяснений которые я встречала, что эту простую функцию как RAND() (генерацию случайной величины), можно реализовать только путем организации СOM-сервера?
    Или все можно обойтись без этих сложностей и обратиться напрямую к функции dll- библиотеки, без СOM-сервера?
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Буду краток: нет.
     
  3. YarlikovaE

    YarlikovaE Гость

    И что для реализации простой функции необходимо писать создание целого сервера? Или все же можно обойтись каким то минимальным написанием кода dll?
     
  4. thinkfast

    thinkfast Гость

    Моя написана на С# поэтому про Delphi ничего не скажу:
    Но вот что нашол у себя
    http://www.visual.2000.ru/kolesov/pcmag/20...09/pitercom.htm
    http://www.rsdn.ru/article/dotnet/cs1c.xml
    И еще на mista.ru 100% на форуме видел рабочий пример для Дельфи помню еще плевался что это не Шарп был)

    Как это в 1С:

    вариант А: (Если библиотека зарегестрирована)
    ПодключитьВнешнююКомпоненту("AddIn.SimpleExternalComponent");
    мояВК = Новый COMОбъект("MyComponent"); // Создание объекта из внешней компоненты
    Ответ = мояВК.Print(); //Вызов нашего метода

    Вариант Б: (Если библиотека не зарегестрирована, и лежит в файле)
    лФайл = Новый Файл("\\Prime\Base\MyDLL.dll"); // Полный путь
    Если лФайл.Существует() Тогда
    Попытка
    ЗагрузитьВнешнююКомпоненту(лФайл);
    мояВК = Новый COMОбъект("Addin.MyComponent"); // Создание объекта из внешней компоненты
    Ответ = мояВК.Print(); //Вызов нашего метода
    Предупреждение("Готово " + Ответ);
    Исключение
    Сообщить("Внешняя компонента не найдена");
    КонецПопытки;
    КонецЕсли;

    И как итог без Com не получится;
    Что то накорябал мб поможет =)
     
  5. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Еще раз:
    Либо СОМ полноценный, либо Технология Внешних компонент от 1С, что по сути - тот же СОМ, только урезанный.
     
  6. YarlikovaE

    YarlikovaE Гость

    Подскажите как создать объект библиотеки dynwrap.dll в 1Сv8.

    Код использования библиотеки в 1Сv7:

    Wrapper = CreateObject("DynamicWrapper");
    Wrapper.Register("MyDll.DLL", "MyFun", "i=ll", "f=s", "r=l");

    (подробнее про библиотеку можно посмотреть http://www.script-coding.info/dynwrap.html).

    Так же попыталась использовать в 1Сv8, но DynamicWrapper, неопределенный тип

    Пробовала таким образом:
    Wrapper = New("DynamicWrapper");
    Wrapper.Register("MyDll.dll", "MySumm", "i=dd", "f=s", "r=c");
     
  7. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
  8. YarlikovaE

    YarlikovaE Гость

    Надо так:
    Wrapper = New COMОбъект("DynamicWrapper");
    Wrapper.Register("MyDll.dll", "MySumm", "i=dd", "f=s", "r=l");
     
  9. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    YarlikovaE, я вам ссылку не с просто так давал... В 1С8.2 изменилась технология загрузки внешних компонент. Для совместимости оставили вариант, используемый в более ранних версиях, но, насколько я помню, он не работает в режиме управляемого приложения на тонком клиенте.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей