Как получить тип в 1С для передачи в DLL?

1. Asmer 27.09.18 15:33 Сейчас в теме
Добрый день.
Подскажите, пожалуйста, как передать нужный тип данных в DLL c 1C?

Есть код 1С
AnvizNew  = new COMОбъект("DynamicWrapperX");  
AnvizNew.Register("c:\dll\tc400.dll", "CKT_RegisterNet" , "i=ls", "r=l");
ret = AnvizNew.CKT_RegisterNet(IDNumber, Net_);  /// это работает

if (ret = 0) then
	Message("Connection Failed.");
else
	Message("Connected.OK");
	
	AnvizNew.Register("c:\dll\tc400.dll", "CKT_GetDeviceInfoEx" , "i=ll", "r=l");
	ret = AnvizNew.CKT_GetDeviceInfoEx(IDNumber, devnfo );    /// это не работает
 	if ret>0 then
		Message("CKT_ReportConnections ok.");	
	endif;
endif;
Показать


где тип переменной devnfo:

на VB6
Public Type DEVICEINFO
    id              As Long
    MajorVersion    As Long
    MinorVersion    As Long
    SpeakerVolume   As Long
    Parameter       As Long
    DefaultAuth     As Long
    FixWGHead       As Long
    WGOption        As Long
    AutoUpdateAllow As Long
    KQRepeatTime    As Long
    RealTimeAllow   As Long
    RingAllow       As Long
    DoorLockDelay   As Long
    AdminPassword   As String * 8
End Type
Показать


на С#
        [StructLayout(LayoutKind.Sequential, Size = 60, CharSet = CharSet.Ansi), Serializable]
        public struct DEVICEINFO
        {
            public int ID;
            public int MajorVersion;
            public int MinorVersion;
            public int SpeakerVolume;
            public int Parameter;
            public int DefaultAuth;
            public int FixWGHead;
            public int WGOption;
            public int AutoUpdateAllow;
            public int KQRepeatTime;
            public int RealTimeAllow;
            public int RingAllow;
            public int LockDelayTime;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8)]
            public byte[] AdminPassword;
        }
Показать


Вопрос... как такой тип получить в 1С ?
По теме из базы знаний
Найденные решения
25. herfis 513 27.09.18 17:13 Сейчас в теме
(23) О! Так товарищ уже заморочился и написал обертку
Бери и пользуйся.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
27. Vitaly1C8 28.09.18 14:30 Сейчас в теме
(1) Ну очевидный же ответ, - сам даешь на свой вопрос ! Напиши DLL на VB с проблемным вызовом, или со всем необходимым кодом; Из 1С вызывай через свою DLL (COM - Объект)
2. lishniy 133 27.09.18 15:55 Сейчас в теме
Судя по коду, нужна структура. Пробовали структуру передавать?
3. Asmer 27.09.18 16:02 Сейчас в теме
(2) Структуру пробовал - не помогло..
ОШИБКА:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(63)}: Ошибка при вызове метода контекста (CKT_GetDeviceInfoEx)
ret = AnvizNew.CKT_GetDeviceInfoEx(IDNumber,devnfo);
по причине:
Произошла исключительная ситуация (DynamicWrapperX.2): Тип аргумента неприводим к типу параметра

Еще я не уверен в правильном выборе типа в самом Врапе..
я указал

AnvizNew.Register("c:\dll\tc400.dll", "CKT_GetDeviceInfoEx" , "i=ll", "r=l");
// "i=ll"

Может кому-то приходилось разбираться с SDK ANVIZ ?
4. herfis 513 27.09.18 16:06 Сейчас в теме
Насколько я сталкивался, из 1С работает передача параметров только примитивных типов и SAFEARRAY.
Ежели что другое - тады ой.
5. Asmer 27.09.18 16:11 Сейчас в теме
(4)
Ежели что другое - тады ой.


от если бы было все так просто - я бы не спрашивал..

Попутный вопрос. Если я напишу ВК в которой буду формировать этот тип - это сработает ?
6. herfis 513 27.09.18 16:15 Сейчас в теме
(5) Вот вы такие вопросы спрашиваете, а ведь я на самом деле не настоящий сварщик.
Неужели производитель только голые dll раздает?
Я без понятия что это вообще такое, но у них на сайте есть подозрительный раздел "Работа с модулем интеграции Anviz 1C"
ЗЫ. Хотя судя по скриншотам, они там тупо напрямую в базу ломятся за отчетами.
7. Asmer 27.09.18 16:23 Сейчас в теме
SDK состоит не только с голой ДЛЛ . (прикрепил к посту) есть примеры на нескольких языках, даже описание неплохое... но исходников основной библиотеки нет, и я не могу переписать эту функцию.
Да, на сайте есть что-то по работе с 1с - но платное..
Прикрепленные файлы:
TC-B SDK V2.6.5.0.zip
8. herfis 513 27.09.18 16:25 Сейчас в теме
(7) Так а какие требования по функциональности? Если достаточно забирать данные из базы СКУДа, так для этого никакой SDK не нужен.
9. Asmer 27.09.18 16:26 Сейчас в теме
(8) А можно поподробнее ?
10. herfis 513 27.09.18 16:29 Сейчас в теме
(9) Речь же про вот это - anviz.ru?
12. Asmer 27.09.18 16:33 Сейчас в теме
11. Asmer 27.09.18 16:30 Сейчас в теме
Есть 30-50шт anviz W1 разбросанных по стране. все в режиме сервера. задача - опросить их все и получить данные об удачных операциях.
14. herfis 513 27.09.18 16:37 Сейчас в теме
(11) Типа они подключены к компам с установленным CrossChex?
15. Asmer 27.09.18 16:43 Сейчас в теме
(14)
CrossChex

Установил, но это приложение не работает как сервис. и вопросов по работе с базой CrossChex вообще не возникает. Но нужна обезьяна, которая будет нажимать на кнопку...
16. herfis 513 27.09.18 16:45 Сейчас в теме
(15) Да, я уже понял. Не могу нормальной доки на девайс найти. Только парустраничный булшит. Но из него следует, что производитель предоставляет ему какую-то облачную поддержку, чтобы можно было им управлять через интернет. Это уже типа за деньги?
17. Asmer 27.09.18 16:46 Сейчас в теме
в посте 7 прикреплен сдк с доками
18. herfis 513 27.09.18 16:49 Сейчас в теме
(17) Да ну. Этот SDK - это слишком низкий уровень для твоей задачи. Если для решения настолько типичной задачи нужно низкоуровневый middleware самому писать, то такому девайсу не выжить. Должен быть более высокоуровневый способ.
20. Asmer 27.09.18 16:54 Сейчас в теме
Есть более легкий способ - купить :) Но я не ищу легких путей..
19. Asmer 27.09.18 16:50 Сейчас в теме
У меня пока только одна идея - используя библиотеку tc400.dll написать сервис на С# или на Delphi с необходимым функционалом..
13. Asmer 27.09.18 16:34 Сейчас в теме
оф сайт дивайса www.anviz.com/product/84.html
21. herfis 513 27.09.18 16:57 Сейчас в теме
Может, у ентого CrossChex есть нормальный CLI? Это решило бы проблему.
22. Asmer 27.09.18 17:04 Сейчас в теме
(21) партнеры Анвиза в Украине об этом пока не знают... молодые они. пока продают сами девайсы раздают сдк и напаривают платное ПО (даже расказать внятно не могут что оно может)...
24. herfis 513 27.09.18 17:10 Сейчас в теме
(22) Да просто попробуй набрать crosschex.exe /? crosschex.exe /h
Или как оно там. Чтобы понять, есть у него CLI вообще или нет.
23. Asmer 27.09.18 17:06 Сейчас в теме
Надо попробовать посмотреть публикацию - как там реализовано.
https://infostart.ru/public/411217/

но пока не наколядовал см - не могу скачать..
25. herfis 513 27.09.18 17:13 Сейчас в теме
(23) О! Так товарищ уже заморочился и написал обертку
Бери и пользуйся.
26. Asmer 27.09.18 17:20 Сейчас в теме
(25) пока скачать и посмотреть нет возможности надо кого-то просить скачать
29. Ditron 190 28.09.18 14:38 Сейчас в теме
(25) это реально то что нужно, без него никак ))
28. Ditron 190 28.09.18 14:37 Сейчас в теме
передача параметров (вх/исх) в ком объекты только простые типы! В данном случае параметр DeviceInfo это ссылка на кусок памяти где расположена структура, только еще одна прослойка в виде ВК, чтобы конвертнуть для 1С в удобочитаемый формат.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот