Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос за период собирает все документы
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
vadim007
Нужно с помощью запроса выбрать все приходные документа за заданный период. Текст запроса:
    ТекстЗапроса="
        |ПЕРИОД С Дата1 По Дата2;
        |Фирма=Регистр.ПартииТоваров.Фирма;
        |Товар=Регистр.ПартииТоваров.Товар;
        |Статус=Регистр.ПартииТоваров.Статус;
        |Поставщик=Регистр.ПартииТоваров.Поставщик;
        |ПрихДокумент=Регистр.ПартииТоваров.ПрихДокумент;
        |ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара;
        |Стоимость=Регистр.ПартииТоваров.Стоимость;
        |ПродСтоимость=Регистр.ПартииТоваров.ПродСтоимость;
        |НДС=Регистр.ПартииТоваров.НДС;
        |Оборот=Регистр.ПартииТоваров.Оборот;
        |НДСрасхода=Регистр.ПартииТоваров.НДСрасхода;
        |Прибыль=Регистр.ПартииТоваров.Прибыль;
        |Группировка ПрихДокумент;
        |Функция НачОстатокТовара=НачОст(ОстатокТовара);
        |Функция КонОстатокТовара=КонОст(ОстатокТовара);
        |Функция ПрихОстатокТовара=Приход(ОстатокТовара);
        |Функция РасхОстатокТовара=Расход(ОстатокТовара);
        |Функция НачСтоимость=НачОст(Стоимость);
        |Функция КонСтоимость=КонОст(Стоимость);
        |Функция ПрихСтоимость=Приход(Стоимость);
        |Функция РасхСтоимость=Расход(Стоимость);
        |Функция НачПродСтоимость=НачОст(ПродСтоимость);
        |Функция КонПродСтоимость=КонОст(ПродСтоимость);
        |Функция ПрихПродСтоимость=Приход(ПродСтоимость);
        |Функция РасхПродСтоимость=Расход(ПродСтоимость);
        |Функция НачНДС=НачОст(НДС);
        |Функция КонНДС=КонОст(НДС);
        |Функция ПрихНДС=Приход(НДС);
        |Функция РасхНДС=Расход(НДС);
        |Функция ОборотТовара=Сумма(Оборот);
        |Функция НДСрасходаТовара=Сумма(НДСрасхода);
        |Функция ПрибыльТовара=Сумма(Прибыль);
        |Условие (Фирма=выбФирма);
        |Условие (Статус=Купленный);
        |";
        
    
    Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
        Предупреждение("Запрос по документам не выполнился!!!");
        Возврат;
    КонецЕсли;
    
    ПрихДокументы = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ПрихДокументы, 0, 0);
    Если фОтладка = 1 Тогда
        ВывестиТаблицу(ПрихДокументы);
    КонецЕсли;

В диалоге задаю дату, например 17.06.2011. Но в результате выводятся ВСЕ документы, которые попадают в условие запроса. Почему?
Может добавить условие на дату ПрихДокумент?
igmig65
Возможно связано с точкой актувльности, попробуйте вставить условие типа:
Если Дата2 >= ПолучитьДатуТА() Тогда

   ТекстЗапроса = ТекстЗапроса + "Период с Дата1;";

Иначе

   ТекстЗапроса = ТекстЗапроса + "Период с Дата1 по Дата2;";

КонецЕсли;
vadim007
Удалось получить близкий к желаемому результат следующим запросом:
    ТекстЗапроса="
        |ПЕРИОД С Дата1 По Дата2;
        |Фирма=Регистр.ПартииТоваров.Фирма;
        |Статус=Регистр.ПартииТоваров.Статус;
        |ПрихДокумент=Регистр.ПартииТоваров.ПрихДокумент;
        |Стоимость=Регистр.ПартииТоваров.Стоимость;
        |ПродСтоимость=Регистр.ПартииТоваров.ПродСтоимость;
        |НДС=Регистр.ПартииТоваров.НДС;
        |НДСрасхода=Регистр.ПартииТоваров.НДСрасхода;
        |Группировка Документ;
        |Функция НачСтоимость=НачОст(Стоимость);
        |Функция КонСтоимость=КонОст(Стоимость);
        |Функция ПрихСтоимость=Приход(Стоимость);
        |Функция РасхСтоимость=Расход(Стоимость);
        |Функция НачПродСтоимость=НачОст(ПродСтоимость);
        |Функция КонПродСтоимость=КонОст(ПродСтоимость);
        |Функция ПрихПродСтоимость=Приход(ПродСтоимость);
        |Функция РасхПродСтоимость=Расход(ПродСтоимость);
        |Функция НачНДС=НачОст(НДС);
        |Функция КонНДС=КонОст(НДС);
        |Функция ПрихНДС=Приход(НДС);
        |Функция РасхНДС=Расход(НДС);
        |Функция НДСрасходаТовара=Сумма(НДСрасхода);
        |Условие (Фирма=выбФирма);
        |Условие (Статус=Купленный);
        |Условие (ПрихДокумент.Вид()=""ПриходнаяНакладная"");
        |";

Ключевые моменты:
1. Группировка по Документ, а не по ПрихДокумент
2. Условие отбора только документов вида ПриходнаяНакладная
Почему близкий к желаемому: функции НачСтоимость, КонСтоимость выдают 0. Мне нужна была КонСтоимость, т.к. могут быть возвраты.
Буду пока довольствоваться ПрихСтоимость.
kalyamov
Цитата(vadim007 @ 04.08.11, 10:22) необходимо зарегистрироваться для просмотра ссылки
Почему близкий к желаемому: функции НачСтоимость, КонСтоимость выдают 0. Мне нужна была КонСтоимость, т.к. могут быть возвраты.
Буду пока довольствоваться ПрихСтоимость.


Если я не ошибаюсь, то функции НачОст иКонОст работают только при группировке по измерению, а на момент документа конечно будет ноль.
vadim007
Внимательно прочел про работу функций в запросе применительно к регистрам - не нашел подобного утверждения.
kalyamov
Цитата(vadim007 @ 05.08.11, 9:37) необходимо зарегистрироваться для просмотра ссылки
Внимательно прочел про работу функций в запросе применительно к регистрам - не нашел подобного утверждения.


А практика не помогает уже ? Помогут еще и форумы.

Цитата(vadim007 @ 05.08.11, 9:37) необходимо зарегистрироваться для просмотра ссылки
Внимательно прочел про работу функций в запросе применительно к регистрам - не нашел подобного утверждения.


Можно получить остаток на любой момент с помощью фкнкции Приход и Расход.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.