Интересная задачка оказалась))
Собственно, вот решение. Хотелось-бы услышать комментарии по запросу в расходной накладной
Добавлено (18.07.2010, 22:24)
---------------------------------------------
комментариев не густо.....
В общем, сам нашел КОСЯК, невнимательно прочитал задание, оказывается нужно выбирать партию в табличной части ))
С этим возникли определенные проблемы, но зато был рожден запрос, который все эти проблемы решает!!!
Вот он сам:
ВЫБРАТЬ
РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
РасходнаяНакладнаяСписокНоменклатуры.Партия КАК Партия,
СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК СуммаПродажи
ПОМЕСТИТЬ ТабЧ
ИЗ
Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
ГДЕ
РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
РасходнаяНакладнаяСписокНоменклатуры.Партия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабЧ.Номенклатура,
СУММА(ТабЧ.Количество) КАК Количество,
СУММА(ТабЧ.СуммаПродажи) КАК СуммаПродажи
ПОМЕСТИТЬ ТабЧСвернутая
ИЗ
ТабЧ КАК ТабЧ
СГРУППИРОВАТЬ ПО
ТабЧ.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Номенклатура,
ОстаткиНоменклатурыОстатки.Партия,
СУММА(ОстаткиНоменклатурыОстатки.КоличествоОстат ок) КАК КоличествоОстаток,
СУММА(ОстаткиНоменклатурыОстатки.СтоимостьОстаток) КАК СтоимостьОстаток
ПОМЕСТИТЬ РегВыбранный
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки(
&Период,
Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Номенклатура
ИЗ
ТабЧ КАК Т)
И Партия В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Партия
ИЗ
ТабЧ КАК Т)
И (НЕ Партия = ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка))) КАК ОстаткиНоменклатурыОстатки
СГРУППИРОВАТЬ ПО
ОстаткиНоменклатурыОстатки.Номенклатура,
ОстаткиНоменклатурыОстатки.Партия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Номенклатура,
ОстаткиНоменклатурыОстатки.Партия,
СУММА(ОстаткиНоменклатурыОстатки.КоличествоОстат ок) КАК КоличествоОстаток,
СУММА(ОстаткиНоменклатурыОстатки.СтоимостьОстаток) КАК СтоимостьОстаток
ПОМЕСТИТЬ РегОбщий
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки(
&Период,
Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Номенклатура
ИЗ
ТабЧ КАК Т)) КАК ОстаткиНоменклатурыОстатки
СГРУППИРОВАТЬ ПО
ОстаткиНоменклатурыОстатки.Номенклатура,
ОстаткиНоменклатурыОстатки.Партия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабЧ.Партия,
ТабЧ.Номенклатура,
СУММА(РегВыбранный.СтоимостьОстаток - (ВЫРАЗИТЬ(ВЫБОР
КОГДА РегВыбранный.КоличествоОстаток < ТабЧ.Количество
ТОГДА РегВыбранный.КоличествоОстаток
ИНАЧЕ ТабЧ.Количество
КОНЕЦ / РегВыбранный.КоличествоОстаток * РегВыбранный.СтоимостьОстаток КАК ЧИСЛО(15, 2)))) КАК ОстатокПоПартииСумма,
СУММА(ВЫБОР
КОГДА РегВыбранный.КоличествоОстаток - ТабЧ.Количество > 0
ТОГДА РегВыбранный.КоличествоОстаток - ТабЧ.Количество
ИНАЧЕ 0
КОНЕЦ) КАК ОстатокПоПартии,
СУММА(ВЫРАЗИТЬ(ВЫБОР
КОГДА РегВыбранный.КоличествоОстаток < ТабЧ.Количество
ТОГДА РегВыбранный.КоличествоОстаток
ИНАЧЕ ТабЧ.Количество
КОНЕЦ / РегВыбранный.КоличествоОстаток * РегВыбранный.СтоимостьОстаток КАК ЧИСЛО(15, 2))) КАК СписаноСум,
СУММА(ВЫБОР
КОГДА ЕСТЬNULL(РегВыбранный.КоличествоОстаток, 0) = 0
ТОГДА 0
ИНАЧЕ ВЫБОР
КОГДА РегВыбранный.КоличествоОстаток < ТабЧ.Количество
ТОГДА РегВыбранный.КоличествоОстаток
ИНАЧЕ ТабЧ.Количество
КОНЕЦ
КОНЕЦ) КАК СписаноКол
ПОМЕСТИТЬ ОстаткиПоВыбраннымПартиям
ИЗ
ТабЧ КАК ТабЧ
ЛЕВОЕ СОЕДИНЕНИЕ РегВыбранный КАК РегВыбранный
ПО ТабЧ.Номенклатура = РегВыбранный.Номенклатура
И ТабЧ.Партия = РегВыбранный.Партия
ГДЕ
(НЕ ТабЧ.Партия = ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка))
СГРУППИРОВАТЬ ПО
ТабЧ.Партия,
ТабЧ.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК Партия,
ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.Партия.Дата, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК ПартияДата,
ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
ТабЧСвернутая.Количество КАК КСписанию,
ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.СписаноКол, 0) КАК КоличествоОстаток,
ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.СписаноСум, 0) КАК СтоимостьОстаток,
1 КАК Сортировка,
ТабЧСвернутая.СуммаПродажи КАК СуммаПродажи
ИЗ
ОстаткиПоВыбраннымПартиям КАК ОстаткиПоВыбраннымПартиям
ЛЕВОЕ СОЕДИНЕНИЕ ТабЧСвернутая КАК ТабЧСвернутая
ПО ОстаткиПоВыбраннымПартиям.Номенклатура = ТабЧСвернутая.Номенклатура
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЕСТЬNULL(ОстаткиПоОбязНоменклатуре.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)),
ЕСТЬNULL(ОстаткиПоОбязНоменклатуре.Партия.Дата, &ПустаяДата),
КСписаниюПоОбязНоменклатуре.Номенклатура,
ТабЧСвернутая.Количество,
ЕСТЬNULL(ОстаткиПоОбязНоменклатуре.КоличествоОстаток, 0),
ЕСТЬNULL(ОстаткиПоОбязНоменклатуре.СтоимостьОстаток, 0),
2,
ТабЧСвернутая.СуммаПродажи
ИЗ
(ВЫБРАТЬ
ВыбранныеПартии.Номенклатура КАК Номенклатура,
СУММА(ТабЧСвернутая.Количество - ВыбранныеПартии.СписаноКол) КАК ОстатокСписанияПоНоменклатуре
ИЗ
(ВЫБРАТЬ
ОстаткиПоВыбраннымПартиям.Номенклатура КАК Номенклатура,
СУММА(ОстаткиПоВыбраннымПартиям.СписаноКол) КАК СписаноКол
ИЗ
ОстаткиПоВыбраннымПартиям КАК ОстаткиПоВыбраннымПартиям
СГРУППИРОВАТЬ ПО
ОстаткиПоВыбраннымПартиям.Номенклатура) КАК ВыбранныеПартии
ЛЕВОЕ СОЕДИНЕНИЕ ТабЧСвернутая КАК ТабЧСвернутая
ПО ВыбранныеПартии.Номенклатура = ТабЧСвернутая.Номенклатура
ГДЕ
ТабЧСвернутая.Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Номенклатура
ИЗ
ОстаткиПоВыбраннымПартиям КАК Т)
СГРУППИРОВАТЬ ПО
ВыбранныеПартии.Номенклатура) КАК КСписаниюПоОбязНоменклатуре
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
РегОбщий.Партия КАК Партия,
РегОбщий.Номенклатура КАК Номенклатура,
СУММА(РегОбщий.КоличествоОстаток - ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.СписаноКол, 0)) КАК КоличествоОстаток,
СУММА(РегОбщий.СтоимостьОстаток - ЕСТЬNULL(ОстаткиПоВыбраннымПартиям.СписаноСум, 0)) КАК СтоимостьОстаток
ИЗ
РегОбщий КАК РегОбщий
ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоВыбраннымПартиям КАК ОстаткиПоВыбраннымПартиям
ПО РегОбщий.Партия = ОстаткиПоВыбраннымПартиям.Партия
И РегОбщий.Номенклатура = ОстаткиПоВыбраннымПартиям.Номенклатура
СГРУППИРОВАТЬ ПО
РегОбщий.Партия,
РегОбщий.Номенклатура) КАК ОстаткиПоОбязНоменклатуре
ПО КСписаниюПоОбязНоменклатуре.Номенклатура = ОстаткиПоОбязНоменклатуре.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ ТабЧСвернутая КАК ТабЧСвернутая
ПО КСписаниюПоОбязНоменклатуре.Номенклатура = ТабЧСвернутая.Номенклатура
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЕСТЬNULL(РегОбщий.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)),
ЕСТЬNULL(РегОбщий.Партия.Дата, &ПустаяДата),
ТабЧ.Номенклатура,
ТабЧ.Количество,
ЕСТЬNULL(РегОбщий.КоличествоОстаток, 0),
ЕСТЬNULL(РегОбщий.СтоимостьОстаток, 0),
2,
ТабЧ.СуммаПродажи
ИЗ
ТабЧ КАК ТабЧ
ЛЕВОЕ СОЕДИНЕНИЕ РегОбщий КАК РегОбщий
ПО ТабЧ.Номенклатура = РегОбщий.Номенклатура
ГДЕ
(НЕ ТабЧ.Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Номенклатура
ИЗ
ОстаткиПоВыбраннымПартиям КАК Т))
УПОРЯДОЧИТЬ ПО
Номенклатура,
Сортировка,
ПартияДата
ИТОГИ
МИНИМУМ(КСписанию),
СУММА(КоличествоОстаток),
МИНИМУМ(СуммаПродажи)
ПО
Номенкл атура
Проблема в одном, на его создание у меня ушло часа 3, при этом мозг усох процентов на 20.... как теперь сдавать спеца не знаю...... (( шучу
Но, в самом деле, знающие люди подскажите в задачнике много таких геморных заданий??? (еще не было времени обстоятельно познакомится с оным)
Пы.Сы: Кому не влом, проверьте в консольке запросов, жду замечаний! Делал на одном дыхании, поэтому вполне возможно что что-то пропустил, позже сам еще раз просмотрю, возможно подправлю, но пока, все работает как надо)))
Пы.Пы.Сы. Добавил новую ДТшку, качать второй файл
Добавлено (20.07.2010, 17:10)
---------------------------------------------
Спять все что-ли? Где разнос? Где гневные комментарии о том, что все не так и что все не работает???
Хоть кто-нибудь....................
Вложения:
5344707.dt1Cv8_.dt