8.х Не подключается native dll на 1с 8.1 (fptrwin32_fz54_9_11_0_5549.dll)

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 1 авг 2017.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.
    1С обновил dll для онлайн-касс атол для ффд 1.05 (входит в обработку обслуживания fptrwin32_fz54_9_11_0_5549.dll).
    У меня старая 1С 8.1. Она в отличии от 8.2 не поддерживает работу со внешним оборудованием аналогично 8.2, поэтому сначала нужно зарегистрировать dll в windows, а затем только в 1С подключать?
    Код:
    ПрогИД = "AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C83_V9";
    ЗагрузитьВнешнююКомпоненту("C:\fptrwin32_fz54_9_11_0_5549.dll");
    ПодключитьВнешнююКомпоненту(ПрогИД);
    Драйвер = Новый (ПрогИД);
    Однако старая обработка была написана на 'технологии' com, а новая native. Соответственно при регистрации regsvr32 выдает ошибку:
    Модуль загружен, но точка входа DllRegisterServer не найден. И предлагает проверить, что этот файл является правильным файлом dll или OCX.
    Кто с подобной ситуацией сталкивался, как выкручивались? Понимаю что аналогичная проблема будет и у 7.7.
    Код 8.2:
    Код:
    Макет = ПолучитьМакет("ИнтеграционнаяКомпонента");
    Адрес = ПоместитьВоВременноеХранилище(Макет);
    ПодключитьВнешнююКомпоненту(Адрес, "ИнтеграционнаяКомпонента", ТипВнешнейКомпоненты.Native);
    Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C83_V9");
    1C 8.2:
    ПодключитьВнешнююКомпоненту(<Местоположение>, <Имя>, <Тип>)
    1С 8.1:
    ПодключитьВнешнююКомпоненту(<Идентификатор объекта>)
    Параметры:
    <Идентификатор объекта> (обязательный)
    Тип: Строка. ProgID (Programmatic Identifier) объекта внешней компоненты. Должно соответствовать информации, находящейся в регистрационной базе данных системы (Registry).
    Описание:
    Подключает объекты внешней компоненты к 1С:Предприятию.
    Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
    Примечание:
    Внешние компоненты совместимы с компонентами 1С:Предприятия 7.7.
    Пример:
    Попытка
    ПодключитьВнешнююКомпоненту("AddinObject.Scanner");
    Сообщить("Компонента для сканера штрих-кодов загружена");
    Исключение
    Сообщить("Компонента для сканера штрих-кодов не загружена");
    КонецПопытки


    Как-нибудь можно эту dll на 8.1 подключить или нет?

    Спасибо!
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    Обновить платформу хотя бы до 8.2
    Что вас держит на 8.1?
  3. antibayte
    Offline

    antibayte

    Регистрация:
    16 дек 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    У меня тоже недавно всплыла такая проблема. Конвертировать на более позднюю версию 1с не было возможности т.к. dll с которомыми данная конфигурация работает просто переставали работать и 1с вываливалась с ошибкой.
    Проблему решил следующим образом:
    Создал пустую базу 8.3 в которой сделал обработку инициализации компоненты и затем из 8.1 по COM соединению обращался к созданной ранее базе и там инициализировал компоненту. Затем уже в 8.1 вызывал методы этой компоненты.
    Конечно это костыльно, но другого выхода пока не нашел(

    Пример кода 8.3:
    Перем Драйвер Экспорт;
    Функция ПодключениеКомпонентыККТ() Экспорт
    Попытка
    Макет = ПолучитьМакет("ИнтеграционнаяКомпонента");
    Адрес = ПоместитьВоВременноеХранилище(Макет);
    ПодключитьВнешнююКомпоненту(Адрес, "ИнтеграционнаяКомпонента", ТипВнешнейКомпоненты.Native);
    Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.SMDrvFR1C20");
    Результат = Истина;​
    Исключение
    Результат = Ложь;​
    КонецПопытки;
    Возврат Результат
    КонецФункции

    Пример кода 8.1

    Функция СоздатьОбъектДрайвера(Драйвер) Экспорт

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

    Попытка

    СтрокаСоединения="File="""Путь к базе""";
    КомОбъект= Новый COMОбъект("V83.ComConnector");
    Коннект = КомОбъект.Connect(СтрокаСоединения);

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

    Сообщить(ОписаниеОшибки());
    Результат = Ложь;
    КонецПопытки;


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

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

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