![]() |
![]() |
![]() |
|
.Net: ADO.NET | ☑ | ||
---|---|---|---|---|
0
Михайло
09.09.05
✎
19:36
|
А пытались-ли подключать ado.net к 1С, если да то как результат?
|
|||
1
Волшебник
модератор
09.09.05
✎
19:37
|
Web-расширение для 8.0
|
|||
2
Волшебник
модератор
09.09.05
✎
19:37
|
||||
3
Михайло
09.09.05
✎
19:38
|
А для 7.7 ?
|
|||
4
Волшебник
модератор
09.09.05
✎
19:38
|
пардон, спутал с ASP. Но всё равно, одного поля ягоды.
|
|||
5
Волшебник
модератор
09.09.05
✎
19:39
|
ADO.NET оборачиваются в COM-оболочку.
в 1С 7.7 или 8.0 создается COM-объект. Дальше всё, как обычно. |
|||
6
Михайло
09.09.05
✎
19:41
|
Интересно, а как это на практике "оборачивается в com оболочку" ?
|
|||
7
Волшебник
модератор
09.09.05
✎
19:48
|
(6) Любой NET-объект можно обернуть в COM-оболочку, чтобы он был доступен из unmanaged-кода, и наоборот, любой COM-объект можно обернуть в NET-оболочку, чтобы он был доступен из managed-кода.
Подробнее см. здесь: http://rsdn.ru/summary/609.xml |
|||
8
Михайло
09.09.05
✎
19:51
|
(7)Волшебник, это все понятно, я с этим работаю. Но ведь вопрос-то стоит об "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\System.Data.dll", что-то я не понял как это ее можно в com запихнуть?
|
|||
9
Волшебник
модератор
09.09.05
✎
19:58
|
(8) Ты по ссылке ходил?
|
|||
10
romix
10.09.05
✎
09:15
|
Можно наваять внешнюю компоненту, и в нее "обернуть" вызовы ADO.NET.
Образчик внешней компоненты под .NET поставляет фирма 1С, но он какой-то ... короче, у меня он не запустился. Коробка называется "Технология создания внешних компонент" и стоит 15$. Если надо, могу заслать свой работающий образчик ВК. |
|||
11
Михайло
10.09.05
✎
16:12
|
"Спасибо" Волшебнику, на полдня меня запутал, но наконец-то разобрался.
(10) Если ты с этой проблемой знаком, может сталкивался с такой проблемой, как передача объекта из .net в 1с ? Скажем я отработал некоторый запрос к БД, заполнил DataSet, из нее достал DataTable (все это в .net). Теперб хочу передать этот DataTable в 1С - не хочет собака. Дошел до того, что в классе определил Inherits DataSet.DataTable (наследование), а 1с все равно не создает объект. В VS.NET такой подход работает прекрасно. |
|||
12
romix
10.09.05
✎
18:46
|
(11) Передавай таблицу построчно, в чем проблема? ВыбратьСтроки() - ПолучитьСтроку() :-) 1С не умеет передавать массивы или таблицы... Да и памяти это может сожрать так, что у клиента головка у жесткого диска отвалится и ты будешь виноват... :-)
Насчет обращаться к метаданным 1С из ВК - ниже пример (с) Соарона для Дельфи: var obj : IDispatch; obj0 : Variant; begin obj := OleVariant(pConn).AppDispatch; obj._AddRef; obj0 := Variant(obj).CreateObject('Справочник.Сотрудники'); obj0.ВыбратьЭлементы; К глобальным переменным гл. модуля наверное тоже так можно обращаться (я не пробовал, но наверное можно). Объявить там таблицу и заполнять ее из ВК. |
|||
13
romix
10.09.05
✎
18:48
|
Типы VT_DECIMAL, VT_VARIANT, VT_UNKNOWN и VT_ARRAY не поддерживаются.
(с) "Технология создания внешних компонент" |
|||
14
romix
10.09.05
✎
18:52
|
Насчет "Волшебник запутал" - простые (не 1С-ные) COM-DLL теоретически тоже должны работать в твоем случае. Если не нужны русские идентификаторы, события, AppDispatch и другие доп. возможности, которые предоставляет технология ВК от 1С.
|
|||
15
Михайло
11.09.05
✎
09:08
|
(12-14)Понятно, что 1С-ина не поддерживает какие-то типы данных. Но если я делаю в .net библиотеку классов(допустим aaa.dll) и в ней определяю класс (bbb), при сборке определяю com видимость и регистрирую com interop, то при установленных компонентах .net, в 1С я вызываю этот класс простым СоздатьОбъект("aaa.bbb");. Далее мне доступен класс полностью в 1С. Теперь с пространством(классом) Data(где находится DataSet,DataTable) так не проходит, т.к. он не определен разработчиками как com видимый(скорее всего). Что я делаю: я засовываю (наследую) в классе(bbb) этот класс DataTable, делаю его com видимым и собираю. Проверяю в VS.Net, создан класс bbb который полностью совместим с классом DataTable, все ОК. Создаю в 1С объект "aaa.bbb", в полной уверенности что сейчас буду управлять таблицей DataSet... Не тут-то было - "Не могу создать объект!!!".
|
|||
16
romix
11.09.05
✎
18:27
|
(15) В общем случае 1С может работать только с числами (и то не всеми), строками и датами. Для более сложных объектов надо предусматривать встроенные методы ВК наподобие:
вк.ВыполнитьЗапрос("Select * from Customers"); Пока вк.ПолучитьСледующуюЗапись()=1 Цикл зн=вк.ПолучитьЗначениеПоля("CompanyName"). Сообщить(зн); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |