Вход | Регистрация


1С:Предприятие ::

Метки: 

v7: поскажите почему ошибка ODBCRecordset

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

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

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

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

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

(29) Мне нужно в ТЗ в которую выгружать получить колонки
ВнутреннееПредставление,КодВнешний а не sp5423
   КонецЦикла
 
32 - 28.12.12 - 14:10
(31) Будет работать в разных базах, даже если в одной код - это sp213, а в другой - sp546 :)
   zladenuw
 
33 - 28.12.12 - 14:11
(30)
Meta name parser error: поле таблицы не найдено "$Спр.КодВнешний"
 
 
   КонецЦикла
 
34 - 28.12.12 - 14:12
(33) Значит нет его в этом спр-ке или какой-то новый косяк добавил
   Aprobator
 
35 - 28.12.12 - 14:16
(28) бггг.
   zladenuw
 
36 - 28.12.12 - 14:21
(35) бггг. будет сейчас.
А как мне вытянуть значение с реквизита строки с неогр длинной.
   Mikeware
 
37 - 28.12.12 - 14:25
(36) кастуй к ограниченному.
   zladenuw
 
38 - 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'

 
а как мне получить ИДЮрАдрес ?
   zladenuw
 
39 - 28.12.12 - 14:30
(38) ступил
   zladenuw
 
40 - 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 $Спр.КодВнешний=:ВыбКод";
   zladenuw
 
41 - 28.12.12 - 14:33
(40) а в запросе можно сразу блоки объединить ?
   Dolly_EV
 
42 - 28.12.12 - 14:39
(0) СТ-Чикаго ускоряешь?! угу, ей это сильно не помешает

|SELECT
|    $Спр.Code as Код
|    ,$Спр.ВнутреннееПредставление as ВнутреннееПредставление
|    ,$Спр.КодВнешний as КодВнешний
|    ,$Спр.Наименование as Наименование
|    ,$Спр.ДатаКПК as [ДатаКПК $Дата]
|    ,$Спр.ДатаКонтроль as [ДатаКонтроль $Дата]
|    ,CAST($Спр.Объект as VARCHAR(Сколько там у тебя может быть максимум?)) as Объект
|FROM
|    $Справочник.СТСостоянияОбъектов as Спр
|where
|    $Спр.КодВнешний=:ВыбКод";
   zladenuw
 
43 - 28.12.12 - 14:47
(42) да почти ее.
не там дополнительный реквизит. который может хранить Таблицу значений
   zladenuw
 
44 - 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 $Спр.КодВнешний=:ВыбКод";
   Mikeware
 
45 - 28.12.12 - 14:56
А, так у тебя дбф...
   Mikeware
 
46 - 28.12.12 - 14:57
ну, тогда счастливо потрахаться...
   zladenuw
 
47 - 28.12.12 - 14:58
(46) та да. я рад.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует