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

ЗАПРОС номенклатура & цена & остатки

Автор pvasya, 28 июн 2011, 12:25

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

pvasya

Здравствуйте!


Делаю запрос для того чтобы выбрать всю номенклатуру с ценами и остатками. В качестве базы использую демо-базу, идущую в комплекте к УТ.

Вот мой запрос:
ВЫБРАТЬ
ТоварыОрганизацийОстаткиИОбороты.Номенклатура,
ТоварыОрганизацийОстаткиИОбороты.ХарактеристикаНоменклатуры,
ТоварыОрганизацийОстаткиИОбороты.СерияНоменклатуры,
СУММА(ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
ЦеныНоменклатурыСрезПоследних.Период,
ЦеныНоменклатурыСрезПоследних.Регистратор
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты КАК ТоварыОрганизацийОстаткиИОбороты
ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыОрганизацийОстаткиИОбороты.Номенклатура
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен

СГРУППИРОВАТЬ ПО
ТоварыОрганизацийОстаткиИОбороты.Номенклатура,
ТоварыОрганизацийОстаткиИОбороты.ХарактеристикаНоменклатуры,
ТоварыОрганизацийОстаткиИОбороты.СерияНоменклатуры,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
ЦеныНоменклатурыСрезПоследних.Период,
ЦеныНоменклатурыСрезПоследних.Регистратор


Параметр &ТипЦен устанавливаю равным 'Розничная'.
В параметр &Дата устанавливаю сегодняшнюю дату.

Всё хорошо, но СрезПоследних не срабатывает, в итоговой выборке появляются все цены, а не последняя.


При этом вот этот запрос, вытаскивающий только последние цены отрабатывает правильно:
ВЫБРАТЬ * ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
УПОРЯДОЧИТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.ТипЦен


Подскажите, пожалуйста, почему в первом случае СрезПоследних не срабатывает, а во втором запросе работает отлично? И как правильнее переписать первый запрос?

Заранее спасибо за помощь!

Шурыгин Иван Сергеевич

попробуйте не внутреннее а ЛЕВОЕ соединение
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

has

ЦитироватьДелаю запрос для того чтобы выбрать всю номенклатуру с ценами и остатками
Раз надо всю номенклатуру, то берете справочник номенклатуры левым соединением с регистрами

pvasya

Цитата: has от 28 июн 2011, 13:56
ЦитироватьДелаю запрос для того чтобы выбрать всю номенклатуру с ценами и остатками
Раз надо всю номенклатуру, то берете справочник номенклатуры левым соединением с регистрами

Вот запрос, беру справочник номенклатуры и левым соединением с регистром сведений соединяю:
ВЫБРАТЬ
СправочникНоменклатура.Наименование,
СправочникНоменклатура.Артикул,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка


Но в ответ всё-равно получаю все цены и старые и новые :(

Я что-то делаю не так?

pvasya

Цитата: Шурыгин Иван Сергеевич от 28 июн 2011, 13:29
попробуйте не внутреннее а ЛЕВОЕ соединение
Попробовал, не помогло.

pvasya

Цитата: pvasya от 28 июн 2011, 16:41
Цитата: has от 28 июн 2011, 13:56
ЦитироватьДелаю запрос для того чтобы выбрать всю номенклатуру с ценами и остатками
Раз надо всю номенклатуру, то берете справочник номенклатуры левым соединением с регистрами

Вот запрос, беру справочник номенклатуры и левым соединением с регистром сведений соединяю:
ВЫБРАТЬ
СправочникНоменклатура.Наименование,
СправочникНоменклатура.Артикул,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка


Но в ответ всё-равно получаю все цены и старые и новые :(

Я что-то делаю не так?


Прошу прощения, всё заработало. Я просто не выводил в этом запросе ХарактеристикуНоменклатуры, поэтому и не заметил, что у меня выводится всё верно (там одно наименование, но разные характеристики, следовательно это разный товар и разная цена).

Спасибо!

pvasya

Как ни бьюсь, но с двойным JOIN'ом никак не получается. Вот запрос:

ВЫБРАТЬ
СправочникНоменклатура.Наименование,
СправочникНоменклатура.Артикул,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры,
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Цена,
ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток,
ТоварыОрганизацийОстаткиИОбороты.Номенклатура,
ТоварыОрганизацийОстаткиИОбороты.ХарактеристикаНоменклатуры
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО СправочникНоменклатура.Код = ЦеныНоменклатурыСрезПоследних.Номенклатура.Код
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты КАК ТоварыОрганизацийОстаткиИОбороты
ПО СправочникНоменклатура.Код = ТоварыОрганизацийОстаткиИОбороты.Номенклатура.Код

В итоге получается хрень:

Теги:

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

Рейтинг@Mail.ru

Поиск