1с 7.7 ВК вопрос

1. user636605_vladzhegest 24.08.18 11:40 Сейчас в теме
Здравствуйте форумчане!
Сразу скажу: только начинаю знакомиться с технологией создания внешних компонент. Создал ВК по статье: https://infostart.ru/public/115486/ . Все отлично работает, но. Прочитав статью ТСВК мало что понял. Примеры там есть, но интересует следующее: как из ВК вызвать выполнение метода объекта 1с? В статье оговорено что это возможно посредством вызова метода Invoke, но как именно? И как передать/вернуть из ВК 1с-у например таблицу значений? Нигде нет примеров, помогите!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. protexprotex 116 24.08.18 13:12 Сейчас в теме
(1) Добрый день. Саму таблицу значений Вы не передадите и не вернете. Т.к. Таблица значений - это наследник класса объявленного в 1С. Если будете писать на VB или на c++ builder или на Delfi (в общем, не важно на чем (кроме как на самой 1С :-) - но на ней Вы ВК не напишите :-) )) - то эти платформы разработки ничего о типе ТаблицаЗначений не знают.
3. protexprotex 116 24.08.18 13:14 Сейчас в теме
(1) Если уж очень хочеться передавать/принимать "ТаблицуЗначений", то можете реализовать передачу не саму таблицу значений, а ее строкове описание через ЗначениеВСтроку и ЗначениеИзСтроки и передавать как строку (но там могут быть ограничения на длину строки). Но это при условии, что у Вас в таблице значений примитивные типы данных.
4. protexprotex 116 24.08.18 13:17 Сейчас в теме
(1)Примитивные типы данных - это Строка, Дата (лучше преобразовать в строку), Число, булево (но с ним лучше преобразовывать в 1 или 0 ). Иначе если Вы передадите ссылку на справочник (например) в VB, то VB не "поймет" что это :-) - так что лучше все ссылки из таблицы значений преобразовать в вид типа ТипОбъекта.КодЭлемента - например, так: Справочник.Номенклатура.00000134 или Документ.РеализацияТоваровИУслуг.000189.01012018 - и уже работать через OLE для ссылками (ну, или через COM - соединения с 1С)
5. user636605_vladzhegest 24.08.18 14:01 Сейчас в теме
(4) Спасибо за помощь! Уточняю вопрос: у меня выполняется запрос на выборку данных в ВК, хочу вернуть результат в 1с, структура я думаю понятна. И про COM по подробнее)
6. protexprotex 116 24.08.18 14:08 Сейчас в теме
(5) Вы во внешней компоненте выборку делаете как - во внешней по отношению к 1С базе данных (типа в MS SQL SERVER) или напрямую делаете в 1С запрос ИЗ внешней компоненты?
7. user636605_vladzhegest 24.08.18 14:54 Сейчас в теме
(6) выборка через adodb не из 1с
8. protexprotex 116 24.08.18 15:03 Сейчас в теме
(7) Результат запроса можете возвращать как строку. В dll должна быть объявлена функция - член с входным и выходным (параметр возврата) параметром. Вот через выходной (возвращаемый) параметр и возвращаете результат запроса в 1С. У Вас dll на чем написано? - обычно параметры имеют тип Variant.
9. user636605_vladzhegest 24.08.18 15:31 Сейчас в теме
(8)писал в visual studio на c++. Попробую спасибо!
10. protexprotex 116 24.08.18 15:41 Сейчас в теме
(9) Я все пишу на c++ builder 6. По поводу visual studio - не могу сказать. Но насколько я помню когда юзал сию систему (VS), то там практически все идентично. Конструктор немного другой, но общий вектор-идея разработки dll так же как и в builder.
11. user636605_vladzhegest 24.08.18 22:57 Сейчас в теме
(10) Из статьи по ТСВК: "Для вызова метода объекта необходимо вызвать метод Invoke полученного ранее интерфейса IDispatch, передав ему все необходимые параметры, в том числе номер (DISPID) вызываемого метода объекта. Этот номер можно получить из метода GetIDsOfNames интерфейса IDispatch, передав ему название метода объекта.

Соответствие между параметрами метода объекта и массивом структур VARIANT прямое: первому параметру соответствует структура с индексом 0, второму параметру - структура с индексом 1 и т.д. При передаче параметров метода объекта следует учесть, что необходимо передавать значения всех параметров, включая значения параметров, подставляемые по умолчанию. Для подстановки значений по умолчанию достаточно присвоить тип VT_EMPTY (VT_ERROR для 1С:Предприятия 8) соответствующей структуре VARIANT." Следовательно вызвать метод объекта можно и похоже можно вызывать "УстановитьЗначение" таблицы значений. Все вроде написано, но я не шарю... Как?:)
Оставьте свое сообщение

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