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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день