Имя: Пароль:
1C
1С v8
Операция не разрешена в предложении "ГДЕ" <?> ИЛИ ВЫБОР
0 randa
 
26.09.12
12:11
В динамическом списке в произвольном запросе есть следующая конструкция:

ВЫБОР
    КОГДА НЕ Остатки.Качество.Наименование = "Новый"
   ТОГДА СУММА(Остатки.КоличествоОстаток)
   ИНАЧЕ 0
КОНЕЦ КАК ОстатокНеНовый,
ВЫБОР
    КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.Собственный)
               И Остатки.Качество.Наименование = "Новый"
   ТОГДА СУММА(Остатки.КоличествоОстаток)
   ИНАЧЕ 0
КОНЕЦ КАК Остатки,
ВЫБОР
    КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.НаОтветХранении)
   ТОГДА СУММА(Остатки.КоличествоОстаток)
   ИНАЧЕ 0
КОНЕЦ КАК НаОтветХранении,

при выбранной основной таблице и утсановленном флаге "Динамическое считывание данных" возникает следующая ошибка

Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(100, 4)}: Операция не разрешена в предложении "ГДЕ"
<<?>>ИЛИ ВЫБОР

если таблица основная не указана запрос отрабатывает нормально
В чем может быть проблема?
1 Ненавижу Неопределен
 
26.09.12
12:12
Остатки.Качество.Наименование = "Новый" - позор
ИЛИ ВЫБОР - я не вижу такого текста
2 1Сергей
 
26.09.12
12:14
(1)+ и ГДЕ не видать
3 Maxus43
 
26.09.12
12:15
у дин списка есть ограничений в запросах, типа ОБЪЕДЕНИТЬ, про выбор не слышал
4 randa
 
26.09.12
12:28
(1) Так больше устроит?
Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)

просто пробовал менять на сравнение Строка = Строка

вот в том то и дело что (2)

если эту конструкцию заменяю на

1 КАК ОстатокНеНовый,
2 КАК Остатки,
3 КАК НаОтветХранении

всё отрабатывает
самое интересное что запрос отрабатывает при получении первой порции списка(но не всегда), и эта ошибка вылетает при прокручивании вниз и получении следующей порции списка
5 randa
 
26.09.12
12:33
вот весь запрос

ВЫБРАТЬ
   СправочникНоменклатура.Ссылка КАК Ссылка,
   СправочникНоменклатура.Родитель,
   СправочникНоменклатура.ЭтоГруппа,
   СправочникНоменклатура.Код КАК Код,
   СправочникНоменклатура.Наименование,
   СправочникНоменклатура.Артикул КАК Артикул,
   ВЫБОР
       КОГДА НЕ Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
           ТОГДА СУММА(Остатки.КоличествоОстаток)
       ИНАЧЕ 0
   КОНЕЦ КАК ОстатокНеНовый,
   ВЫБОР
       КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.Собственный)
               И Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
           ТОГДА СУММА(Остатки.КоличествоОстаток)
       ИНАЧЕ 0
   КОНЕЦ КАК Остатки,
   ВЫБОР
       КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.НаОтветХранении)
           ТОГДА СУММА(Остатки.КоличествоОстаток)
       ИНАЧЕ 0
   КОНЕЦ КАК НаОтветХранении,
   СУММА(Резервы.КоличествоОстаток) КАК Резерв,
   ЕСТЬNULL(Остатки.СтатусСобственности, Резервы.СтатусСобственности) КАК СтатусСобственности,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * КурсыВалютСрезПоследних.Курс КАК Цена,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ЦенаВал,
   Штрихкоды.Штрихкод
ИЗ
   Справочник.Номенклатура КАК СправочникНоменклатура
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
       ПО СправочникНоменклатура.Ссылка = Штрихкоды.Владелец
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ТипЦены = &ТипЦены
                   И Качество = &Качество)}) КАК ЦеныНоменклатурыСрезПоследних
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ТипКурса = &ТипКурса {(ТипКурса = &ТипКурса)}) КАК КурсыВалютСрезПоследних
           ПО ЦеныНоменклатурыСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта
       ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
           И СправочникНоменклатура.ОсновнаяВалютаНоменклатуры = ЦеныНоменклатурыСрезПоследних.Валюта
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезерве.Остатки(, {(Склад = &Склад
                   И Качество = &Качество)}) КАК Резервы
       ПО СправочникНоменклатура.Ссылка = Резервы.Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад = &Склад
                   И Качество = &Качество)}) КАК Остатки
       ПО СправочникНоменклатура.Ссылка = Остатки.Номенклатура

СГРУППИРОВАТЬ ПО
   СправочникНоменклатура.Ссылка,
   СправочникНоменклатура.Родитель,
   СправочникНоменклатура.ЭтоГруппа,
   СправочникНоменклатура.Код,
   СправочникНоменклатура.Наименование,
   СправочникНоменклатура.Артикул,
   Резервы.КоличествоОстаток,
   Остатки.СтатусСобственности,
   Остатки.Качество,
   ЕСТЬNULL(Остатки.СтатусСобственности, Резервы.СтатусСобственности),
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * КурсыВалютСрезПоследних.Курс,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0),
   Штрихкоды.Штрихкод
6 randa
 
26.09.12
13:02
Никто не сталкивался что ли?
7 hhhh
 
26.09.12
13:13
(6) а если так

  СУММА(ВЫБОР
       КОГДА НЕ Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
           ТОГДА Остатки.КоличествоОстаток
       ИНАЧЕ 0
   КОНЕЦ) КАК ОстатокНеНовый,
8 randa
 
26.09.12
13:18
сейчас попробую
9 randa
 
26.09.12
13:30
Работает! Спасибо! Тема закрыта!
Закон Брукера: Даже маленькая практика стоит большой теории.