Помогите составить запрос

Тема в разделе "1C и всё что с ней связано", создана пользователем Ramzay, 30 янв 2009.

Статус темы:
Закрыта.
  1. Ramzay

    Ramzay Гость

    Есть ЖурналРасчетов.Зарплата, в нем есть атрибуты:
    Объект - сотрудник,
    ВидРасч - вид расчете
    Результат - сумма, начислений или удержаний по виду расчета

    Требуется: выбрать сотрудников за период, у которых сумма начислений более 10035


    Таким запросом я выбираю всего начиленно по каждому сотруднику:
    Код (Text):
    с '01.01.2009' по '31.01.2009';
    Сот=ЖурналРасчетов.Зарплата.Объект;
    ВидРасч=ЖурналРасчетов.Зарплата.ВидРасч;
    Рез=ЖурналРасчетов.Зарплата.Результат;

    Условие(ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);

    Функция Ит = Сумма(Рез);  //Когда (Сумма(Рез) > 10035); - то, что закоментарено компилятор не воспринимает
    Группировка Сот;
    //Условие(Ит > 10035); - это компилятор не воспринимает
    Иванов - 1000
    Петров - 5000
    Сидоров - 15000

    Что мне нужно написать в запросе, что бы Иванов и Петров туда не попадали т. к. у них сумма начислений <10035?
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    и не воспримет по идее. это нужно как условие написать типа
    Условие(Сумма(Рез) > 10035);
     
  3. ania

    ania Гость

    В запросе условие накладывается только на переменные запроса или на те, которые видны в процедуре с этим запросом, а вы накладываете на результат вычисления функции. Вероятнее всего, вы сможете отфильтровать только после выполнения запроса в цикле по сотрудникам наложив ограничение на Ит или попробуйте объявить в этой процедуре переменную Ит.
     
  4. Ramzay

    Ramzay Гость

    Попробовал. В результате получил ошибку: Функция не обнаружена (Сумма)


    Не называйте мне этого срашного слова - "цикл".

    После того, как я объявил переменную Ит, ей нужно присвоить какое-либо значение (иначе ругается, что Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов ).

    Ну я и присвоил 0. В результате выполнения условия: Условие(Ит > 10035); я не получил в выборке ни чего.
    Наверное это произошло потому, что условие 0>10035 неверно.

    Неужели такая простая задача не под силу 1С-запросу?
     
  5. ania

    ania Гость

    Не понимаю, почему Ит может остаться 0, если Ит = Сумма(Рез) и попробуйте: Функция Ит = Сумма(Рез) Когда (Ит > 10035);
     
  6. Ramzay

    Ramzay Гость

    Не помогает. Возвращает пустой набор записей.
    Вы не поверите, но если написать в запросе:
    Код (Text):
    ...
    Группировка Сот;
    Функция Ит = Сумма(Рез);
    Группировка Ит;
    Она ругается, что "Переменная 'Ит' не опеределена". Хотя вызов запроса выглядет так:
    Код (Text):
    Ит=0;
    Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
    Сообщить("Не выполнился запрос!");
    Возврат;
    КонецЕсли;
    Может быть я не правильно определил переменную Ит?
     
  7. ania

    ania Гость

    Почему вы не хотите сделать через цикл?:
    Пока Запрос. Группировка("Сот")=1 Цикл
    Если Запрос.Ит>10035 Тогда
    //...
    КонецЕсли;
    КонецЦикла;
    Так точно работает
     
  8. Ramzay

    Ramzay Гость

    Похоже к тому дело и идет. Но а что же язык запросов такой немощьный? Ведь тебуется самая малость...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей