Имя: Пароль:
1C
1С v8
Запрос из РН ТоварыКПередечеОрганизаций
0 MaxiM072
 
15.08.11
11:07
есть запрос в модуле регистра накопления ТоварыКПередечеОрганизаций, мне не понятно к чему здесь объединение, запросы отличаются только условием Док.СерияНоменклатуры <> &ПустаяСерия
разве нельзя это сделать всё в одном?
просто возникла проблема, что если ведётся учёт по сериям получается такая картина http://xmage.ru/images/wgw.jpg и сначала идёт пустая серия а потом серия которую обрабатываем

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

СГРУППИРОВАТЬ ПО
   Док.Номенклатура,
   Док.ХарактеристикаНоменклатуры,
   Док.Качество,
   Док.Номенклатура.Представление,
   Док.Номенклатура.ЕдиницаХраненияОстатков.Представление

ИМЕЮЩИЕ
   ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток), 0) - ЕСТЬNULL(МАКСИМУМ(КПередаче.КоличествоОстаток), 0) < СУММА(Док.Количество * Док.Коэффициент / Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент)

ДЛЯ ИЗМЕНЕНИЯ
   РегистрНакопления.ТоварыКПередачеОрганизаций.Остатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   Док.Номенклатура.Представление,
   Док.Номенклатура.ЕдиницаХраненияОстатков.Представление,
   Док.СерияНоменклатуры,
   Док.ХарактеристикаНоменклатуры,
   Док.Качество,
   СУММА(Док.Количество),
   ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток), 0),
   ЕСТЬNULL(МАКСИМУМ(КПередаче.КоличествоОстаток), 0)
ИЗ
   (ВЫБРАТЬ
       Док.Номенклатура КАК Номенклатура,
       Док.СерияНоменклатуры КАК СерияНоменклатуры,
       Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
       Док.Качество КАК Качество,
       Док.Коэффициент КАК Коэффициент,
       Док.Количество КАК Количество
   ИЗ
       Документ.РеализацияТоваровУслуг.Товары КАК Док
   ГДЕ
       Док.Ссылка = &ДокументСсылка
       И (НЕ Док.Номенклатура.Комплект)
       И (НЕ Док.Номенклатура.Услуга)) КАК Док
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(
               ,
               (Номенклатура, Склад) В
                       (ВЫБРАТЬ РАЗЛИЧНЫЕ
                           Док.Номенклатура,
                           Док.Склад КАК Склад
                       ИЗ
                           Документ.РеализацияТоваровУслуг.Товары КАК Док
                       ГДЕ
                           Док.Ссылка = &ДокументСсылка
                           И (НЕ Док.Номенклатура.Комплект)
                           И (НЕ Док.Номенклатура.Услуга))
                   И Организация = &Организация) КАК Остатки
       ПО Док.Номенклатура = Остатки.Номенклатура
           И Док.СерияНоменклатуры = Остатки.СерияНоменклатуры
           И Док.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатуры
           И Док.Качество = Остатки.Качество
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеОрганизаций.Остатки(
               ,
               (Номенклатура, Склад) В
                       (ВЫБРАТЬ РАЗЛИЧНЫЕ
                           Док.Номенклатура,
                           Док.Склад КАК Склад
                       ИЗ
                           Документ.РеализацияТоваровУслуг.Товары КАК Док
                       ГДЕ
                           Док.Ссылка = &ДокументСсылка
                           И (НЕ Док.Номенклатура.Комплект)
                           И (НЕ Док.Номенклатура.Услуга))
                   И Организация = &Организация) КАК КПередаче
       ПО Док.Номенклатура = КПередаче.Номенклатура
           И Док.СерияНоменклатуры = КПередаче.СерияНоменклатуры
           И Док.ХарактеристикаНоменклатуры = КПередаче.ХарактеристикаНоменклатуры
           И Док.Качество = КПередаче.Качество
ГДЕ
   Док.СерияНоменклатуры <> &ПустаяСерия

СГРУППИРОВАТЬ ПО
   Док.Номенклатура,
   Док.СерияНоменклатуры,
   Док.ХарактеристикаНоменклатуры,
   Док.Качество,
   Док.Номенклатура.Представление,
   Док.Номенклатура.ЕдиницаХраненияОстатков.Представление

ИМЕЮЩИЕ
   ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток), 0) - ЕСТЬNULL(МАКСИМУМ(КПередаче.КоличествоОстаток), 0) < СУММА(Док.Количество)

ДЛЯ ИЗМЕНЕНИЯ
   РегистрНакопления.ТоварыКПередачеОрганизаций.Остатки
1 MaxiM072
 
15.08.11
11:14
разве такой вид не будет правильным? если ещё добавить проверку на то, что заполнена ли серия, характеристика...

   Запрос.Текст =
   "ВЫБРАТЬ
   |    СУММА(Остатки.КоличествоОстаток) КАК КолОстатокОрг,
   |    СУММА(КПередаче.КоличествоОстаток) КАК КолКПередаче,
   |    ДокОбъект.Номенклатура,
   |    ДокОбъект.СерияНоменклатуры,
   |    ДокОбъект.ХарактеристикаНоменклатуры,
   |    ДокОбъект.Качество,
   |    ДокОбъект.Количество КАК КолДок
   |ИЗ
   |    Документ.РеализацияТоваровУслуг.Товары КАК ДокОбъект
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&ТекДата, Организация = &Организация) КАК Остатки
   |        ПО ДокОбъект.Номенклатура = Остатки.Номенклатура
   |            И ДокОбъект.Качество = Остатки.Качество
   |            И ДокОбъект.СерияНоменклатуры = Остатки.СерияНоменклатуры
   |            И ДокОбъект.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатуры
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеОрганизаций.Остатки(&ТекДата, Организация = &Организация) КАК КПередаче
   |        ПО ДокОбъект.Номенклатура = КПередаче.Номенклатура
   |            И ДокОбъект.СерияНоменклатуры = КПередаче.СерияНоменклатуры
   |            И ДокОбъект.ХарактеристикаНоменклатуры = КПередаче.ХарактеристикаНоменклатуры
   |            И ДокОбъект.Качество = КПередаче.Качество
   |ГДЕ
   |    ДокОбъект.Ссылка = &Ссылка
   |
   |СГРУППИРОВАТЬ ПО
   |    ДокОбъект.ХарактеристикаНоменклатуры,
   |    ДокОбъект.Качество,
   |    ДокОбъект.СерияНоменклатуры,
   |    ДокОбъект.Номенклатура,
   |    ДокОбъект.Количество";
2 Жан Пердежон
 
15.08.11
11:20
>>  запросы отличаются только условием Док.СерияНоменклатуры <> &ПустаяСерия

не только
3 MaxiM072
 
15.08.11
11:22
просто проверяю (1) и запрос срабатывает прекрасно
к чему такие тогда нагромождения в (0)
4 MaxiM072
 
15.08.11
11:37
нужен совет
5 PVV65
 
15.08.11
12:10
(0) Это сделано для того, чтобы пользователь мог увидеть, что если не хватает товара по указанной серии, есть ли товар вообще (без серий).