Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 15:49

Помощь в запросе

Автор skillful, 07 янв 2020, 19:24

0 Пользователей и 1 гость просматривают эту тему.

skillful

Здравствуйте. Этот запрос
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Ссылка,
СпрНоменклатура.Код КАК Код,
СпрНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
СпрНоменклатура.Наименование КАК Наименование,
СпрНоменклатура.Артикул КАК Артикул,
СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
СпрНоменклатура.Родитель КАК Родитель,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитТовары, ЛОЖЬ) КАК СодержитТовары,
ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитУслуги, ЛОЖЬ) КАК СодержитУслуги,
СпрНоменклатура.ОсобенностьУчета КАК ОсобенностьУчета,
СпрНоменклатура.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик,
СпрНоменклатура.Качество КАК Качество,
СпрНоменклатура.ВестиУчетСертификатовНоменклатуры КАК ВестиУчетСертификатовНоменклатуры,
СпрНоменклатура.ПродукцияМаркируемаяДляГИСМ КАК ПродукцияМаркируемаяДляГИСМ,
ЕСТЬNULL(ВидыАлкогольнойПродукции.Маркируемый, ЛОЖЬ) КАК ВидАлкогольнойПродукцииМаркируемый,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) КАК Остаток
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
ПО (ВариантыКомплектацииНоменклатуры.Владелец = СпрНоменклатура.Ссылка)
И (ВариантыКомплектацииНоменклатуры.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
И (ВариантыКомплектацииНоменклатуры.Основной)
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыАлкогольнойПродукции КАК ВидыАлкогольнойПродукции
ПО (СпрНоменклатура.ВидАлкогольнойПродукции = ВидыАлкогольнойПродукции.Ссылка)}
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)
ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка)
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
И ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = &НаименованиеЦены
И ( &НаименованиеСклад = "" или ТоварыНаСкладахОстатки.Склад.Наименование = &НаименованиеСклад )
{ГДЕ
СпрНоменклатура.Ссылка.*,
(СпрНоменклатура.Ссылка В
(ВЫБРАТЬ
Сегменты.Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2,
(ВЫБОР
КОГДА ВЫБОР
КОГДА СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор)
ТОГДА ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора, ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка))
ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
КОНЕЦ В (&ВариантыРасчетаЦеныНабора)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ) КАК Поле4}

СГРУППИРОВАТЬ ПО
СпрНоменклатура.Ссылка,
СпрНоменклатура.Код,
СпрНоменклатура.ПометкаУдаления,
СпрНоменклатура.Наименование,
СпрНоменклатура.Артикул,
СпрНоменклатура.ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС,
СпрНоменклатура.ТипНоменклатуры,
СпрНоменклатура.Родитель,
СпрНоменклатура.ОсобенностьУчета,
СпрНоменклатура.ИспользованиеХарактеристик,
СпрНоменклатура.Качество,
СпрНоменклатура.ВестиУчетСертификатовНоменклатуры,
СпрНоменклатура.ПродукцияМаркируемаяДляГИСМ,
ЦеныНоменклатурыСрезПоследних.Цена,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ,
ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитТовары, ЛОЖЬ),
ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитУслуги, ЛОЖЬ),
ЕСТЬNULL(ВидыАлкогольнойПродукции.Маркируемый, ЛОЖЬ)


выдает список номенклатуры который есть в наличии на складе, т. е. из регистра ТоварыНаСкладахОстатки. Можно его как то подправить, чтобы он всю номенклатуру показывал включая нулевые остатки по складу и текущие остатки тоже???

Например:


Номенклатура    Цена  Кол-во
Банан           50    12
Апельсин              19
Мандарин        56   
       

FanFani

У тебя левое соединение регистра цен со справочником номенклатуры, что не дает вывести номенклатуру без установленной цены, я бы попробовал сделать наоборот. Скорей всего это уже выведет тебе всю номенклатуру, но может помешать отбор по складу.

И ( &НаименованиеСклад = "" или ТоварыНаСкладахОстатки.Склад.Наименование = &НаименованиеСклад )

Если параметр "НаименованиеСклад" будет заполнен, тебе выведет только номенклатуру с остатками.

Ну и я не уверен как работает вот этот кусок

(СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2,


Поменяй соединение, сделай запрос без указания склада и посмотри на количество строк, если будет столько же как в справочнике номенклатуры, значит все ок, если нет то смотри откуда берется параметр &СегментНоменклатуры

skillful

Цитата: FanFani от 08 янв 2020, 06:23
У тебя левое соединение регистра цен со справочником номенклатуры, что не дает вывести номенклатуру без установленной цены, я бы попробовал сделать наоборот. Скорей всего это уже выведет тебе всю номенклатуру, но может помешать отбор по складу.

И ( &НаименованиеСклад = "" или ТоварыНаСкладахОстатки.Склад.Наименование = &НаименованиеСклад )

Если параметр "НаименованиеСклад" будет заполнен, тебе выведет только номенклатуру с остатками.

Ну и я не уверен как работает вот этот кусок

(СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2,


Поменяй соединение, сделай запрос без указания склада и посмотри на количество строк, если будет столько же как в справочнике номенклатуры, значит все ок, если нет то смотри откуда берется параметр &СегментНоменклатуры
Нашел похожий запрос в нете, адаптировал под свою базу. Вроде норм работает. Спасибо большое!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск