#0
by lvi15
Необходимо получить набор данных (DataSet) из внешней закрытой базы. Для этого используется специальнsq dll-модуль, который должен получить данные и затем передать их в 1с (8.0/1). Получается что надо использовать Внешнюю компоненту и все, что с ней связано. Как вариант - хотя бы просто получить что-то из внешней компоненты. Вопрос - как эту самую компоненту оформлять (желательно на VisBasic.Net)??? Может у кого есть заготовки?? То что нашел в интернете, на этом сайте в статьях и в той же Технологии создания внешних компонент - бред какой-то (очень оторванно от жизни). Как должны быть описаны интерфейсы IInitDone и пр. для такой "простой" задачи. С Уважением = Л.Владимир
#2
by lvi15
Все - с помощью "завмага-товароведа и пр" разобрался как писать ВК, если кому надо - спрашивайте... Но остался вопрос с получением данных - из ВК я должен получить DataSet. В ВК написано - Sub CallAsFunc(.... ByRef pvarRetValue As Object,... Возвращаемое значение pvarRetValue = GetDataSet ..... В 1c пишу - РекордСет=Компонента.GetRecordSet; Оно возвращает COMОбъект - ну как его раскручивать??? Например в таблицу значений. Есть ли что нибудь вообще, а в идеале стандартное??
#4
by lvi15
А писать то как надо? Ну пишу стандарт для DataSet (в продолжении вышеприведенного текста) Для Каждого tbl Из РекордСет.Tables Цикл КонецЦикла; Оно говорит, что у РекордСета нету таких методов и пр. И как их увидеть??
#7
by lvi15
Да - regasm..., без этого оно не работает DataSet возвращает пару записей из простенькой таблицы, как xml-файл я его вижу через web-сервис... Может возвращать надо не DataSet, а DataTable, как более простой объект
#9
by lvi15
А какая тогда наиболее предпочтительная технология передачи данных-массивов между 1с и ВК?
#12
by lvi15
Все - с помощью "завмага-товароведа и пр" разобрался как получить табличные данные - использовал механизм передать-получить таблицу значений: Примеры кода взяты из примеров vb_XmlTextReaderWriter и vb_OLE, которые можно скачать на этом сайте. Код в 1с/8.1: тз=Компонента.GetRecordSet(тз); //<--Передаю-получаю ТЗ... Код во внешней компоненте: ...Case Methods.methGetRecordSet obj1C = paParams.GetValue 'получить ТЗ из 1с newRow = obj1C.Добавить '--здесь усе как в 1с, заполняем newRow.Наименование = "Тест" pvarRetValue = obj1C 'возвращаю заполненное значение Усе работает, но нет предела совершенству - таблицу значений приходится создавать в 1с и потом ганять туда-сюда, а вроде как можно создать и в самой внешней компоненте и гнать только сюда, пример кода такой (из vb_OLE): If g_flagInit = False Then obj0 = obj1C.CreateObject("ТаблицаЗначений") ДИАГНОСТИКА: Общий член "CreateObject" для типа "_ComObject" не найден.. И вот здесь засада - пример, похоже, дан для 1с7.7, а как тогда оно будет выглядеть в 8.0/1??? Или стоит обратиться к ComSafeArray???
#15
by H A D G E H O G s
Не знаю, как тама в ваших Визуалах, а у нас в Дельфи есть интерфейс IInitDone с методом Init(pConnection), который самовызывается 1С-кой при подключении библиотеки и передает параметр pConnection Вот этот pConnection имеет свойство AppDispatch, - фактически контекст 1С- ки: Однако AppDispatch - доступен ТОЛЬКО после полного выполнения процедуры Init, например в CallAsFunc. Поэтому значение pConnection храним в глобальной переменной типа IDispatch
#16
by H A D G E H O G s
Не знаю, как у вас там в Визуалах ссылки считаются, и кто ответственнен за уничтожение, у нас в методе Done надо счетчик уменьшать, иначе 1С-ка будет висеть после закрытия.
#17
by lvi15
H A D G E H O G s- спасибо за помощь - у меня все как и у Вас, но как обычно "дьявол" кроется в мелочах. Может кому интересно, поэтому отпишусь. Итак, во внешней компоненте (dll) на VB.net проверялось-писалось: obj0 = obj1C.CreateObject("ТаблицаЗначений") - так ругается obj0 = obj1C.NewObject ("ТаблицаЗначений") - а вот так работает, далее obj0.Колонки.Добавить("Код") - так ругается obj0.Columns.Add("Код") - а вот так работает, Ну а дальше все работает и с русскими названиями методов 1с: newRow.Наименование = "Имя" pvarRetValue = obj0 - здесь идет возврат в 1с и все получаю... Еще раз спасибо! P.S. Со счетчиками ссылок особых проблем нет, так как в исходных примерах все это было неплохо отписано. С Уважением = Л.Владимир
#19
by lvi15
Еще вопрос в эту же тему. Чтобы усе было совсем хорошо, пытаюсь заполнять табл знач через названия столбцов в переменных, в 1с это выглядит так: А вот в проге на Vb.Net - "хрен" знает как это делать пробовал варианты: newRow["Код"] = "001" ' так вообще не работает /ошибка синтакс newRow.(Код") = "001" ' тоже не работает Может кто сталкивался, причем способ обращения скорее всего не зависит в среде какого языка Net это делать (vb или cs)???
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Получить id и получить объект по id
- как получить данные таблицы значений документа и модуля док?
- Как программно получить получить пароль пользователя в текущем сеансе работ
- Как получить разность дат (Нужно получить количество дней)
- Как получить ГУИД элемента по OLE, записать и получить по нему ссылку?
- Подключенеи внешней компоненты. Ошибка "Ошибка при подключении внешней компоненты"
- V82.COMConnector Как получить данные запроса?
- Подключение внешней компоненты из макета внешней обработки в толстом клиенте
- Подключение внешней компоненты во внешней обработке 1С 8.2
- Из текущие данные списка получить самые данные
- Получить данные формы из модуля объекта внешней обработки
- Как получить данные с регистра накопления без учета одного регистратора?
В этой группе 1С
- Убрать пробелы в запросе
- Как получить остатки по синтетическому счету
- Как отобрать в запросе определённые данные с пустыми реквизитами
- Печать бланков с двухмерным штрих-кодом
- Не нашел описание механизма контроля даты запрета редактирования в УПП
- Событие ОбработкаВыбора поля ввода. Ошибка разработчиков или...
- Проектирование: Может создадим свой аналог ICQ или нужен ли Мисте свой IM-сервер?
- AppName: 1cv7.exe AppVer:7.70.0.27, Mod Name: dbeng 32 dll, Mod Ver 7.70.0.14, Offset
- AppName: 1cv7.exe AppVer:7.70.0.27, Mod Name: dbeng 32 dll, Mod Ver 7.70.0.14, Offset
- Курсовые разницы при расчетах в у.е.
- ЗУП 2.5 - НДФЛ за прошлый период
- Как программно изменить цвет фона ячейки табличной части документа?
- КАК у элемента справочника быстро найти самого верхнего родителя?
- При выборе select изменить текст в определенной части страницы
- Ошибка при отправке почты (SMTP error code 535)
- Перенести данные из 1С в пенсионную программу
- В чем отличие м-ду фоновым и регламентным заданием?
- Как вывести число прописью?
- Где в семерке посмотреть метод расчета себестоимости?
- Как проверить отчего тормозит 1С 7.7?