Имя: Пароль:
1C
1С v8
условие в запросе для дня
0 MarinaSk
 
05.01.13
01:27
Нужны данные:
Приход, Расход, Остаток товара по дням на определенном складе по конкретному поставщику. Причем Остаток в дне по товару должен выводиться только в том случае, когда есть движение товара в этот день.

Имеем простенький запрос, в нем условие:
ГДЕ
   ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &ВыбСклад
   И ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Контрагент = &ВыбКонтрагент
   И (ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход <> 0
   ИЛИ ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход <> 0)

только вот условие КоличествоПриход <> 0 или КоличествоРасход <> 0 срабатывает для всей выборки,
как наложить условие на ПериодДень?

Сам запрос:
       ВЫБРАТЬ
           ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
           ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования КАК Партия,
           ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
           ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход  КАК СтоимостьРасход,
           ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток  КАК СтоимостьКонечныйОстаток,
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
           ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
           ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход КАК СтоимостьПриход
       ИЗ
           РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, ДвиженияИГраницыПериода, ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
       ГДЕ
           ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &ВыбСклад
           И ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Контрагент = &ВыбКонтрагент
           И (ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход <> 0
              ИЛИ ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход <> 0)
       
       СГРУППИРОВАТЬ ПО
           ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Организация,
           ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Контрагент,
           ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
           ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования,
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.Артикул,
           ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
           ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход,
           ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
           ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход,
           ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток
       
       УПОРЯДОЧИТЬ ПО
           Склад,
           ПериодДень,
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.Наименование,
           Партия
       ИТОГИ
           СУММА(КоличествоПриход),
           СУММА(КоличествоРасход),
           СУММА(СтоимостьРасход),
           СУММА(КоличествоКонечныйОстаток),
           СУММА(СтоимостьКонечныйОстаток),
           СУММА(СтоимостьПриход)
       ПО
           Склад,
           ПериодДень,
           Номенклатура
1 MarinaSk
 
05.01.13
01:39
уточнение:

запрос дает результат (по кол-ву привожу):
Дата/Товары    Приход  Расход    Остаток
1.12.12
   Товар               2

3.12.12
   Товар          1       1



Но 1.12.12 нет движения по товару, поэтому нужно так:
Дата/Товары    Приход  Расход    Остаток
3.12.12
   Товар           1       1
2 GROOVY
 
05.01.13
01:41
Сгруппируй по дню и наложи having.
3 Кокос
 
05.01.13
01:41
можно еще вложенный запрос :)
4 MarinaSk
 
05.01.13
01:43
таблички разъехались, вот здесь нагляднее:
http://www.7image.ru/pics/0113/330127749.jpg

счас попробую (2)
5 GROOVY
 
05.01.13
01:54
Я кстати, видимо перемудрил... Можно ведь

КоличествоПриход + КоличествоРасход <> 0
6 MarinaSk
 
05.01.13
01:58
(5) все равно условие на всю выборку запроса срабатывает
7 GROOVY
 
05.01.13
02:08
Я только сейчас весь запрос посмотрел. Зачем Вы группируете по значению ресурсов?
8 Кокос
 
05.01.13
02:10
(7) а ее конструктор заставляет. Тамже СУММА(..) нет.
9 GROOVY
 
05.01.13
02:10
Даже не так... Зачем вообще группировать результат выполнения виртуальной таблицы?
10 Кокос
 
05.01.13
02:11
(0)
заключи все числовые ресурсы в СУММА
СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
11 GROOVY
 
05.01.13
02:13
+10 и группировать нужно только по дню.

И поля с артикулом и представлением номенклатуры я получал бы в соединении. Соединение уже с результатом того что получится после условия.
12 MarinaSk
 
05.01.13
02:23
логику поняла...
с практикой запросов засада....

можно пример на любых данных для получения полей в соединении с результатом после условия
13 Кокос
 
05.01.13
02:32
ну тут если только запрос за тебя написать.
14 MarinaSk
 
05.01.13
02:34
:))) ясно
15 MarinaSk
 
05.01.13
02:54
ВЫБРАТЬ
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
           СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
           СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
           СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход) КАК СтоимостьРасход,
           СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
           СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток) КАК СтоимостьКонечныйОстаток,
           ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень,
           СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход) КАК СтоимостьПриход
       ИЗ
           РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, ДвиженияИГраницыПериода, ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
       ГДЕ
           ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &ВыбСклад
           И ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Контрагент = &ВыбКонтрагент
           И (ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход <> 0
                   ИЛИ ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход <> 0)
       
       СГРУППИРОВАТЬ ПО
           ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
           ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура
       
       УПОРЯДОЧИТЬ ПО
           ПериодДень
       ИТОГИ
           СУММА(КоличествоПриход),
           СУММА(КоличествоРасход),
           СУММА(СтоимостьРасход),
           СУММА(КоличествоКонечныйОстаток),
           СУММА(СтоимостьКонечныйОстаток),
           СУММА(СтоимостьПриход)
       ПО
           ПериодДень


здесь получаю ПериодДень и Номенклатуру,
а теперь снова тащить все нужные мне данные из РегистрНакопления.ПартииТоваровНаСкладах соединяясь по ПериодДень и Номенклатуре. так? я правильно поняла?
Основная теорема систематики: Новые системы плодят новые проблемы.