Имя: Пароль:
1C
1С v8
Помогите с запросом
0 Lis2007
 
06.10.11
17:39
Привет всем!
В слегка измененной УТ есть некий регистр "ТоварыОжидающиеРезервированияНаСкладах" в котором собирается информация о товарах в разрезе контрагентов, которые потом нужно будет зарезервировать документом "Заказ покупателя" когда товар на складе появится. Все происходит всегда на одном и том же складе.
Есть запрос, на основании которого затем формируются документы "Заказ покупателя":
Код

ВЫБРАТЬ
   ТоварыОжидающиеРезервирования.ДокументРезерва.Контрагент КАК Контрагент,
   ТоварыОжидающиеРезервирования.Номенклатура КАК Номенклатура,
   ТоварыОжидающиеРезервирования.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ТоварыОжидающиеРезервирования.СерияНоменклатуры КАК СерияНоменклатуры,
   ТоварыОжидающиеРезервирования.ДокументРезерва КАК ДокументРезерва,
   МАКСИМУМ(ТоварыОжидающиеРезервирования.КоличествоОстаток) КАК ОстатокКРезервированию,
   МАКСИМУМ(ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)) КАК ОстатокНаСкладеОбщий,
   МАКСИМУМ(ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)) КАК ОстатокВРезерве,
   МАКСИМУМ(ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)) КАК ОстатокНаСкладе
ИЗ
   РегистрНакопления.ТоварыОжидающиеРезервированияНаСкладах.Остатки(
           &;ПоДату,
           Склад = &;CкладРезервирования
               И (ДокументРезерва.Дата МЕЖДУ &;CДаты И &;ПоДату)) КАК ТоварыОжидающиеРезервирования
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&;ПоДату, Склад = &;CкладРезервирования) КАК ТоварыНаСкладахОстатки
       ПО ТоварыОжидающиеРезервирования.Склад = ТоварыНаСкладахОстатки.Склад
           И ТоварыОжидающиеРезервирования.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           И ТоварыОжидающиеРезервирования.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
           И ТоварыОжидающиеРезервирования.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&;ПоДату, Склад = &;CкладРезервирования) КАК ТоварыВРезервеНаСкладахОстатки
       ПО ТоварыОжидающиеРезервирования.Склад = ТоварыВРезервеНаСкладахОстатки.Склад
           И ТоварыОжидающиеРезервирования.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
           И ТоварыОжидающиеРезервирования.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
           И ТоварыОжидающиеРезервирования.СерияНоменклатуры = ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры
ГДЕ
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) > 0

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

УПОРЯДОЧИТЬ ПО
   ТоварыОжидающиеРезервирования.ДокументРезерва.Дата
ИТОГИ
   СУММА(ОстатокКРезервированию),
   МАКСИМУМ(ОстатокНаСкладеОбщий),
   МАКСИМУМ(ОстатокВРезерве),
   МАКСИМУМ(ОстатокНаСкладе)
ПО
   Контрагент,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры,
   ДокументРезерва





Результат запроса:

Контрагент    Номенклатура    ОстатокКРезервированию  ОстатокНаСкладе
Контрагент1   Товар1          8шт                     8шт
Контрагент2   Товар1          8шт                     8шт

Когда в процедуре начинают формироаться "Заказы", в итоге свободный остаток по товару выходит в минус.
Как с помощью запроса распределить свободные складские остатки между контрагентами, помотите плиз.
Независимо от того, куда вы едете — это в гору и против ветра!