8.х В 1С 8.1 нет процедуры ПоместитьВоВременноеХранилище и отличается ПодключитьВнешнююКомпоненту Как их

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

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Добрый день!
    Занимаюсь переделкой обработки АТОЛ: ККТ с передачей данных с 1С 8.2 на 1С 8.1 (для 1С 8.1 не смог найти - понимаю ее нет...).
    Все переписал кроме двух строчек:
    Макет = ПолучитьМакет("ИнтеграционнаяКомКомпонента");
    Адрес = ПоместитьВоВременноеХранилище(Макет);
    ПодключитьВнешнююКомпоненту(Адрес, "ИнтеграционнаяКомпонента", ТипВнешнейКомпоненты.Native);

    ПоместитьВоВременноеХранилище - в 1С 8.1 нет.
    ПодключитьВнешнююКомпоненту - процедура переделана, изменено количество и тип входных параметров).
    Если кто-нибудь делал подобную работу или может помочь - помогите, не могу сообразить как данный кусок кода на лад 8.1 переписать.
    Огромное спасибо!
  2. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    У меня подозрение что в обработке в макете - DLL. Или нет?
    Если так то ее вытащить и сохранить локально (через ПодключитьВнешнююКомпоненту)?
  3. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Да, во временный файл.
    MyNameNoName нравится это.
  4. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Без разницы как dll обозвать? Копировать в папку bin? В системе Windows регистрировать ее нужно?
    Я просто никогда не подключал dll ранее к 1С.
    --- Объединение сообщений, 13 апр 2017 ---
    Или может на 8.1 как-то можно переписать код чтобы не вытаскивать файл (сделать не зависимым от dll чтобы не копировать ее по всем компьютерам где она необходима)?
  5. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Не нужно ничего регистрировать

    Подключаешь в самой 1С, методом ПодключитьВнешнююКомпоненту()
    MyNameNoName нравится это.
  6. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Это я понял.
    А как это сделать в 8.1?
    Я так и не понял из обработки сохранять dll или нет?
    Сижу уже миллион вариантов перепробовал - безрезультатно.
  7. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Да без разницы расширение файла.

    Что написано в С-П про ПодключитьВнешнююКомпоненту()?
    MyNameNoName нравится это.
  8. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Код на 8.2:
    Код:
    Макет = ПолучитьМакет("ИнтеграционнаяКомпонента");
    Адрес = ПоместитьВоВременноеХранилище(Макет);
    ПодключитьВнешнююКомпоненту(Адрес, "ИнтеграционнаяКомпонента", ТипВнешнейКомпоненты.Native);
    Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKM_1C82_54FZ");
    Синтаксис помощник 8.2:
    ПодключитьВнешнююКомпоненту (AttachAddIn)
    Вариант синтаксиса: По имени и местоположению
    Синтаксис:
    ПодключитьВнешнююКомпоненту(<Местоположение>, <Имя>, <Тип>)

    8.1:
    ПодключитьВнешнююКомпоненту (AttachAddIn)
    Синтаксис:
    ПодключитьВнешнююКомпоненту(<Идентификатор объекта>)
    Параметры:
    <Идентификатор объекта> (обязательный)
    Тип: Строка. ProgID (Programmatic Identifier) объекта внешней компоненты. Должно соответствовать информации, находящейся в регистрационной базе данных системы (Registry).
    Описание:
    Подключает объекты внешней компоненты к 1С:Предприятию.
    Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.

    Также в 8.2 есть метод ПоместитьВоВременноеХранилище(), которого нет в 8.1.
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Ух, как все сложно раньше было :)
    В таком случае регистрация компоненты нужна.
    ProgID думаю, можно узнать, зарегистрировав компоненту через оснастку DCOM и потом удалить.

    Что происходит при ЗагрузитьВнешнююКомпоненту()?
    MyNameNoName нравится это.
  10. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Сделал вот так:
    Код:
    ПрогИД = "AddIn.ATOL_KKM_1C82_54FZ";
    ПодключитьВнешнююКомпоненту(ПрогИД);
    Драйвер = Новый (ПрогИД);
    Но так не удобно что внешнюю компоненту нужно на всех компьютерах ставить, а так бы все с обработки тянулось.
    --- Объединение сообщений, 14 апр 2017 ---
    Этот метод не используется.
    Синтаксис помощник 8.1:
    ЗагрузитьВнешнююКомпоненту(<Имя файла>)
    Параметры:
    <Имя файла> (обязательный)
    Тип: Строка. Имя файла внешней компоненты.
    Описание:
    Загружает внешнюю компоненту и подключает ее объекты к 1С:Предприятию.
    Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
    Примечание:
    Внешние компоненты совместимы с компонентами 1С:Предприятия 7.7.
  11. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Как вы думаете, FprnM1C82_54FZ.dll от 8.2 должна подойти для 8.1?
    У меня почему то:
    Код:
    ПрогИД = "AddIn.ATOL_KKM_1C82_54FZ";
    ПодключитьВнешнююКомпоненту(ПрогИД);
    Драйвер = Новый (ПрогИД);
    Драйвер НеизвестныйОбъект НеизвестныйОбъект

    Что не так может быть?
  12. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Приведенный мною код на 8.2 работает. А на 8.1 нет.
    Как выкручиваться? На 8.2 вообще не вариант базу конвертировать.
    На 8.1 Драйвер = НеизвестныйОбъект
  13. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    видимо, progid должен быть другим.
    MyNameNoName нравится это.
  14. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    976
    Симпатии:
    0
    Баллы:
    26
    Было такое подозрение. Но как же его определить?
  15. Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    367
    Симпатии:
    0
    Баллы:
    26
    Вместе с dll в обработке идет
    INFO.xml
    в нем
    <?xml version="1.0" encoding="UTF-8"?>
    <drivers>
    <component progid="AddIn.ATOL_KKM_1C82_54FZ" type="ККТ" name="АТОЛ: Драйвер ККМ (54ФЗ)"/>
    </drivers>

    Из него видно что строка подключения верная.

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