8.х 1С8 и внешняя компонента с типом Native

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Max1mus, 18 июл 2017.

  1. TopicStarter Overlay
    Max1mus
    Offline

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Имеется конфигурация БП 3.0.50.12 и желание внедрить в нее взвешивание от компании Весы-Софт с помощью UniServerAuto.
    Разработчики скомпилировали компоненту на Native для Windows 32 и 64, и с файлом maifest сложили в архив. Так же есть пример для 1С, как можно считать вес. В нём с помощью макета с двоичными данными указан, я так понимаю, архив этот. В примере всё неплохо: устанавливается компонента, подключается, потом устанавливается связь и считывается вес.
    Но как только начинаешь себе в 1С переносить - вес не считывается. Вроде всё просто написано, но где грабли не пойму.
    У кого будет немного времени - помогите, гляньте одним глазком, может решение на поверхности, а я хожу где-т не там и делаю не то. Раньше мне не приходилось с технологией Native работать...

    Не знаю можно ли ссылки выкладывать, но по этой можно скачать и установить программулю с примером для 1с и архивом с dll
    http://vesysoft.ru/soft/uniserverweight

    А во вложении мой текст обработки

    Вложения:

  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Что значит вес не считывается? Компонента подключается?
    А где регистрация компоненты с помощью regsrv32?
  3. TopicStarter Overlay
    Max1mus
    Offline

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Да, подключается. Трассировкой прохожу без ошибок, а вес пустой. Ошибку не выдает никакую.

    Именно из 1С и установка и подключение dll проходят без ошибок.
    Пробовал через regsrv32 регистрировать - выдает ошибку, что dll загружен но точка входа не найдена, хотя я под админом ее регистрирую. И из System32 и хоть из SySWOW64 результат одинаков...
    Но тут еще такой момент:
    тестовая конфигурация от разработчика выдаёт вес, значит Dll получается зарегистрирована?

    Может dll и не предназначена для того, чтобы её регистрировали через ОС?
    Последнее редактирование: 18 июл 2017
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Компонента должна регистрироваться в любом случае, на сколько я понимаю.
    Не нужно при этом *.dll помещать в System32/SySWOW64, компонента для работы помещается во временный каталог, регистрируется, при завершении работы с 1С можно файл компоненты удалять....
  5. TopicStarter Overlay
    Max1mus
    Offline

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Это понятно.
    Не понятно почему в примере разработчика вес считывается (соответственно и dll успешно подключается), а моем случае нет. Значит не в регистрации dll дело? Так получается?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Компонента может быть зарегистрирована в ОС однажды и используется всегда.
  7. TopicStarter Overlay
    Max1mus
    Offline

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Раз она работает в том примере значит нормально зарегистрирована?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Я не утверждаю, я предполагаю, что да.
  9. TopicStarter Overlay
    Max1mus
    Offline

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Предположим, что с ней всё нормально. Я к ней правильно обратился? По тексту (вроде бы) всё правильно, только результата нет))
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

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

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Вот и я склоняюсь к тому, что нет соединения. Т.к. ошибок не выдает, но и результат не возвращает.

    Если его внешний макет подключить во внешнюю обработку к себе аналогичным образом то выдает:
    upload_2017-7-18_15-45-54.png

    upload_2017-7-18_15-55-48.png


    Получается что нет регистрации компоненты....




    А может вместо УстановитьКомпоненту надо использовать НачатьУстановкуВнешнейКомпоненты??[/QUOTE]

    Вложения:

    Последнее редактирование: 18 июл 2017
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    НачатьУстановкуВнешнейКомпоненты - это если на клиенте делать в режиме УФ делать.
  13. TopicStarter Overlay
    Max1mus
    Offline

    Max1mus Опытный в 1С

    Регистрация:
    7 апр 2017
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Ну что, есть новости у меня...
    Начал просто по шажкам смотреть в какой момент начнет сбоить. Для этого создал пустую базу и обработку с командой. По аналогии с примером поставщика перенес макет в новую конфу - работает со второго раза. Т.е. с первого раза нет, а со второго да. Это натолкнуло на мысль, что всё-таки надо будет в своей обработке развести подключение компоненты и объекта по разным процедурам.
    Далее перенес это в свою базу с подключением макета - работает. Фух, уже хорошо.... Но хотелось бы без внесения изменений в конфигурацию, значит идём дальше

    Пробую макет добавить в обработку. Её размер сразу увеличивается с 10кб до 3мб и замечается существенное замедление работы - не подходит. Начинаю копать в сторону подключения компоненты через dll. Т.е. по сути к тому же с чего начал. Но тут есть одно "НО": поиском по имени dll по папке пользователя заметил, что эта dll лежит там, где (я так понял) складываются зарегистрированные в 1С dll-ки:
    C:\Users\USER\AppData\Roaming\1C\1cv8\ExtCompT
    соответственно нет нужды использовать полный путь к dll, можно просто прописать ее имя:
    ПодключитьВнешнююКомпоненту("Add1CUniServerAuto32.dll", "UniServerAuto", ТипВнешнейКомпоненты.Native);

    Пробую... ругается на регистрацию, но результат взвешивания возвращает. Получается, что уже dll зарегистрирована и значит ее нужно просто подключать. Убираю и всё работает.
    Подвожу итог:
    1. В обработку взвешивания в процедуру ПриОткрытии внёсподключение внешней компоненты и подключение к объекту.
    2. Путь к dll Не писал, указал просто ее имя.

    Теперь сижу и думаю, а когда dll установилась в 1С? В момент установки ПО? Вряд ли... В момент запуска конфигурации разработчика этой dll, где она устанавливается при открытии формы? Не знаю, но мне кажется близко... Вы как думаете?
    И второе, На новом месте, когда появится нужда установки такого же терминала, что надо сделать чтобы всё заработало? Установить полностью ПО,запустить конфу поставщика чтобы проверить работу и потом (в теории) моя обработка должна заработать? Че-то как-то сложновато... Или же после установки ПО в моей обработке сделать УстановитьВнешнююКомпоненту один раз?

    Ваши мысли на этот счет хотелось бы услышать...

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