Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 02:03

условие в запросе

Автор primus, 29 авг 2011, 08:49

0 Пользователей и 1 гость просматривают эту тему.

primus

в запросе соединяется два подзапроса:
в первом выбираю Фамилию и ДополнительныеНачисления по датам
во втором выбираю Фамилию и ОсновныеНачисления по датам.
В итоге выводится Одна фамилия и сумма Начилений. Только дополнитеьные начисления есть не у всех.

Вставляю условие на выбранные поля ?(ДополнительныеНачисления.Результат Есть NULL, ОсновныеНачисления.Начислено, ОсновныеНачисления.Начислено + ДополнительныеНачиления.Результат), но упорно выскакивает ошибка.
В справочнике рекомендация через Когда ..<условие> Тогда <выражение>, но тоже ругается на синтаксис.

has


ВЫБОР
   КОГДА ДополнительныеНачисления.Результат Есть NULL
      ТОГДА ОсновныеНачисления.Начислено
   ИНАЧЕ ОсновныеНачисления.Начислено + ДополнительныеНачиления.Результат
КОНЕЦ КАК Результат

Dethmontt

ISNULL(ДополнительныеНачисления.Результат,0) + ISNULL(ОсновныеНачисления.Начислено,0)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

primus

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

выскакивает ошика "Поле не входит в группу "ОсновныеНачисления.Начислено"

primus

Если пишу вот так, то выскакивает ошибка синтаксиса Когда.

Когда ДополнительныеНачисления.Результат ЕстьNULL Тогда
      ОсновныеНачисления.Начислено
      Иначе ОсновныеНачисления.Начислено + ДополнительныеНачисления.Результат
   Конец КАК

has

Цитата: primus от 29 авг 2011, 11:31
Если пишу вот так, то выскакивает ошибка синтаксиса Когда.

Когда ДополнительныеНачисления.Результат ЕстьNULL Тогда
      ОсновныеНачисления.Начислено
      Иначе ОсновныеНачисления.Начислено + ДополнительныеНачисления.Результат
   Конец КАК
ВЫБОР КОГДА....
А вобще ознакомся с литературой по написанию запросов

Dethmontt

Во первых!
выскакивает ошика "Поле не входит в группу "ОсновныеНачисления.Начислено" - это ошибка группировки или итогов!!!
Во вторых!
Конструкция условия пишется так!
Выбор когда Условие тогда выражение Иначе выражение Конец
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

И в третьих!!!!!!
Полностью поддерживаю "has" - ознакомься сначала с литературой по написанию запросов 1С или SQL, чтоб в голове что то отложилось!
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

primus

я не отрицаю - знаний маловато, но в справочнике пишут обрывками примеры. Нашел один, где разобрано полностью - понял, в чем была ошибка.

Но все же считает как-то коряво. Написано условие:
Выбор
Когда ДополнительныеНачисления.Результат = Null
                 ИЛИ ДополнительныеНачисления.Результат = 0
         Тогда  Сумма(ОсновныеНачисления.Начислено)
         Иначе ОсновныеНачисления.Начислено + ДополнительныеНачисления.Результат
Конец Как СуммаВсехНачислений

Дополнительные начисления есть не у всех, получаются левым соединением с другим запросом, по идее там должен быть NULL, но в отчете я получаю значения только в тех строках, для которых ДополнительныеНачисления.Результат забито числом.
В каком месте не так?

primus

переписал запрос - работает, наконец-то :zebzdr: Вот чего ему не хватало с самого начала? Всем спасибо за помощь!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск