Простой вопрос по запросу

1. 14 04.05.21 15:01 Сейчас в теме
Добрый день, Коллеги! Довольно простой вопрос по простому запросу, но что-то упускаю. Есть регистр цен, есть регистр остатков. Нужно свести в одну таблицу остаток и цену. Принцип: если на товар была цена (хоть одна запись в регистре стоимости) он должен попасть в таблицу, даже если остаток нулевой. В моем запросе если остатка нет - позиция из таблицы выпадает. Там еще есть соединение с другим регистром, но это к делу не относится (мне кажется).

Запрос.Текст = "ВЫБРАТЬ
	               |	СтоимостьНоменклатурыСрезПоследних.Розничная КАК Цена,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура КАК Наименование,
	               |	СтоимостьНоменклатурыСрезПоследних.Размер,
	               |	СтоимостьНоменклатурыСрезПоследних.Цвет,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.ЕД КАК ЕД,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.ШтрихПроизводителя КАК ШтрихПроизводителя,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.Код КАК ШтрихКод,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.КлючевоеСлово КАК КлючевоеСлово,
				   |	СтоимостьНоменклатурыСрезПоследних.Закупочная КАК ЗакупочнаяСтоимость,
	               |	СкладОстатки.КолВоОстаток КАК Остаток 
	               |ПОМЕСТИТЬ ЦеныОстатки
	               |ИЗ
	               |	 РегистрСведений.СтоимостьНоменклатуры.СрезПоследних КАК СтоимостьНоменклатурыСрезПоследних
	               |		ЛЕВОЕ СОЕДИНЕНИЕ  РегистрНакопления.Склад.Остатки(&НаДату, ) КАК СкладОстатки
				   |		ПО (СтоимостьНоменклатурыСрезПоследних.Номенклатура = СкладОстатки.Номенклатура)
	               |ГДЕ
	               |	СкладОстатки.Отдел = &Отдел
	               |	И СтоимостьНоменклатурыСрезПоследних.Размер = СкладОстатки.Размер
	               |	И СтоимостьНоменклатурыСрезПоследних.Цвет = СкладОстатки.Цвет
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ЦеныОстатки.Цена,
	               |	ЦеныОстатки.Наименование,
	               |	ЦеныОстатки.Размер,
	               |	ЦеныОстатки.Цвет,
	               |	ЦеныОстатки.ШтрихПроизводителя,
	               |	ЦеныОстатки.ШтрихКод,
	               |	ЦеныОстатки.КлючевоеСлово,
	               |	ЦеныОстатки.Остаток,
				   |	ЦеныОстатки.ЗакупочнаяСтоимость,
	               |	Акции.Скидка
	               |ИЗ
	               |	ЦеныОстатки КАК ЦеныОстатки
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Акции КАК Акции
	               |		ПО (Акции.Номенклатура = ЦеныОстатки.Наименование)"
Показать
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. lefthander 04.05.21 15:15 Сейчас в теме
6. Serega-artem 14 04.05.21 15:23 Сейчас в теме
(4)Там вроде правильно всё, сначала получаем цены к ним цепляем остатки. В любом случае попробовал и так и так - нет разницы.
13. Leon75 04.05.21 15:47 Сейчас в теме
(1)Какая практическая ценность текущего принципа: если на товар была цена (хоть одна запись в регистре стоимости) он должен попасть в таблицу, даже если остаток нулевой? Ибо обычно наоборот: выбирается цена к остатку.
Это тестовое задание на вакансию?

Тут нужно формировать таблицу дат, стоимости и ключей по РегистрСведений.СтоимостьНоменклатуры (не срез последних), помещать ее во временную таблицу, индексировать по периоду и ключам.

Далее нужно выбрать уникальные ключи в следующую временную таблицу.

Далее нужно брать РегистрНакопления.Склад. но не виртуальную таблицу Остатки, а ОстаткиИОбороты с периодичностью как установлено в метаданных Р/С но делать ее из физической таблицы регистра, а не виртуальной ОстаткиИОбороты, загружая в нее кроссджойном ключи, выбранные в предыдущей таблице, и ограничивая минимальным и максимальным периодом из первой временной таблицы, выбирая КоличествоКонечныйОстаток, ключи и период и помещать результат в третью временную таблицу.

Далее соединить левым соединением первую и третью временную таблицы по периоду и ключам.
2. user1278383 04.05.21 15:14 Сейчас в теме
Перенести
                   |    И СтоимостьНоменклатурыСрезПоследних.Размер = СкладОстатки.Размер
                   |    И СтоимостьНоменклатурыСрезПоследних.Цвет = СкладОстатки.Цвет

в условия соединения.
8. user1278383 04.05.21 15:30 Сейчас в теме
(2) и | СкладОстатки.Отдел = &Отдел конечно же
3. soft_wind 04.05.21 15:14 Сейчас в теме
вот это (ГДЕ надо убрать)
   |ГДЕ
                   |    СкладОстатки.Отдел = &Отдел
                   |    И СтоимостьНоменклатурыСрезПоследних.Размер = СкладОстатки.Размер
                   |    И СтоимостьНоменклатурыСрезПоследних.Цвет = СкладОстатки.Цвет

надо поместить в условие связи ПО

  |ИЗ
                   |     РегистрСведений.СтоимостьНоменклатуры.СрезПоследних КАК СтоимостьНоменклатурыСрезПоследних
                   |        ЛЕВОЕ СОЕДИНЕНИЕ  РегистрНакопления.Склад.Остатки(&НаДату, Отдел = &Отдел) КАК СкладОстатки
                   |        ПО (СтоимостьНоменклатурыСрезПоследних.Номенклатура = СкладОстатки.Номенклатура)
                   |    И СтоимостьНоменклатурыСрезПоследних.Размер = СкладОстатки.Размер
                   |    И СтоимостьНоменклатурыСрезПоследних.Цвет = СкладОстатки.Цвет
5. Serega-artem 14 04.05.21 15:21 Сейчас в теме
(3) Результат тот же!

Запрос.Текст = "ВЫБРАТЬ
	               |	СтоимостьНоменклатурыСрезПоследних.Розничная КАК Цена,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура КАК Наименование,
	               |	СтоимостьНоменклатурыСрезПоследних.Размер,
	               |	СтоимостьНоменклатурыСрезПоследних.Цвет,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.ЕД КАК ЕД,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.ШтрихПроизводителя КАК ШтрихПроизводителя,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.Код КАК ШтрихКод,
	               |	СтоимостьНоменклатурыСрезПоследних.Номенклатура.КлючевоеСлово КАК КлючевоеСлово,
	               |	СтоимостьНоменклатурыСрезПоследних.Закупочная КАК ЗакупочнаяСтоимость,
	               |	СкладОстатки.КолВоОстаток КАК Остаток
	               |ПОМЕСТИТЬ ЦеныОстатки
	               |ИЗ
	               |	РегистрСведений.СтоимостьНоменклатуры.СрезПоследних КАК СтоимостьНоменклатурыСрезПоследних
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Склад.Остатки(&НаДату, ) КАК СкладОстатки
	               |		ПО СтоимостьНоменклатурыСрезПоследних.Номенклатура = СкладОстатки.Номенклатура
	               |			И СтоимостьНоменклатурыСрезПоследних.Размер = СкладОстатки.Размер
	               |			И СтоимостьНоменклатурыСрезПоследних.Цвет = СкладОстатки.Цвет
	               |ГДЕ
	               |	СкладОстатки.Отдел = &Отдел
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ЦеныОстатки.Цена,
	               |	ЦеныОстатки.Наименование,
	               |	ЦеныОстатки.Размер,
	               |	ЦеныОстатки.Цвет,
	               |	ЦеныОстатки.ШтрихПроизводителя,
	               |	ЦеныОстатки.ШтрихКод,
	               |	ЦеныОстатки.КлючевоеСлово,
	               |	ЦеныОстатки.Остаток,
	               |	ЦеныОстатки.ЗакупочнаяСтоимость,
	               |	Акции.Скидка
	               |ИЗ
	               |	ЦеныОстатки КАК ЦеныОстатки
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Акции КАК Акции
	               |		ПО (Акции.Номенклатура = ЦеныОстатки.Наименование)
Показать
7. user1278383 04.05.21 15:26 Сейчас в теме
(5) неужели непонятна логика? Если остатки пустые, то что должно быть в СкладОстатки.Отдел? Должно быть null, который не равен &Отдел
9. soft_wind 04.05.21 15:32 Сейчас в теме
(5) ну вам же написали так
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Склад.Остатки(&НаДату, Отдел = &Отдел) КАК СкладОстатки

вы вообще ответы читаете? в смысле ВНИМАТЕЛЬНО читаете?
11. Serega-artem 14 04.05.21 15:34 Сейчас в теме
(9) Да, не внимательно посмотрел! Спасибо!
10. the1 869 04.05.21 15:33 Сейчас в теме
ГДЕ СкладОстатки.Отдел = &Отдел
Надо убрать условие
12. Serega-artem 14 04.05.21 15:34 Сейчас в теме
(10) Благодарю, действительно не внимательно прочитал предыдущий ответ.
14. Serega-artem 14 04.05.21 16:02 Сейчас в теме
Это тестовое задание на вакансию?

Упаси Будда, никогда такой фигней не занимался.

Практическая задача: видеть текущий остаток и цену. Если остатка нет, всё равно нужно видеть последнюю цену.

В чем смысл вашего метода, кроме сложности? Если бы нужна была история цен и остатков, ок что такое бы имело смысл. А так есть список номенклатуры с последними ценами, по нему получаем остаток (если есть). Если номенклатуры нет в регистре цен, она никогда не поступала в продажу и нам не интересна.
Оставьте свое сообщение
Вопросы с вознаграждением