Имя: Пароль:
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? Ты вот свои статьи также пишешь, да.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший