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

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

Есть конечно. Почитай документацию - ту самую, про создание внешних компонент. Не нативных, а старых, совместимых с 7.7. Там целых три интерфейса из 1С при инициализации получаются, хоть справочники создавай, хоть таблицы значений возвращай.
11 Garykom
 
гуру
21.08.21
17:39
(10) пруф
12 Garykom
 
гуру
21.08.21
17:57
13 acht
 
21.08.21
18:07
(11) Начни с "Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 / Разработчикам / Платформа, механизмы и технологии / Технология создания внешних компонент / Создание компонент с использованием технологии COM". Подразделы "Использование типа COM VARIANT при обмене данными", "Доступ к "1С:Предприятию" через механизм OLE Automation"
14 acht
 
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
16 NorthWind
 
21.08.21
18:12
(11) я подозреваю, что нужно найти древнючую ЖКК по ВК для 7.7.
Лет 15 назад я ее читал, скан, кажется, был.
Но сейчас раскопать ее целое дело, подозреваю.
17 acht
 
21.08.21
18:14
(15) Там еше пара десятков слов есть - с тебя еще две картинки.
18 Garykom
 
гуру
21.08.21
18:18
(13) "У него 7.7, а ты прислал ссылку на данные для 8. Специальный тип данных COMSafeArray и все такое, ага-ага."

твое в (3)

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

(32) лучше го чем опилки
35 ДедМорроз
 
21.08.21
18:35
Передается только тип VARIANT
Смотрим его описание и понимаем,что массив можно передать,другое дело,что 1с его не поймет,но если в код 1с сделать вставки на VbScript,то массив примется на ура.
А еще есть объект Scripting Dictionary,который и передается и перебирается на ура.
И в 1с он работает даже быстрее списка значений.
Единственное,что нужно помнить - это границы процесса,хотя,если у вас dll,то там все должно быть InProcess.
36 Serginio1
 
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С вроде умеют.
40 acht
 
22.08.21
23:08
(39) Геня, йоптыть. Секция 7.7. В теме написано русским языком "в 1С 7.7".
Какой, наъ, COMSafeArray? Ты вот свои статьи также пишешь, да.