![]() |
![]() |
|
Не могу найти ошибку в запросе | ☑ | ||
---|---|---|---|---|
0
Aleksey
08.11.04
✎
20:11
|
Есть след процедура
Процедура Сформ(ТекстЗапроса, ВЗН, ВКС, ВРаб, ВКодК=0, ВКодР=0) ТекстЗапроса = " |Без итогов; |Владелец = Справочник.ТаблицаМатериалов.Владелец; |КС = справочник.ТаблицаМатериалов.кс; |Раб = Справочник.ТаблицаМатериалов.Раб; |Матер = справочник.ТаблицаМатериалов.Матер; |ЕдИзм = справочник.ТаблицаМатериалов.ЕдИзм; |Количество = Справочник.ТаблицаМатериалов.Количество; |Стоимость = Справочник.ТаблицаМатериалов.Стоимость; |КодК = Справочник.ТаблицаМатериалов.КодК; |КодР = Справочник.ТаблицаМатериалов.КодР; |ТекЭл = Справочник.ТаблицаМатериалов.ТекущийЭлемент; |Группировка ТекЭл Без групп; |Условие(КС = ВКС); |Условие(Раб=ВРаб); |Условие(Владелец = ЗН);"; Если (ВКодР<>0) и (ВКодК<>0) Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(КодК=ВКодК); |Условие(КодР=ВКодР);"; КонецЕсли; Конецпроцедуры При выполнении запроса вылезает ошибка ВКОДК<<?>> Переменная не определена (ВКОДК) Если Запрос.Выполнить(ТекстЗапроса) <> 1 Тогда {Справочник.ЗН.Форма.Модуль(472)}: Условие(КодК=ВКодК <<?>> ); Запрос[17] : Ошибка в выражении 'ВКодК' ВКОДР<<?>> Переменная не определена (ВКОДР) Если Запрос.Выполнить(ТекстЗапроса) <> 1 Тогда {Справочник.ЗН.Форма.Модуль(472)}: Условие(КодР=ВКодР <<?>> ); Запрос[18] : Ошибка в выражении 'ВКодР' Уже полчаса ищу в чем проблема но понять не могу никак :(((( |
|||
1
NiGMa
08.11.04
✎
20:20
|
То есть КС и ВКС работает, а КодК с ВКодК и КодР с ВКодР - не хочет...
А тип-то у них какой? У КС, КодК и КодР? |
|||
2
Aleksey
08.11.04
✎
20:21
|
Причем если я напишу вместо
Если (ВКодР<>0) и (ВКодК<>0) Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(КодК=ВКодК); |Условие(КодР=ВКодР);"; КонецЕсли; след Если (ВКодР<>0) и (ВКодК<>0) Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(КодК=7); |Условие(КодР=4);"; КонецЕсли; то ошибки нет и все ищется |
|||
3
Aleksey
08.11.04
✎
20:22
|
КодК и КодР -- Число
|
|||
4
Aleksey
08.11.04
✎
20:24
|
Смотрю в отладчике
ВкодК = 7 ВКодР = 4 ТипЗначенияСтр(ВКодР) = "Число" ТипЗначенияСтр(ВКодК) = "Число" |
|||
5
Aleksey
08.11.04
✎
20:25
|
То есть КС и ВКС работает, а КодК с ВКодК и КодР с ВКодР - не хочет...
да :( А тип-то у них какой? У КС, КодК и КодР? КС -- Справочник |
|||
6
NiGMa
08.11.04
✎
20:32
|
Помнится, была в запросе какая-то .опа с числовыми переменными в условиях...
Ну что ж - делай так: Если ВКодК = 1 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(КодК=1);"; ИначеЕсли ВКодК = 2 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(КодК=2);"; ИначеЕсли ВКодК = 3 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие(КодК=3);"; .... КонецЕсли; ----------------- зато точно сработает... |
|||
7
NiGMa
08.11.04
✎
20:32
|
Что-то там было с проебразованием строки в число - или наоборот... какая-то фича ;(
|
|||
8
aleksey
08.11.04
✎
20:33
|
У меня ВКодК принимает неогранич число значений
|
|||
9
Aleksey
08.11.04
✎
20:33
|
NiGMa А не вспомнишь подробнее что там было?
|
|||
10
NiGMa
08.11.04
✎
20:41
|
Да вся беда в том, что текст запроса обрабатывается совсем не так, как текст программы.
Попробуй, что ли, написать ЛКодР = Число(ВКодР); и в запросе |Условие(КодР=ЛКодР); |
|||
11
Aleksey
08.11.04
✎
22:17
|
Завтра с утра пораньше попробую.
|
|||
12
NiGMa
08.11.04
✎
22:19
|
И то. У нас вообще глубокая ночь! (2:17)
|
|||
13
Aleksey
08.11.04
✎
22:21
|
Хотя это не поможет .Так как у меня уже передаются в процедуру аргумент в виде
ВКодР = Число(ЗапросКР.ТекЭл.Родитель.Код) Где ЗапросКР это внешний запрос, для каждого элемента которого должен рассчитаываться запрос, который не работает. |
|||
14
Aleksey
08.11.04
✎
22:23
|
>И то. У нас вообще глубокая ночь! (2:17)
Это где сейчас глубокая ночь ? :)) |
|||
15
Aleksey
08.11.04
✎
22:28
|
Кстати насчет
>Что-то там было с проебразованием строки в число - или наоборот... какая-то фича ;( вспоминаю было такое, но в том случае помогло явное конвертация к числу. Но там не было ошибок при исполнении, там просто ничего в запрос не попадало. PS Что-то мысли начинают приходить в голову ближе к ночи :) |
|||
16
NiGMa
08.11.04
✎
22:38
|
Это да. Я вот вообще сова. Сибирская ;) Красноярские мы, да...
А попробуй - по приколу - в строку преобразовать? Чем черт не шутит... особенно по ночам ;-Q |
|||
17
GrayT
08.11.04
✎
22:43
|
(16)Эх-эх. Привет Енисею :)
|
|||
18
NiGMa
08.11.04
✎
22:45
|
(17) Зачерпнуть, отсканировать, прислать? ;)
|
|||
19
NiGMa
08.11.04
✎
22:52
|
(17) Уже! Смотри:
http://webcam.kgs.ru/ |
|||
20
GrayT
08.11.04
✎
22:54
|
(18)Вроде того :)
(0)А может в запросе просто по ангельски несколько букв написал? Попробуй вставкой из формальных парамеров дернуть. Вед синтакс коньроль такую ошибку не кажет |
|||
21
GrayT
08.11.04
✎
22:56
|
(19)Класс!!! :)
я 17 лет в Норильске прожил |
|||
22
NiGMa
08.11.04
✎
22:59
|
Вот где не бывал... самая северная точка - Туруханск.
(20) да там похитрее закручено... что-то было такое - но не вспомню никак. Я бы все же для начала попробовал (10). |
|||
23
Aleksey
08.11.04
✎
23:01
|
>А может в запросе просто по ангельски несколько букв написал? Попробуй вставкой из формальных парамеров дернуть. Вед синтакс коньроль такую ошибку не кажет
Это было одно из первых, что мне пришло в голову. Так что я все эти ВКолК и ВКолР расклонировал с помощью Ctrl+c Ctrl + V |
|||
24
GrayT
08.11.04
✎
23:02
|
Не думаю, ладно бы условие не срабатывало, а то ведь "переменная не определена" да еще большими буквами кажет. Неспроста это. По барабану еще число это или нет.
|
|||
25
Aleksey
08.11.04
✎
23:04
|
Сам чую что не с проста. Но я даже переименовал эти ВКолК и ВКолР --- хоть бы что
|
|||
26
NiGMa
08.11.04
✎
23:06
|
(25) я ж говорю - попробуй их локально объявить и переприсвоить.
|
|||
27
Aleksey
08.11.04
✎
23:09
|
Только завтра с утра. Нет у меня дома нужной базы. С утра на свежую голову на работе надеюсь быстро с этим разберусь
|
|||
28
bsg
08.11.04
✎
23:11
|
Попробуй объявить в процедуре пару переменных и приравняв их к этим ВКолК и ВКолР сделать запрос с ними.
|
|||
29
NiGMa
08.11.04
✎
23:12
|
(27) погоди! у тебя ж в этой процедуре только формируется текст запроса.
А Запрос.Выполнить() - где находится? Там видны эти ВКодР? |
|||
30
Aleksey
08.11.04
✎
23:14
|
>27) погоди! у тебя ж в этой процедуре только формируется текст запроса.
А Запрос.Выполнить() - где находится? Там видны эти ВКодР? А вот это идея!! Что-то мне это даже в голову не пришло. Первым делом посмотрю. |
|||
31
GrayT
08.11.04
✎
23:15
|
29- Кажись попал!
|
|||
32
Aleksey
08.11.04
✎
23:16
|
>29- Кажись попал!
Надеюсь, что да. Завтра напишу. :) |
|||
33
NiGMa
08.11.04
✎
23:18
|
Пошел спать. Завтра жду отчет ;)
|
|||
34
Aleksey
08.11.04
✎
23:21
|
Отчет будет утром. (Хотя для кого-то это будет день :) )
|
|||
35
Aleksey
09.11.04
✎
09:58
|
>Пошел спать. Завтра жду отчет ;)
Ты оказался абсолютно прав. При объявл процед использ аргументы ВКодК и ВКодР, а при вызове КодК и КодР. Спасибо за помощь :) |
|||
36
NiGMa
09.11.04
✎
10:00
|
Лучше три раза наступить на взрослые грабли, чем один раз на детские... (с) не помню чей.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |