Тема: Navision и 1С
Показать сообщение отдельно
Старый 25.07.2005, 15:23   #3  
Glazz is offline
Glazz
Участник
 
12 / 10 (1) +
Регистрация: 25.07.2005
Цитата:
Сообщение от DimCorso
Добрый день!

Пытаюсь через ADO из-под 1С подключиться к Навижновской базе. Создал udl-файл. Подключился, структуру таблиц базы увидел. А все запросы выдают ошибку...

Например:
SELECT *
FROM Currency;
Результат:
Microsoft OLE DB Provider for ODBC Drivers: [Navision Software a/s][Navision Financials ODBC Driver]Table does not exists

Не подскажете, в чем может быть проблема?

зачем udl файл?
<div class='v7top'>1Cv7</div><div class='v7'>
Соединение=СоздатьОбъект&#40;"ADODB.Connection"&#41;;
СтрокаКоннекта="driver={SQL Server};server=sql;uid=sa;pwd=пароль;Database=navision";
Соединение.ConnectionTimeOut=200;
Соединение.CursorLocation=3;
Попытка
&nbsp;Соединение.Open&#40;СтрокаКоннекта&#41;;
Исключение
&nbsp;Предупреждение&#40;"Невозможно установить соединение с базой данных!"&#41;;
&nbsp;Возврат 0;
КонецПопытки;</div>

Да и Navision дает имена таблицам по шаблону ИмяФирмы$ИмяТаблицыИзДизайнера.
Кусок из 1С ки:
<div class='v7top'>1Cv7</div><div class='v7'>
Функция ТипПараметра&#40;SQLStrType &#41; &nbsp;Экспорт
&nbsp;Тип = НРег&#40;SQLStrType&#41;;
&nbsp;Если Тип = "empty" тогда Возврат 0;
&nbsp;иначеесли Тип = "boolean" тогда Возврат 11;
&nbsp;иначеесли Тип = "integer" тогда Возврат 3;
&nbsp;иначеесли Тип = "int" тогда Возврат 3;
&nbsp;иначеесли Тип = "tinyint" тогда Возврат 16;
&nbsp;иначеесли Тип = "smallint" тогда Возврат 2;
&nbsp;иначеесли Тип = "bigint" тогда Возврат 20;
&nbsp;иначеесли Тип = "numeric" тогда Возврат 131; &nbsp; &nbsp;
&nbsp;иначеесли Тип = "double" тогда Возврат 5; &nbsp; &nbsp;
&nbsp;иначеесли Тип = "date" тогда Возврат 7; &nbsp; &nbsp;
&nbsp;иначеесли Тип = "char" тогда Возврат 129;
&nbsp;иначеесли Тип = "varchar" тогда Возврат 200; &nbsp; &nbsp;
&nbsp;иначеесли Тип = "unsignedtinyint" тогда Возврат &nbsp; 17;
&nbsp;иначеесли Тип = "unsignedsmallint" тогда Возврат &nbsp;18;
&nbsp;иначеесли Тип = "unsignedint" тогда Возврат 19;
&nbsp;иначеесли Тип = "unsignedbigint" тогда Возврат &nbsp; 21;
&nbsp;иначеесли Тип = "single" тогда Возврат 4;
&nbsp;иначеесли Тип = "currency" тогда Возврат 6;
&nbsp;иначеесли Тип = "decimal" тогда Возврат 14;
&nbsp;иначеесли Тип = "error" тогда Возврат 10;
&nbsp;иначеесли Тип = "userdefined" тогда Возврат 132;
&nbsp;иначеесли Тип = "variant" тогда Возврат 12;
&nbsp;иначеесли Тип = "idispatch" тогда Возврат 9;
&nbsp;иначеесли Тип = "iunknown" тогда Возврат 13;
&nbsp;иначеесли Тип = "guid" тогда Возврат 72;
&nbsp;иначеесли Тип = "dbdate" тогда Возврат 133;
&nbsp;иначеесли Тип = "dbtime" тогда Возврат 134;
&nbsp;иначеесли Тип = "dbtimestamp" тогда Возврат 135;
&nbsp;иначеесли Тип = "bstr" тогда Возврат 8;
&nbsp;иначеесли Тип = "longvarchar" тогда Возврат 201;
&nbsp;иначеесли Тип = "wchar" тогда Возврат 130;
&nbsp;иначеесли Тип = "varwchar" тогда Возврат 202;
&nbsp;иначеесли Тип = "longvarwchar" тогда Возврат 203;
&nbsp;иначеесли Тип = "binary" тогда Возврат 128;
&nbsp;иначеесли Тип = "varbinary" тогда Возврат 204;
&nbsp;иначеесли Тип = "longvarbinary" тогда Возврат &nbsp; 205;
&nbsp;иначе возврат 0;
&nbsp;конецесли;
КонецФункции


Процедура ДалаемСклоненияВЕбижене&#40;&#41; &nbsp; &nbsp;
ИмяТаблицы="KadrTabSklon"; &nbsp; &nbsp;
ТекстЗапроса="SELECT Tip,Name,Flzap FROM ["+ИмяБазы+ИмяТаблицы+"] "; &nbsp; &nbsp;
Запрос=СкомпилироватьЗапрос&#40;Соединение,ТекстЗапроса&#41;; &nbsp; &nbsp;
&nbsp;
ТекстОбновления="UPDATE ["+ИмяБазы+ИмяТаблицы+"] SET NameD=?, NameV=?, NameT=?, Flzap=0 WHERE Tip=? AND Name=?"; &nbsp; &nbsp;
ЗапросОбновления=СкомпилироватьЗапрос&#40;Соединение,ТекстОбновления&#41;; &nbsp; &nbsp;
&nbsp;
NameD=ЗапросОбновления.CreateParameter&#40;"P1", ТипПараметра&#40;"Char"&#41;, input,240&#41;; &nbsp; &nbsp;
NameV=ЗапросОбновления.CreateParameter&#40;"P2", ТипПараметра&#40;"Char"&#41;, input,240&#41;; &nbsp; &nbsp;
NameT=ЗапросОбновления.CreateParameter&#40;"P3", ТипПараметра&#40;"Char"&#41;, input,240&#41;; &nbsp; &nbsp;
Tip=ЗапросОбновления.CreateParameter&#40;"P4", ТипПараметра&#40;"Integer"&#41;, input,&#41;; &nbsp; &nbsp;
Name=ЗапросОбновления.CreateParameter&#40;"P5", ТипПараметра&#40;"Char"&#41;, input,240&#41;; &nbsp; &nbsp;
&nbsp; &nbsp;
ЗапросОбновления.Parameters.Append&#40;NameD&#41;; &nbsp; &nbsp;
ЗапросОбновления.Parameters.Append&#40;NameV&#41;; &nbsp; &nbsp;
ЗапросОбновления.Parameters.Append&#40;NameT&#41;; &nbsp; &nbsp;
ЗапросОбновления.Parameters.Append&#40;Tip&#41;; &nbsp; &nbsp;
ЗапросОбновления.Parameters.Append&#40;Name&#41;; &nbsp; &nbsp;
&nbsp;
НаборЗаписей=Запрос.Execute&#40;&#41;; &nbsp; &nbsp; &nbsp;
Если НаборЗаписей.EOF&#40;&#41; = 0 Тогда &nbsp; &nbsp;
&nbsp; НаборЗаписей.MoveFirst&#40;&#41;; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; Пока НаборЗаписей.EOF&#40;&#41; = 0 Цикл &nbsp; &nbsp;
&nbsp; &nbsp;Тип=Число&#40;НаборЗаписей.Fields&#40;0&#41;.Value&#41;; &nbsp; &nbsp;
&nbsp; &nbsp;Стр=СокрЛП&#40;НаборЗаписей.Fields&#40;1&#41;.Value&#41;; &nbsp; &nbsp;
&nbsp;ФлагЗаполнения=НаборЗаписей.Fields&#40;2&#41;.Value;

&nbsp; ... &nbsp;и т.д.
&nbsp; Если ..
&nbsp; &nbsp;ЗапросОбновления.Execute&#40;&#41;;
&nbsp; КонецЕсли; &nbsp; &nbsp;

&nbsp;НаборЗаписей.MoveNext&#40;&#41;; &nbsp; &nbsp; &nbsp;
КонецЦикла; &nbsp; &nbsp;</div>
и т.п.