![]() |
![]() |
![]() |
|
Запрос. Нужна помощь. | ☑ | ||
---|---|---|---|---|
0
zippygrill
05.07.13
✎
10:06
|
Прошу вашу помощь в составление запроса.
Цель: получить серию прихода. если один и тот же товар из разных партии то брать первую серию. В запросе сейчас берется только одна запись(понятно почему) :) Пример: в ТЧ 4 сторки: Ном1 ->Серия1->Кол1 Ном1 ->Серия2->Кол1 Ном2 ->Серия3->Кол1 Ном3 ->Серия4->Кол1 Получить нужно: Ном1 ->Серия1->Кол2 Ном2 ->Серия3->Кол1 Ном3 ->Серия4->Кол1 ВЫБРАТЬ ПоступлениеТоваровУслугВНТТТовары.Номенклатура, ПоступлениеТоваровУслугВНТТТовары.Ссылка.Склад, 0 КАК ОбъемНачОст, ВЫБОР КОГДА &вКоличественныхПоказателях ТОГДА ПоступлениеТоваровУслугВНТТТовары.Количество ИНАЧЕ ПоступлениеТоваровУслугВНТТТовары.Количество * 0.1 * ЕСТЬNULL(ПоступлениеТоваровУслугВНТТТовары.Номенклатура.ЕдиницаХраненияОстатков.Объем, 0) КОНЕЦ КАК ОбъемПриход, 0 КАК ОбъемРасход, ПоступлениеТоваровУслугВНТТТовары.Ссылка КАК Регистратор, ВЫБОР КОГДА ПоступлениеТоваровУслугВНТТТовары.Ссылка.Контрагент = ПоступлениеТоваровУслугВНТТТовары.Номенклатура.Производитель ТОГДА "ПриходОтПроизводителей" ИНАЧЕ "ПриходОтОптовиков" КОНЕЦ КАК ВидДвижения, ВЫБОР КОГДА &использоватьФиксированнуюДатуСвойств ТОГДА НАЧАЛОПЕРИОДА(&датаОпределенияАкцидентов, ДЕНЬ) ИНАЧЕ НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата, ДЕНЬ) КОНЕЦ КАК ДатаАкцидентов ПОМЕСТИТЬ втОборотПТУВНТТ ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&начДата, ДЕНЬ) И КОНЕЦПЕРИОДА(&конДата, ДЕНЬ) И ПоступлениеТоваровУслугВНТТТовары.Ссылка.Проведен И ПоступлениеТоваровУслугВНТТТовары.Ссылка.Склад В(&списокСкладовНТТ) И ВЫБОР КОГДА &ОтборНоменклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА ПоступлениеТоваровУслугВНТТТовары.Номенклатура = &ОтборНоменклатура ИНАЧЕ ИСТИНА КОНЕЦ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 МИНИМУМ(ПоступлениеТоваровУслугВНТТТовары.НомерСтроки) КАК НомерСтроки, ПоступлениеТоваровУслугВНТТТовары.СерияНоменклатуры, ПоступлениеТоваровУслугВНТТТовары.Номенклатура ПОМЕСТИТЬ ОднаСерияИзПТУВНТТ ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Ссылка В (ВЫБРАТЬ втОборотПТУВНТТ.Регистратор ИЗ втОборотПТУВНТТ КАК втОборотПТУВНТТ) И ПоступлениеТоваровУслугВНТТТовары.Номенклатура В (ВЫБРАТЬ втОборотПТУВНТТ.Номенклатура ИЗ втОборотПТУВНТТ КАК втОборотПТУВНТТ) СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугВНТТТовары.СерияНоменклатуры, ПоступлениеТоваровУслугВНТТТовары.Номенклатура УПОРЯДОЧИТЬ ПО НомерСтроки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втОборотПТУВНТТ.Номенклатура, втОборотПТУВНТТ.Склад, СУММА(втОборотПТУВНТТ.ОбъемНачОст) КАК ОбъемНачОст, СУММА(втОборотПТУВНТТ.ОбъемПриход) КАК ОбъемПриход, СУММА(втОборотПТУВНТТ.ОбъемРасход) КАК ОбъемРасход, втОборотПТУВНТТ.Регистратор, втОборотПТУВНТТ.ВидДвижения, втОборотПТУВНТТ.ДатаАкцидентов, ОднаСерияИзПТУВНТТ.СерияНоменклатуры ПОМЕСТИТЬ втВесьОборотПТУВНТТ ИЗ втОборотПТУВНТТ КАК втОборотПТУВНТТ ЛЕВОЕ СОЕДИНЕНИЕ ОднаСерияИзПТУВНТТ КАК ОднаСерияИзПТУВНТТ ПО втОборотПТУВНТТ.Номенклатура = ОднаСерияИзПТУВНТТ.Номенклатура СГРУППИРОВАТЬ ПО втОборотПТУВНТТ.ВидДвижения, ОднаСерияИзПТУВНТТ.СерияНоменклатуры, втОборотПТУВНТТ.Номенклатура, втОборотПТУВНТТ.Склад, втОборотПТУВНТТ.Регистратор, втОборотПТУВНТТ.ДатаАкцидентов ; |
|||
1
viktor_vv
05.07.13
✎
10:16
|
||||
2
zippygrill
05.07.13
✎
10:51
|
скажу прямо, ничего не получается :(
|
|||
3
Maxus43
05.07.13
✎
10:52
|
именно первую серию? или любую?
|
|||
4
zippygrill
05.07.13
✎
10:53
|
любую из двух позиции. если одна позиция то берем указанную серию
|
|||
5
Maxus43
05.07.13
✎
10:54
|
(4) МИНИМУМ(ОднаСерияИзПТУВНТТ.СерияНоменклатуры)
|
|||
6
zippygrill
05.07.13
✎
10:55
|
а запрос то вернет одну запись из за этого ВЫБРАТЬ ПЕРВЫЕ 1. а мне то нужны все записи документа
|
|||
7
zippygrill
05.07.13
✎
11:04
|
так чтоди?
ВЫБРАТЬ ПоступлениеТоваровУслугВНТТТовары.Ссылка.Склад КАК Склад, СУММА(0) КАК ОбъемНачОстаток, СУММА(ВЫБОР КОГДА &показыватьКоличествоВместоОбъема ТОГДА ПоступлениеТоваровУслугВНТТТовары.Количество ИНАЧЕ ПоступлениеТоваровУслугВНТТТовары.Количество * 0.1 * ЕСТЬNULL(ПоступлениеТоваровУслугВНТТТовары.Номенклатура.ЕдиницаХраненияОстатков.Объем, 0) КОНЕЦ) КАК ОбъемПриход, СУММА(0) КАК ОбъемРасход, ПоступлениеТоваровУслугВНТТТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугВНТТТовары.Ссылка КАК Регистратор, СУММА(ПоступлениеТоваровУслугВНТТТовары.Количество) КАК Количество ПОМЕСТИТЬ втОборот ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Ссылка = &Ссылка И ВЫБОР КОГДА &ОтборНоменклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА ПоступлениеТоваровУслугВНТТТовары.Номенклатура = &ОтборНоменклатура ИНАЧЕ ИСТИНА КОНЕЦ СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугВНТТТовары.Ссылка, ПоступлениеТоваровУслугВНТТТовары.Номенклатура, ПоступлениеТоваровУслугВНТТТовары.Ссылка.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслугВНТТТовары.Ссылка, ПоступлениеТоваровУслугВНТТТовары.Номенклатура, МИНИМУМ(ПоступлениеТоваровУслугВНТТТовары.СерияНоменклатуры) КАК СерияНоменклатуры ПОМЕСТИТЬ втОднаСерия ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Ссылка В (ВЫБРАТЬ втОборот.Регистратор ИЗ втОборот КАК втОборот) И ПоступлениеТоваровУслугВНТТТовары.Номенклатура В (ВЫБРАТЬ втОборот.Номенклатура ИЗ втОборот КАК втОборот) СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугВНТТТовары.Номенклатура, ПоступлениеТоваровУслугВНТТТовары.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втОборот.Номенклатура КАК Номенклатура, СУММА(втОборот.Количество) КАК Количество, втОборот.Склад, СУММА(втОборот.ОбъемНачОстаток) КАК ОбъемНачОстаток, СУММА(втОборот.ОбъемПриход) КАК ОбъемПриход, СУММА(втОборот.ОбъемРасход) КАК ОбъемРасход, втОборот.Регистратор, втОднаСерия.СерияНоменклатуры ИЗ втОборот КАК втОборот ЛЕВОЕ СОЕДИНЕНИЕ втОднаСерия КАК втОднаСерия ПО втОборот.Номенклатура = втОднаСерия.Номенклатура СГРУППИРОВАТЬ ПО втОднаСерия.СерияНоменклатуры, втОборот.Номенклатура, втОборот.Регистратор, втОборот.Склад |
|||
8
zippygrill
05.07.13
✎
11:04
|
*чтоли
|
|||
9
Maxus43
05.07.13
✎
11:11
|
ну работает как надо или нет?
|
|||
10
viktor_vv
05.07.13
✎
11:21
|
(7) Смотря что в твоем понимание первая серия. В данном случае возьмется с минимальной ссылкой.
|
|||
11
Maxus43
05.07.13
✎
11:22
|
(10) >>любую из двух позиции
чтоб не колбасить бабушку пусть будет так, ему без разницы |
|||
12
viktor_vv
05.07.13
✎
11:25
|
(11) Ну да. А то по номеру строки придется сверху еще Выбрать и соединять опять с табличной частью.
|
|||
13
zippygrill
05.07.13
✎
11:56
|
(9) ага работает :)
|
|||
14
zippygrill
05.07.13
✎
11:58
|
(10) сойдет так как не совсем принципиально какая из двух выбрать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |