Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как передать список значений из DLL (VBA.NET) в 1С 7.7?

v7: Как передать список значений из DLL (VBA.NET) в 1С 7.7?
Я
   ksa-nsk
 
21.08.21 - 05:05
Всех приветствую!
Программер сделал мне dll-ку на VBA.NET (ранее для 1С не делал), всё работает отлично, но не можем передать список со значениями. Числа и строки возвращаются правильно, а вот список...
Проблему решил костылём вида получения строки с разделителем запятой, потом через ИзСтрокиСРазделителями() создать список и работать с ним, но в других dll-ках как-то же передают.
Т.е. кто писал dll-ки, прошу поделиться советом, как правильно в dll упаковать и передать параметр.
   acht
 
1 - 21.08.21 - 09:18
Пригласи сюда своего программиста.
   Garykom
 
2 - 21.08.21 - 09:43
   acht
 
3 - 21.08.21 - 09:53
(2) У него 7.7, а ты прислал ссылку на данные для 8. Специальный тип данных COMSafeArray и все такое, ага-ага.
   Бертыш
 
4 - 21.08.21 - 16:24
VBA на Вас NET :)
   Garykom
 
5 - 21.08.21 - 16:28
(4) да с каждым годом "грамотность" типо "программистов" все более разочаровывает
   Бертыш
 
6 - 21.08.21 - 16:33
(0) На ИТС доступна технология создания внешних компонент. Думаю и по 7.7 там будет пример кода компоненты
   Garykom
 
7 - 21.08.21 - 16:37
(6) нету там как списки передавать
есть массивы но это только для 8-ки

или сериализация (в строку как пример) или методы для работы с значениями по одному (по итератору или еще как)
   Бертыш
 
8 - 21.08.21 - 16:48
(7) Ну не знаю. В свое время в прайс листе фирмы 1С для 7.7 был продукт "Технология  создания внешних компонент". Я даже покупал его когда то
   Garykom
 
9 - 21.08.21 - 17:08
(8) продукт то есть
списки/массивы передавать тудя-сюдя для 1С 7.7 нет
   acht
 
10 - 21.08.21 - 17:29
(9) > списки/массивы передавать тудя-сюдя для 1С 7.7 нет
Господи, что го и микросервисы с людьми делают-то...

Есть конечно. Почитай документацию - ту самую, про создание внешних компонент. Не нативных, а старых, совместимых с 7.7. Там целых три интерфейса из 1С при инициализации получаются, хоть справочники создавай, хоть таблицы значений возвращай.
   Garykom
 
11 - 21.08.21 - 17:39
(10) пруф
   Garykom
 
12 - 21.08.21 - 17:57
   acht
 
13 - 21.08.21 - 18:07
(11) Начни с "Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 / Разработчикам / Платформа, механизмы и технологии / Технология создания внешних компонент / Создание компонент с использованием технологии COM". Подразделы "Использование типа COM VARIANT при обмене данными", "Доступ к "1С:Предприятию" через механизм OLE Automation"
   acht
 
14 - 21.08.21 - 18:08
(12) А, видимо ты и есть тот самый программер, который сделал ТС dll-ку. Это многое поясняет.
   ДенисЧ
 
15 - 21.08.21 - 18:10
(13) "Как передать список значений из DLL (VBA.NET) в 1С 7.7?"
"Начни с "Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 "

https://alittlebit.ru/upload/iblock/366/d97fe2bf7530a36d69275f5dcfbc7f8d.jpeg
   NorthWind
 
16 - 21.08.21 - 18:12
(11) я подозреваю, что нужно найти древнючую ЖКК по ВК для 7.7.
Лет 15 назад я ее читал, скан, кажется, был.
Но сейчас раскопать ее целое дело, подозреваю.
   acht
 
17 - 21.08.21 - 18:14
(15) Там еше пара десятков слов есть - с тебя еще две картинки.
   Garykom
 
18 - 21.08.21 - 18:18
(13) "У него 7.7, а ты прислал ссылку на данные для 8. Специальный тип данных COMSafeArray и все такое, ага-ага."

твое в (3)

так где пруфы то? для 1С 7.7
   Garykom
 
19 - 21.08.21 - 18:20
(14) нет
я знаю чем VBA от VB.Net отличается
И делал бы на C++ или C#
   Garykom
 
20 - 21.08.21 - 18:21
(19)+ Или на Delphi/Lazarus
   NorthWind
 
21 - 21.08.21 - 18:21
с учетом того, что в СЗ могут быть добавлены любые объекты 1С - подозреваю, что обработка в ВК дело не совсем тривиальное
   acht
 
22 - 21.08.21 - 18:21
(18) Тебе уже даны все исходные данные для поиска. Собери жопу в горсть, найди или бумажную книжку или раздел на сайте 1С.
   Garykom
 
23 - 21.08.21 - 18:23
(21) да можно в ВК отправить по технологии COM/OLE "ссылку" на некий объект 1С
ту же СЗ или ТЗ
а потом внутри ВК ее хреначить
только это изврат и тормоза
   Garykom
 
24 - 21.08.21 - 18:23
(23)+ и постоянные глюки
   acht
 
25 - 21.08.21 - 18:24
(21) Дык оно средствами 1С и добавляется. Получаешь AppDispatch и дергаешь саму 1С сколько влезет.
   acht
 
26 - 21.08.21 - 18:24
(23) О, упоротое мнение начинает дрейф от "невозможно" до "это изврат"
   Volodja
 
27 - 21.08.21 - 18:25
(0) Как вариант:
Используй ЗначениеВСтрокуВнутр(_Объект);
Посмотри как устроена строка и потом из DLL формируй и передавай ее в 1С ( ЗначениеИзСтрокиВнутр(_Строка) )
   Garykom
 
28 - 21.08.21 - 18:25
(22)(25) ты не понимаешь чем отличается передача массивов/списков от работы внутри ВК по OLE Automation дергая 1С 7.7 как сервер?
   Garykom
 
29 - 21.08.21 - 18:25
(26) это невозможно
если не понимаешь разницы, бесполезно разговаривать
   Garykom
 
30 - 21.08.21 - 18:26
(27) для 77 достаточно неплохой вариант
 
 
   Garykom
 
31 - 21.08.21 - 18:26
(30)+ встроенной в 1С 77 сериализации на уровне платформы
   acht
 
32 - 21.08.21 - 18:28
(29) У тебя го головного мозга, точно...
   acht
 
33 - 21.08.21 - 18:28
(29) Ты книжку-то читал?
   Garykom
 
34 - 21.08.21 - 18:29
(33) какую именно? ты ссылку так и не дал

(32) лучше го чем опилки
   ДедМорроз
 
35 - 21.08.21 - 18:35
Передается только тип VARIANT
Смотрим его описание и понимаем,что массив можно передать,другое дело,что 1с его не поймет,но если в код 1с сделать вставки на VbScript,то массив примется на ура.
А еще есть объект Scripting Dictionary,который и передается и перебирается на ура.
И в 1с он работает даже быстрее списка значений.
Единственное,что нужно помнить - это границы процесса,хотя,если у вас dll,то там все должно быть InProcess.
   Serginio1
 
36 - 22.08.21 - 18:56
   Кирпич
 
37 - 22.08.21 - 19:30
(34) В доке 1с всё написано. В Init 1с дает ссылку на IDispatch, через который можно надыбать свойство AppDispatch, через которое работает всё, что 1с позволяет делать с собой через COM. AppDispatch.СоздатьОбъект("СписокЗначений") и готово.
   Кирпич
 
38 - 22.08.21 - 19:32
Но программер в (0) скорее всего делает просто COM dll, а не ВК. Иначе бы он доку прочитал и вопросов не задавал.
   Хосе
 
39 - 22.08.21 - 20:31
(0) можно сериализовать в строку. Можно COMSafeArray, в 1С вроде умеют.
   acht
 
40 - 22.08.21 - 23:08
(39) Геня, йоптыть. Секция 7.7. В теме написано русским языком "в 1С 7.7".
Какой, наъ, COMSafeArray? Ты вот свои статьи также пишешь, да.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.