Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как добавить в запрос условие выбора по счёту (число прочтений - 12909 )
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Как добавить в запрос условие выбора по счёту
07. Июня 2006 :: 14:20
Печать  
Запутался я с этими запросами до такой степени, что не получается уже самое элементарное :) Подскажите плиз как в запросе добавить условие отбора по счёту.
Вот пример моего запроса
Запрос.УстановитьТекстовыйПараметр("Счет",Счет);
SELECT
 CASE
 WHEN Жур.ISMARK = 1 THEN 7
 WHEN Жур.CLOSED & 1 = 1 THEN 2
 ELSE 1
 END Sost,
Жур.DOCNO as Номер,
$Док2.Счет as [Счет, $Счет]
FROM $Документ.АктСписания as Док2, _1SJOURN as Жур (nolock)
WHERE
Док2.IDDOC=Жур.IDDOC
AND
$Док2.Счет=:Счет
Выполняю запрос и вываливается ошибка
Meta name parser error: Не указан параметр ":Фирма93"
Откуда берётся ":Фирма93" не знаю, так как кроме счёта я ничего не передаю.
Кстати счёт это - бухгалтерский объект.
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Как добавить в запрос условие выбора по счёту
Ответ #1 - 07. Июня 2006 :: 14:43
Печать  
Ты, сам-то понял, чего написал?
Что вот это такое? $Док2.Счет as [Счет, $Счет]
И при чем тут ":Фирма93"  тоже загадка ....
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #2 - 08. Июня 2006 :: 02:33
Печать  
и вот тут тоже:
FROM $Документ.АктСписания as Док2, _1SJOURN as Жур (nolock)
перечислять таблицы в секции FROM можно только, если они с одинаковым набором колонок в секции Select, к тому же получится объединение, а тебе надо соединение:
Код
Выбрать все
FROM $Документ.АктСписания as Док2 (nolock)
inner join _1SJOURN as Жур (nolock) on (Док2.IDDOC=Жур.IDDOC) 

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #3 - 08. Июня 2006 :: 05:23
Печать  
to DrACe

select *
from t1
join t2 on t2.f = t1.f


и

select *
from t1, t2
where t1.f = t2.f


на самом деле одно и тоже
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #4 - 08. Июня 2006 :: 05:25
Печать  
но, например мне, привычнее и понятнее писать так как говорит DrACe
  

1&&2&&3
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #5 - 08. Июня 2006 :: 05:37
Печать  
trad писал(а) 08. Июня 2006 :: 05:23:
to DrACe

select *
from t1
join t2 on t2.f = t1.f


и

select *
from t1, t2
where t1.f = t2.f


на самом деле одно и тоже


Спасибо, буду иметь ввиду!
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #6 - 08. Июня 2006 :: 06:25
Печать  
Ребята это всё классно, что вы обсуждаете правильность синтактического построения запроса, но у меня проблема то другая. С запросом всё впорядке он выбирает всё, если убрать условие по счёту. Но как мне сделать так, чтоб он выбирал непосредственно с этим условием?
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #7 - 08. Июня 2006 :: 06:26
Печать  
а счет, это реквизит чего и какой?

ответ: реквизит документа АктСписания - не принимается, это и так и ежу понятно...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #8 - 08. Июня 2006 :: 06:37
Печать  
[quote author=Tahomba link=1149690027/0#0 date=1149690025]Выполняю запрос и вываливается ошибка
Meta name parser error: Не указан параметр ":Фирма93"
[/quote]
слоложно ответить что-либо вменямое так как приведенная ошибка не соответствует приведенному тексту запроса.
Ибо такая ошибка может возникнуть только при одновременном выполнении двух условий:
-в тексте запроса есть текстовый параметр ":Фирма93"
-параметр не установлен методом УстановитьТекстовыйПараметр

глядя на твой пост вижу: второе выполняется, первое нет
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #9 - 08. Июня 2006 :: 06:41
Печать  
дак на какой вопрос отвечать:
почему вываливается ошибка?
или как сделать чтобы условие работало?
  

1&&2&&3
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #10 - 08. Июня 2006 :: 07:30
Печать  
Как сделать так, чтоб условие работало
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #11 - 08. Июня 2006 :: 07:32
Печать  
Цитата:
а счет, это реквизит чего и какой?

ответ: реквизит документа АктСписания - не принимается, это и так и ежу понятно...

Счет это реквизит АктСписания с типом <<Счёт>>,
:Счет  - Переменная с типом <<Счёт>>
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #12 - 08. Июня 2006 :: 07:37
Печать  
trad писал(а) 08. Июня 2006 :: 06:37:
Tahomba писал(а) 07. Июня 2006 :: 14:20:
Выполняю запрос и вываливается ошибка
Meta name parser error: Не указан параметр ":Фирма93"

слоложно ответить что-либо вменямое так как приведенная ошибка не соответствует приведенному тексту запроса.
Ибо такая ошибка может возникнуть только при одновременном выполнении двух условий:
-в тексте запроса есть текстовый параметр ":Фирма93"
-параметр не установлен методом УстановитьТекстовыйПараметр

глядя на твой пост вижу: второе выполняется, первое нет

У меня в запросе нигде не используется :Фирма93.
А ошибка всегда меняется в зависимости от выбранного счёта например
счёт 63 ошибка:
Meta name parser error: Не указан параметр ":Фирма63"
И так далее. . ..
Я просто не пойму что нужно ещё указать в запросе чтоб небыло ошибки и запрос выбирался с этим условием
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #13 - 08. Июня 2006 :: 07:42
Печать  
$Док2.Счет as [Счет, $Счет]

вот тут-то хоть исправил?
запятая тут лишняя - тебе про это U_zer еще в первом посте написал
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #14 - 08. Июня 2006 :: 07:45
Печать  
DrACe писал(а) 08. Июня 2006 :: 07:42:
$Док2.Счет as [Счет, $Счет]

вот тут-то хоть исправил?
запятая тут лишняя - тебе про это U_zer еще в первом посте написал

Согласен, запятая лишняя, но она не приводит к ошибке, так как в моём случае в результате просто будет колонка называться 'Счет,'
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #15 - 08. Июня 2006 :: 07:49
Печать  
включи отладку и скинь сюда ее результаты
Запрос.Отладка()
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #16 - 08. Июня 2006 :: 07:52
Печать  
кстати, а случаем твой экземпляра класса Запрос не является глобальным?
Т.е. а вдруг перед выполнением этого запроса выполнялся еще како-то?

короче приведи кусок модуля с запросом целиком
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #17 - 08. Июня 2006 :: 08:00
Печать  
DrACe писал(а) 08. Июня 2006 :: 07:49:
включи отладку и скинь сюда ее результаты
Запрос.Отладка()

Отладка не выполняется если запрос:
SELECT
  CASE
  WHEN Жур.ISMARK = 1 THEN 7
  WHEN Жур.CLOSED & 1 = 1 THEN 2
  ELSE 1
  END Sost,
Жур.DOCNO as Номер,
$Док2.Счет as [Счет, $Счет]
FROM $Документ.АктСписания as Док2, _1SJOURN as Жур (nolock)
WHERE
Док2.IDDOC=Жур.IDDOC
AND
$Док2.Счет=:Счет
Так как ругается : Meta name parser error: Не указан параметр ":Фирма93"

А если

SELECT
  CASE
  WHEN Жур.ISMARK = 1 THEN 7
  WHEN Жур.CLOSED & 1 = 1 THEN 2
  ELSE 1
  END Sost,
Жур.DOCNO as Номер,
$Док2.Счет as [Счет, $Счет]
FROM $Документ.АктСписания as Док2, _1SJOURN as Жур (nolock)
WHERE
Док2.IDDOC=Жур.IDDOC

Отладка :

SELECT
CASE
WHEN Жур.ISMARK = 1 THEN 7
WHEN Жур.CLOSED & 1 = 1 THEN 2
ELSE 1
END Sost,
Жур.DOCNO as Номер,
Док2.sp14191 as [Счет, $Счет]
FROM dh14188 as Док2, _1SJOURN as Жур (nolock)
WHERE
Док2.IDDOC=Жур.IDDOC
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #18 - 08. Июня 2006 :: 08:02
Печать  
DrACe писал(а) 08. Июня 2006 :: 07:52:
кстати, а случаем твой экземпляра класса Запрос не является глобальным?
Т.е. а вдруг перед выполнением этого запроса выполнялся еще како-то?

короче приведи кусок модуля с запросом целиком

Процедура New()
     База=СоздатьОбъект("ODBCDatabase");
     Запрос=СоздатьОбъект("ODBCRecordset");
     Запрос.УстановитьТекстовыйПараметр("Счет",Счет);
Текст="
   |SELECT
   |CASE
   |WHEN Жур.ISMARK = 1 THEN 7
   |WHEN Жур.CLOSED & 1 = 1 THEN 2
   |ELSE 1
   |END Sost,
   |Жур.DOCNO as Номер,
   |$Док2.Счет as [Счет, $Счет]
   |FROM $Документ.АктСписания as Док2, _1SJOURN as Жур (nolock)
   |WHERE
   |Док2.IDDOC=Жур.IDDOC
   |AND  
   |$Док2.Счет=:Счет ";
   Запрос.Отладка(1);
  Запрос.ВыполнитьИнструкцию(Текст,тз_накл,1);
КонецПроцедуры
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #19 - 08. Июня 2006 :: 08:19
Печать  
возможно
:Счет конфликтует с [Счет, $Счет]

поменяй идентификатор переменной :Счет
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #20 - 08. Июня 2006 :: 08:22
Печать  
DrACe писал(а) 08. Июня 2006 :: 08:19:
возможно
:Счет конфликтует с [Счет, $Счет]

поменяй идентификатор переменной :Счет

Менял, Счёт1, _Счёт. Всё равно пишет ту же ошибку.
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #21 - 08. Июня 2006 :: 08:22
Печать  
DrACe писал(а) 08. Июня 2006 :: 08:19:
возможно
:Счет конфликтует с [Счет, $Счет]

поменяй идентификатор переменной :Счет

Менял, Счёт1, _Счёт. Всё равно пишет ту же ошибку.
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #22 - 08. Июня 2006 :: 08:26
Печать  
попробуй запрос только к этому документу - убери соединение с журналом, убери все, кроме этого фильтра, перезагрузись и т.д. и т.п. короче - надо попрыгать с бубном, потому как не знаю, что у тебя там случилось
  
Наверх
 
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как добавить в запрос условие выбора по счёту
Ответ #23 - 08. Июня 2006 :: 08:53
Печать  
А вот так попробуй:
Код
Выбрать все
Процедура New()
     МойЗапрос=СоздатьОбъект("ODBCRecordset");
     МойЗапрос.УстБД1С();
     МойЗапрос.УстановитьТекстовыйПараметр("Счет",Счет);
ТекстМоегоЗапроса="
    |SELECT
    |CASE
    |WHEN Жур.ISMARK = 1 THEN 7
    |WHEN Жур.CLOSED & 1 = 1 THEN 2
    |ELSE 1
    |END Sost,
    |Жур.DOCNO as Номер,
    |$Док2.Счет as [Счет, $Счет]
    |FROM $Документ.АктСписания as Док2, _1SJOURN as Жур (nolock)
    |WHERE
    |Док2.IDDOC=Жур.IDDOC
    |AND
    |$Док2.Счет=:Счет ";
    МойЗапрос.Отладка(1);
   МойЗапрос.ВыполнитьИнструкцию(ТекстМоегоЗапроса,тз_накл,1);
КонецПроцедуры
 

  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как добавить в запрос условие выбора по счёту
Ответ #24 - 08. Июня 2006 :: 09:04
Печать  
Tahomba писал(а) 08. Июня 2006 :: 07:37:
У меня в запросе нигде не используется :Фирма93.
А ошибка всегда меняется в зависимости от выбранного счёта например
счёт 63 ошибка:
Meta name parser error: Не указан параметр ":Фирма63"
И так далее. . ..
Я просто не пойму что нужно ещё указать в запросе чтоб небыло ошибки и запрос выбирался с этим условием


Меня это наводит на мысль, что ошибка как-то связана то ли с планом счетов (субконто Фирма?), толи с разделителем учета...
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Как добавить в запрос условие выбора по счёту
Ответ #25 - 08. Июня 2006 :: 09:36
Печать  
А вообще, что такое [ $Счет]? В доке, кстати, этого нет. Есть $Документ, $ВидРасчета, а вот $Счет, такого нет. Или забыли? Может оно вообще не так делается? По крайней мере, в AccQuery ведется работа с кодом счета, а не с самим объектом счет.
  
Наверх
 
IP записан
 
Tahomba
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 07. Июня 2006
Re: Как добавить в запрос условие выбора по счёту
Ответ #26 - 08. Июня 2006 :: 09:44
Печать  
DrACe писал(а) 08. Июня 2006 :: 08:19:
возможно
:Счет конфликтует с [Счет, $Счет]

поменяй идентификатор переменной :Счет

Шаманство закончилось.
Блин пересоздал конфиг и всё заработало
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать