|
v8: Запрос: нулевые остатки | ☑ | ||
---|---|---|---|---|
0
Neznakomka
04.09.12
✎
08:10
|
Здравствуйте! не поможите мне с запросом ломаю голову...в запросе не выыодит позиции с остатком равным 0...как исправить..перепробовала уже все.
Вот запрос ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК Характеристика, ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент КАК ЦенаБазЕдИзм ПОМЕСТИТЬ ВТ_ЗакупочныеЦены ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних( &КонецПериода, Номенклатура В (&СписокТоваров) И ТипЦен = &ТипЦенЗакупочная) КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Период КАК Период, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) КАК КоличествоНачальныйОстаток, 0 КАК КоличествоПриход, 0 КАК КоличествоРасход, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК КоличествоКонечныйОстаток, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СтоимостьНачальныйОстаток, 0 КАК СтоимостьПриход, 0 КАК СтоимостьРасход, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СтоимостьКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Склад.АридаОрганизация.Код КАК КодОрганизации, СпрНоменклатура.Ссылка КАК Номенклатура, СпрНоменклатура.Код КАК КодТовара ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура В (&СписокТоваров)) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗакупочныеЦены КАК ВТ_ЗакупочныеЦены ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТ_ЗакупочныеЦены.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ВТ_ЗакупочныеЦены.Характеристика ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстаткиИОбороты.Номенклатура |
|||
1
andrewks
04.09.12
✎
08:11
|
фото нет, пол мужской.
"меня терзают мутные сомнения..." © |
|||
2
Neznakomka
04.09.12
✎
08:17
|
Извините, торопилась. . очень нужно!
|
|||
3
andrewks
04.09.12
✎
08:18
|
во-первых, это точная копипаста запроса? ибо то, что приведено, не пройдёт синтакс-контроль
|
|||
4
MatrosoV AleXXXand_R
04.09.12
✎
08:19
|
Я бы попробовал для начала следующее:
1) добавил бы временную таблицу - добавил бы временную таблицу - периоды (сформировал бы из внешнего источника), соединил бы ее с таблицей номенклатуры по (ИСТИНА) - то есть получил бы общую таблицу вида Номенклатура | Период 2) соединил бы как у автора, только добавил бы еще соединение по периоду и проверил бы еще соединение с ВТ_закупочныеЦены ну это мое мнение, возможно оно слишком замороченное |
|||
5
Neznakomka
04.09.12
✎
08:23
|
Первоначальный вид был таким...всеработет, но есть позиция номенклатруры за 1 день, где конечн. остаток равен 0, вот мне ее надо получить,
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК Характеристика, ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент КАК ЦенаБазЕдИзм ПОМЕСТИТЬ ВТ_ЗакупочныеЦены ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних( &КонецПериода, Номенклатура В (&СписокТоваров) И ТипЦен = &ТипЦенЗакупочная) КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Период КАК Период, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК КодТовара, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) КАК КоличествоНачальныйОстаток, 0 КАК КоличествоПриход, 0 КАК КоличествоРасход, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК КоличествоКонечныйОстаток, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СтоимостьНачальныйОстаток, 0 КАК СтоимостьПриход, 0 КАК СтоимостьРасход, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СтоимостьКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Склад.АридаОрганизация.Код КАК КодОрганизации ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура В (&СписокТоваров)) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗакупочныеЦены КАК ВТ_ЗакупочныеЦены ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТ_ЗакупочныеЦены.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ВТ_ЗакупочныеЦены.Характеристика |
|||
6
andrewks
04.09.12
✎
08:25
|
||||
7
MatrosoV AleXXXand_R
04.09.12
✎
08:26
|
(6) там про регистры сведений
|
|||
8
andrewks
04.09.12
✎
08:27
|
(7) какая разница? что, для РС соединение работает как-то по-другому?
|
|||
9
MatrosoV AleXXXand_R
04.09.12
✎
08:28
|
(8) тоже самое по идее, но автор не написал что ему нужны именно движения по всем датам за период
|
|||
10
Neznakomka
04.09.12
✎
08:34
|
спасибо .почитала.но немного не то. период задается пользователем, количество дней за которые надо получить сведения. все нормально работает, но за 1 день есть позиция номенклатуры по которой конечный остаток равен 0, она не выгружается, если остаток больше 0, то выгружается..мне нужно даже если ост равен 0, тоже выгрузить.
это часть этого запроса ТЗ_Данные.Свернуть("Период, КодОрганизации, Номенклатура, КодТовара", "КолвоНачОст, КолвоКонОст, СуммаНачОст, СуммаКонОст"); Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК Характеристика, | ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент КАК ЦенаБазЕдИзм |ПОМЕСТИТЬ ВТ_ЗакупочныеЦены |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &КонецПериода, | Номенклатура В (&СписокТоваров) | И ТипЦен = &ТипЦенЗакупочная) КАК ЦеныНоменклатурыСрезПоследних |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗ_Остатки.Период КАК Период, | ТЗ_Остатки.Номенклатура КАК Номенклатура, | ТЗ_Остатки.КодТовара КАК КодТовара, | ТЗ_Остатки.КолвоНачОст КАК КолвоНачОст, | ТЗ_Остатки.КолвоКонОст КАК КолвоКонОст, | ТЗ_Остатки.СуммаНачОст КАК СуммаНачОст, | ТЗ_Остатки.СуммаКонОст КАК СуммаКонОст, | ТЗ_Остатки.КодОрганизации |ПОМЕСТИТЬ ВТ_Остатки |ИЗ | &ТЗ_Остатки КАК ТЗ_Остатки |ГДЕ | ТЗ_Остатки.КодТовара = &Код |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ) КАК Период, | ТоварыНаСкладах.Номенклатура, | ТоварыНаСкладах.Номенклатура.Код КАК КодТовара, | СУММА(ВЫБОР | КОГДА НЕ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладах.Количество < 0 | И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | ТОГДА -ТоварыНаСкладах.Количество | ИНАЧЕ ВЫБОР | КОГДА ТоварыНаСкладах.Количество > 0 | И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) | ТОГДА ТоварыНаСкладах.Количество | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК КолвоПриход, | СУММА(ВЫБОР | КОГДА НЕ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладах.Количество < 0 | И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) | ТОГДА -ТоварыНаСкладах.Количество | ИНАЧЕ ВЫБОР | КОГДА ТоварыНаСкладах.Количество > 0 | И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | ТОГДА ТоварыНаСкладах.Количество | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК КолвоРасход, | ЕСТЬNULL(ТоварыНаСкладах.Склад.АридаОрганизация.Код, """") КАК КодОрганизации |ПОМЕСТИТЬ ВТ_Обороты |ИЗ | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах |ГДЕ | ТоварыНаСкладах.Номенклатура В(&СписокТоваров) | И ТоварыНаСкладах.Период МЕЖДУ &НачалоПериода И &КонецПериода | И ТоварыНаСкладах.Номенклатура.Код = &Код | |СГРУППИРОВАТЬ ПО | НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ), | ТоварыНаСкладах.Номенклатура, | ТоварыНаСкладах.Номенклатура.Код, | ЕСТЬNULL(ТоварыНаСкладах.Склад.АридаОрганизация.Код, """") |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Остатки.Период КАК Период, | ВТ_Остатки.Номенклатура, | ВТ_Остатки.КодТовара, | ВТ_Остатки.КолвоНачОст, | ЕСТЬNULL(ВТ_Обороты.КолвоПриход, 0) КАК КолвоПриход, | ЕСТЬNULL(ВТ_Обороты.КолвоРасход, 0) КАК КолвоРасход, | ВТ_Остатки.КолвоКонОст, | ВТ_Остатки.СуммаНачОст, | ЕСТЬNULL(ВТ_Обороты.КолвоПриход, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СуммаПриход, | ЕСТЬNULL(ВТ_Обороты.КолвоРасход, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СуммаРасход, | ВТ_Остатки.СуммаКонОст, | ВТ_Остатки.КодОрганизации КАК КодОрганизации |ИЗ | ВТ_Остатки КАК ВТ_Остатки | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты | ПО ВТ_Остатки.Период = ВТ_Обороты.Период | И ВТ_Остатки.КодТовара = ВТ_Обороты.КодТовара | И ВТ_Остатки.КодОрганизации = ВТ_Обороты.КодОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗакупочныеЦены КАК ВТ_ЗакупочныеЦены | ПО ВТ_Остатки.КодТовара = ВТ_ЗакупочныеЦены.Номенклатура.Код | |УПОРЯДОЧИТЬ ПО | КодОрганизации, | Период"; Запрос.УстановитьПараметр("НачалоПериода", мНачалоПериода); Запрос.УстановитьПараметр("КонецПериода", мКонецПериода); Запрос.УстановитьПараметр("ТЗ_Остатки", ТЗ_Данные); Запрос.УстановитьПараметр("СписокТоваров", мСписокТоваров); Запрос.УстановитьПараметр("ТипЦенЗакупочная", мТипЦенЗакупочная); Запрос.УстановитьПараметр("Код",Код); ТЗ_Данные2 = Запрос.Выполнить().Выгрузить(); где Запрос.УстановитьПараметр("ТЗ_Остатки", ТЗ_Данные); это запрос ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК Характеристика, ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент КАК ЦенаБазЕдИзм ПОМЕСТИТЬ ВТ_ЗакупочныеЦены ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних( &КонецПериода, Номенклатура В (&СписокТоваров) И ТипЦен = &ТипЦенЗакупочная) КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Период КАК Период, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК КодТовара, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) КАК КоличествоНачальныйОстаток, 0 КАК КоличествоПриход, 0 КАК КоличествоРасход, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК КоличествоКонечныйОстаток, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СтоимостьНачальныйОстаток, 0 КАК СтоимостьПриход, 0 КАК СтоимостьРасход, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) * ЕСТЬNULL(ВТ_ЗакупочныеЦены.ЦенаБазЕдИзм, 0) КАК СтоимостьКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Склад.АридаОрганизация.Код КАК КодОрганизации ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура В (&СписокТоваров)) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗакупочныеЦены КАК ВТ_ЗакупочныеЦены ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТ_ЗакупочныеЦены.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ВТ_ЗакупочныеЦены.Характеристика |
|||
11
Neznakomka
04.09.12
✎
08:36
|
вообщем запутала всех . просто подскажите как получить позицию с нулевым остатком, условие с =0 тоже не помогает
|
|||
12
MatrosoV AleXXXand_R
04.09.12
✎
08:51
|
(11) если движений не было за указанный период и нет на остатках на начало периода, то только самому дописывать при полном соединении, к примеру ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Период, ДАТАВРЕМЯ(1,1,1,0,0,0))
|
|||
13
MatrosoV AleXXXand_R
04.09.12
✎
08:52
|
вернее ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Период, &НачалоПериода)
|
|||
14
Neznakomka
04.09.12
✎
08:54
|
нет, в том то и дело за этот день были возвраты и реализация.
|
|||
15
MatrosoV AleXXXand_R
04.09.12
✎
08:57
|
(14) и если сделать простой запрос - выборку из регистра, то показывает данные? А номенклатура попадает под условие - "Номенклатура В (&СписокТоваров)" и на нее заполнены цены в регистре "ЦеныНоменклатуры" на конец периода по закупочной цене?
|
|||
16
Neznakomka
04.09.12
✎
09:01
|
да в (&СписокТоваров) попадает. цены все указаны. по этому запросу выводит всю номенклатуру, кроме той у которой начальн остаток 0, приход расход есть и конечный остаток 0.
|
|||
17
Neznakomka
04.09.12
✎
09:02
|
завожу приход на 1 позицию...и все..попадает! получается если остаток конечный равен 0, то нет...
|
|||
18
MatrosoV AleXXXand_R
04.09.12
✎
09:05
|
(17) я бы по-максимуму в данном случае упростил запрос - убрал бы все условия, и перепроверил бы вот это
"И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ВТ_ЗакупочныеЦены.Характеристика" |
|||
19
echo77
04.09.12
✎
09:16
|
Соединить остатки со справочником
|
|||
20
Neznakomka
04.09.12
✎
09:22
|
остатаки со справочникам соединяла, не помогло. сейчас уберу все, но думаю не поможет. но попробую сократить до минимума ..спасибо
|
|||
21
Ant1773
04.09.12
✎
09:40
|
(19) +1
(20) там не 0 будет, а Null. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |