Имя: Пароль:
1C
1C 7.7
v7: поскажите почему ошибка ODBCRecordset
,
0 zladenuw
 
28.12.12
13:46
Запрос = СоздатьОбъект("ODBCRecordset");
   ТекстЗапроса = "
           |SELECT
           |*
           |FROM $Справочник."+"СТСостоянияОбъектов"+" as Спр where Спр.КодВнешний=:ВыбКод";
   Запрос.УстПараметр("ВыбКод",55169095549987777);        
   ТЗ2 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);

Запрос.УстПараметр("ВыбКод",55169095549987777);        
{C:\USERS\KIRILL\DESKTOP\123.ERT(34)}: Недопустимое значение индекса параметра
1 ДенисЧ
 
28.12.12
13:47
УстановитьТекстовыйПараметр() ?
2 1Сергей
 
28.12.12
13:47
КодВнешний - число?
3 Aprobator
 
28.12.12
13:48
код небось текстовый.
4 zladenuw
 
28.12.12
13:49
(1) спасибо
но теперь  FAILED! ICommandText::Execute(): SQL: Column 'КОДВНЕШНИЙ' is not found.
5 ДенисЧ
 
28.12.12
13:49
|FROM $Справочник."+"СТСостоянияОбъектов"+" as Спр where $Спр.КодВнешний=:ВыбКод";
6 Mikeware
 
28.12.12
13:50
(4)$Спр.
7 zladenuw
 
28.12.12
13:50
(5,6)  FAILED! ICommandText::Execute(): Operator/operand type mismatch.
8 Mikeware
 
28.12.12
13:52
(7)Запрос.УстПараметр("ВыбКод","55169095549987777");
9 ДенисЧ
 
28.12.12
13:52
(7) А теперь ответь на (2) :-))
10 Mikeware
 
28.12.12
13:52
(7)Запрос.УстановитьТекстовыйПараметр("ВыбКод","55169095549987777");
11 КонецЦикла
 
28.12.12
13:52
:)
Санто-барбора
12 zladenuw
 
28.12.12
13:54
спасибо.
Разобрался.
Но как мне получить наименование реквизитов такие же как 1с
Сейчас получаю sp5421,а мне надо именно КодВнешний
13 1Сергей
 
28.12.12
13:54
(11) ты чото О-коешь. Со средней полосы России?
14 ДенисЧ
 
28.12.12
13:55
(12) куда получить?
15 zladenuw
 
28.12.12
13:56
Запрос = База.СоздатьКоманду();
   ТекстЗапроса = "
           |SELECT
           |*
           |FROM $Справочник."+"СТСостоянияОбъектов"+" as Спр where $Спр.КодВнешний=:ВыбКод";
   Запрос.УстановитьТекстовыйПараметр("ВыбКод","55169095549987777");        
   ТЗ2 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
   ТЗ2.ВыбратьСтроки();
   Пока ТЗ2.ПолучитьСтроку()=1 Цикл
       Сообщить(ТЗ2.КодВнешний);
               Сообщить(ЗначениеИзСтрокиВнутр(ТЗ2.ВнутреннееПредставление));
               Сообщить("Дата КПК - "+ТЗ2.ДатаКПК+", Дата Загрузки "+ТЗ2.ДатаКонтроль);
               Сообщить("----");
   КонецЦикла;
Сообщить(ТЗ2.КодВнешний); в отладчике нету такой колонки. есть только sp5421 ну и дальше
16 Aprobator
 
28.12.12
13:56
(12) жесть то какая.
17 ДенисЧ
 
28.12.12
13:57
дык и не будет. Альясы прописывай через метаданные.
18 ЧеловекДуши
 
28.12.12
13:57
(15)Иди, проспись, новый год скоро :)
Ведать все же пятница... волшебная... некоторым мозг отшибает :)
19 Aprobator
 
28.12.12
13:58
не иначе As спрели из запроса.
20 Mikeware
 
28.12.12
13:59
(15) ошибка там же, где и всегда...
21 ЧеловекДуши
 
28.12.12
13:59
(19)Дело не в ас, дело все в том, что он в отладчике прямых запросов, не видит привычные реквизиты :ВВВВВ
22 Aprobator
 
28.12.12
13:59
(21) дело явно где то в (20) ))).
23 zladenuw
 
28.12.12
14:01
Понял.
Как мне указать вот такое в запросе?
мТЗнКоды.ЭлементСостояния = мСпрСостояния.ТекущийЭлемент();
24 ДенисЧ
 
28.12.12
14:02
(23) Чо????
кстати, попробуй gdb dna ... говорят помогает...
25 Mikeware
 
28.12.12
14:02
(23) см (20)
26 ЧеловекДуши
 
28.12.12
14:03
(23)Почитай мануал!!!
По 1С++ в http://www.1cpp.ru/forum/YaBB.pl?board=general
27 КонецЦикла
 
28.12.12
14:03
У тебя в селекте *
Поэтому колонки так и называются
28 zladenuw
 
28.12.12
14:06
(27) я это понял.
Я имею виду что для разных мд будет разные представление колонок в запросе или нет ?
Исправил вот так
ТекстЗапроса = "
           |SELECT
           //|*
           |Спр.Code as Код,
           |Спр.sp5423 as ВнутреннееПредставление,
           |Спр.sp5422 as КодВнешний,
           |Спр.Descr as Наименование,
           |Спр.sp5427 as ДатаКПК,
           |Спр.sp5428 as ДатаКонтроль
           |FROM $Справочник."+"СТСостоянияОбъектов"+" as Спр where $Спр.КодВнешний=:ВыбКод";
29 1Сергей
 
28.12.12
14:07
(28) ты же сам написал $. так и не понял для чего?
30 КонецЦикла
 
28.12.12
14:09
SELECT $Спр.КодВнешний

или $Спр.КодВнешний МойКод

или, допустим

$Спр.Контрагент [Контрагент $Справочник.Контрагенты]

почитай доку
31 zladenuw
 
28.12.12
14:09
(28) есть разные базы. нужно что бы этот код работал и в них. Как сказал ДенисЧ. нужно брать метаданные. но как указать это в запросе ?

(29) Мне нужно в ТЗ в которую выгружать получить колонки
ВнутреннееПредставление,КодВнешний а не sp5423
32 КонецЦикла
 
28.12.12
14:10
(31) Будет работать в разных базах, даже если в одной код - это sp213, а в другой - sp546 :)
33 zladenuw
 
28.12.12
14:11
(30)
Meta name parser error: поле таблицы не найдено "$Спр.КодВнешний"
34 КонецЦикла
 
28.12.12
14:12
(33) Значит нет его в этом спр-ке или какой-то новый косяк добавил
35 Aprobator
 
28.12.12
14:16
(28) бггг.
36 zladenuw
 
28.12.12
14:21
(35) бггг. будет сейчас.
А как мне вытянуть значение с реквизита строки с неогр длинной.
37 Mikeware
 
28.12.12
14:25
(36) кастуй к ограниченному.
38 zladenuw
 
28.12.12
14:30
http://www.1cpp.ru/forum/YaBB.pl?num=1233261817/6#6
| SELECT
|   СпрЮрЛица.id as [Объект_ЮрЛицо $Справочник.ЮрЛица]
|      ,TabЮрАдрес0.Block  as ЮрАдресБлок1
|      ,TabЮрАдрес1.Block  as ЮрАдресБлок2
//... другие поля
| FROM
|      $Справочник.ЮрЛица as СпрЮрЛица
| LEFT JOIN  1SBLOB as TabЮрАдрес0 ON  TabЮрАдрес0.fieldid+TabЮрАдрес0.objid+STR(TabЮрАдрес0.blockno,4)=:ИДЮрАдрес+СпрЮ
рЛица.id+'   0'
| LEFT JOIN  1SBLOB as TabЮрАдрес1 ON  TabЮрАдрес1.fieldid+TabЮрАдрес1.objid+STR(TabЮрАдрес1.blockno,4)=:ИДЮрАдрес+СпрЮ
рЛица.id+'   1'

а как мне получить ИДЮрАдрес ?
39 zladenuw
 
28.12.12
14:30
(38) ступил
40 zladenuw
 
28.12.12
14:32
Получилось
ТекстЗапроса = "
           |SELECT
           |Спр.id as [Объект_СО $Справочник.СТСостоянияОбъектов]
           |      ,Tab0.Block  as Блок1
           |,Tab1.Block  as Блок2
           |,Tab2.Block  as Блок3
           |,Tab3.Block  as Блок4
           |,Tab4.Block  as Блок5,
           |$Спр.ВнутреннееПредставление as ВнутреннееПредставление,
           |Спр.Descr  as Наименование,
           |$Спр.КодВнешний as КодВнешний,
           |$Спр.ДатаКПК as ДатаКПК,
           |$Спр.ДатаКонтроль as ДатаКонтроль
           |FROM $Справочник.СТСостоянияОбъектов as Спр
           | LEFT JOIN  1SBLOB as Tab0 ON  Tab0.fieldid+Tab0.objid+STR(Tab0.blockno,4)=:ИДТбДок+Спр.id+'   0'
           | LEFT JOIN  1SBLOB as Tab1 ON  Tab1.fieldid+Tab1.objid+STR(Tab1.blockno,4)=:ИДТбДок+Спр.id+'   1'
           | LEFT JOIN  1SBLOB as Tab2 ON  Tab1.fieldid+Tab2.objid+STR(Tab2.blockno,4)=:ИДТбДок+Спр.id+'   2'
           | LEFT JOIN  1SBLOB as Tab3 ON  Tab1.fieldid+Tab3.objid+STR(Tab3.blockno,4)=:ИДТбДок+Спр.id+'   3'
           | LEFT JOIN  1SBLOB as Tab4 ON  Tab1.fieldid+Tab4.objid+STR(Tab4.blockno,4)=:ИДТбДок+Спр.id+'   4'
           |where $Спр.КодВнешний=:ВыбКод";
41 zladenuw
 
28.12.12
14:33
(40) а в запросе можно сразу блоки объединить ?
42 Dolly_EV
 
28.12.12
14:39
(0) СТ-Чикаго ускоряешь?! угу, ей это сильно не помешает

|SELECT
|    $Спр.Code as Код
|    ,$Спр.ВнутреннееПредставление as ВнутреннееПредставление
|    ,$Спр.КодВнешний as КодВнешний
|    ,$Спр.Наименование as Наименование
|    ,$Спр.ДатаКПК as [ДатаКПК $Дата]
|    ,$Спр.ДатаКонтроль as [ДатаКонтроль $Дата]
|    ,CAST($Спр.Объект as VARCHAR(Сколько там у тебя может быть максимум?)) as Объект
|FROM
|    $Справочник.СТСостоянияОбъектов as Спр
|where
|    $Спр.КодВнешний=:ВыбКод";
43 zladenuw
 
28.12.12
14:47
(42) да почти ее.
не там дополнительный реквизит. который может хранить Таблицу значений
44 zladenuw
 
28.12.12
14:50
(42) ошибка SQL: Column 'SP5606' is not found.

       |SELECT
           |Спр.id as [Объект_СО $Справочник.СТСостоянияОбъектов],
           |CAST($Спр.ТбДок as VARCHAR(400)) as ТбДок,
           //|      ,Tab0.Block  as Блок1
           //|,Tab1.Block  as Блок2
           //|,Tab2.Block  as Блок3
           //|,Tab3.Block  as Блок4
           //|,Tab4.Block  as Блок5,
           //|,Tab5.Block  as Блок6,
           |$Спр.ВнутреннееПредставление as ВнутреннееПредставление,
           |Спр.Descr  as Наименование,
           |$Спр.КодВнешний as КодВнешний,
           |$Спр.ДатаКПК as ДатаКПК,
           |$Спр.ДатаКонтроль as ДатаКонтроль
           |FROM $Справочник.СТСостоянияОбъектов as Спр
           //| LEFT JOIN  1SBLOB as Tab0 ON  Tab0.fieldid+Tab0.objid+STR(Tab0.blockno,4)=:ИДТбДок+Спр.id+'   0'
           //| LEFT JOIN  1SBLOB as Tab1 ON  Tab1.fieldid+Tab1.objid+STR(Tab1.blockno,4)=:ИДТбДок+Спр.id+'   1'
           //| LEFT JOIN  1SBLOB as Tab2 ON  Tab1.fieldid+Tab2.objid+STR(Tab2.blockno,4)=:ИДТбДок+Спр.id+'   2'
           //| LEFT JOIN  1SBLOB as Tab3 ON  Tab1.fieldid+Tab3.objid+STR(Tab3.blockno,4)=:ИДТбДок+Спр.id+'   3'
           //| LEFT JOIN  1SBLOB as Tab4 ON  Tab1.fieldid+Tab4.objid+STR(Tab4.blockno,4)=:ИДТбДок+Спр.id+'   4'
           //| LEFT JOIN  1SBLOB as Tab5 ON  Tab1.fieldid+Tab5.objid+STR(Tab5.blockno,4)=:ИДТбДок+Спр.id+'   5'
           |where $Спр.КодВнешний=:ВыбКод";
45 Mikeware
 
28.12.12
14:56
А, так у тебя дбф...
46 Mikeware
 
28.12.12
14:57
ну, тогда счастливо потрахаться...
47 zladenuw
 
28.12.12
14:58
(46) та да. я рад.