Вывод последней цены закупки в отчете остатки номенклатуры

1. user986816 10.06.22 10:43 Сейчас в теме
Здравствуйте, пытаюсь вывести последнею цену закупки в отчете, но не выводит, где мог ошибиться

 ВЫБРАТЬ РАЗЛИЧНЫЕ
	Закупки.Организация КАК Организация,
	Закупки.Номенклатура КАК Номенклатура,
	ВЫБОР КОГДА Закупки.Количество=0 ТОгда
		0
	Иначе Закупки.Сумма/Закупки.Количество
	Конец КАК ЦенаЗакупки
ПОМЕСТИТЬ ВТ_Закупка
ИЗ
	РегистрНакопления.Закупки КАК Закупки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
		ВЫБРАТЬ ПЕРВЫЕ 1
			МАКСИМУМ(Закупки.Период) КАК Период,
			МАКСИМУМ(Закупки.Документ.Номер) КАК Номер,
			Закупки.Организация КАК Организация,
			Закупки.Номенклатура КАК Номенклатура
		ИЗ
			РегистрНакопления.Закупки КАК Закупки
		СГРУППИРОВАТЬ ПО
			Закупки.Организация,
			Закупки.Номенклатура
			) КАК ВРЕМ
ПО Закупки.Номенклатура = ВРЕМ.Номенклатура И Закупки.Организация=ВРЕМ.Организация И ЗАКУПКИ.ПЕриод=ВРем.ПЕриод И Закупки.Документ.Номер=ВРЕМ.Номер;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗапасыОстатки.Организация КАК Организация,
	ЗапасыОстатки.СтруктурнаяЕдиница КАК Склад,
	ЗапасыОстатки.КоличествоОстаток КАК Количество,
	ВЫБОР
		КОГДА ЗапасыОстатки.ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
			ТОГДА 0
		ИНАЧЕ ЗапасыОстатки.КоличествоОстаток
	КОНЕЦ КАК Резерв,
	ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_Закупка.ЦенаЗакупки,0) КАК ЧИСЛО (15,2)) КАК ЦенаЗакупки,
	ЗапасыОстатки.СуммаОстаток КАК Сумма,
	ЗапасыОстатки.Номенклатура КАК Номенклатура,
	ЗапасыОстатки.Характеристика КАК Характеристика,
	ВЫБОР
		КОГДА НЕ ЗапасыОстатки.КоличествоОстаток = 0
			ТОГДА ВЫРАЗИТЬ( ЗапасыОстатки.СуммаОстаток / ЗапасыОстатки.КоличествоОстаток КАК ЧИСЛО (15,2))
		ИНАЧЕ 0
	КОНЕЦ КАК Цена,
	ЗапасыОстатки.ЗаказПокупателя КАК ЗаказПокупателя,
	ЗапасыОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
ИЗ
	РегистрНакопления.Запасы.Остатки КАК ЗапасыОстатки
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Закупка КАК ВТ_Закупка
		ПО (ВТ_Закупка.Номенклатура = ЗапасыОстатки.Номенклатура
		   И ВТ_Закупка.Организация = ЗапасыОстатки.Организация )
Показать
По теме из базы знаний
Найденные решения
7. user986816 14.06.22 08:33 Сейчас в теме
Получилось в итоге так вывести

ВЫБРАТЬ РАЗЛИЧНЫЕ
	Закупки.Организация КАК Организация,
	Закупки.Номенклатура КАК Номенклатура,
	ВЫБОР КОГДА Закупки.Количество=0 ТОгда
		0
	Иначе Закупки.Сумма/Закупки.Количество
	Конец КАК ЦенаЗакупки
ПОМЕСТИТЬ ВТ_Закупка
ИЗ
	РегистрНакопления.Закупки КАК Закупки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
		ВЫБРАТЬ РАЗЛИЧНЫЕ
			МАКСИМУМ(Закупки.Период) КАК Период,
			Закупки.Организация КАК Организация,
			Закупки.Номенклатура КАК Номенклатура
		ИЗ
			РегистрНакопления.Закупки КАК Закупки
		СГРУППИРОВАТЬ ПО
			Закупки.Организация,
			Закупки.Номенклатура
			) КАК ВРЕМ
ПО Закупки.Номенклатура = ВРЕМ.Номенклатура И Закупки.Организация=ВРЕМ.Организация И ЗАКУПКИ.ПЕриод=ВРем.ПЕриод;

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


а почему не через:
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена
или
ЦеныНоменклатурыСрезПоследних.Цена
?
4. yurikmellon 6 10.06.22 11:13 Сейчас в теме
(1) вот так можно
	//выборка номенклатуры с последней ценой продажи по дате
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПартииТоваровКомпанииОстатки.Номенклатура.Артикул,
	|	СУММА(ПартииТоваровКомпанииОстатки.КоличествоОстаток) КАК КоличествоОстаток
	|ПОМЕСТИТЬ ВТ
	|ИЗ
	|	РегистрНакопления.ПартииТоваровКомпании.Остатки(
	|			&НаДату,
	|			ТИПЗНАЧЕНИЯ(Партия) = ТИП(Документ.ПоступлениеТоваров)
	|				И Партия.Контрагент = &ПартияКонтрагент) КАК ПартииТоваровКомпанииОстатки
	|ГДЕ
	|	ПартииТоваровКомпанииОстатки.КоличествоОстаток > 0
	|	И ПартииТоваровКомпанииОстатки.СкладКомпании В(&СкладКомпании)
	|	И ПартииТоваровКомпанииОстатки.Номенклатура.Производитель = &Производитель
	|
	|СГРУППИРОВАТЬ ПО
	|	ПартииТоваровКомпанииОстатки.Номенклатура.Артикул
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	//максимум периода
	|ВЫБРАТЬ
	|	Цены.Номенклатура,
	|	МАКСИМУМ(Цены.Период) КАК Период
	|ПОМЕСТИТЬ ВТ1
	|ИЗ
	|	РегистрСведений.Цены КАК Цены
	|ГДЕ
	|	Цены.ТипЦен = &ТипЦен
	|
	|СГРУППИРОВАТЬ ПО
	|	Цены.Номенклатура
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	//получаем номенклатуру с ценой и посделней датой, нужно соединять и по номенклатуре и по периоду
	|ВЫБРАТЬ
	|	Цены.Номенклатура,
	|	Цены.Цена
	|ПОМЕСТИТЬ ВТ3
	|ИЗ
	|	РегистрСведений.Цены КАК Цены
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
	|		ПО Цены.Номенклатура = ВТ1.Номенклатура
	|			И Цены.Период = ВТ1.Период
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ВТ.НоменклатураАртикул КАК Артикул,
	|	ВТ.КоличествоОстаток КАК Количество,
	|	ВТ3.Цена
	|ИЗ
	|	ВТ КАК ВТ
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
	|		ПО ВТ.НоменклатураАртикул = ВТ3.Номенклатура.Артикул";
Показать
5. EVKash 14 10.06.22 11:16 Сейчас в теме
(1)
ВЫБРАТЬ ПЕРВЫЕ 1
вот это абсолютно лишнее.
И надо еще учитывать, что запись с максимальным периодом и запись с максимальным номером могут быть две разные записи, тогда внутреннее соединение не получится.
(2) (3) Цены закупки могут не фиксироваться установкой цен или ценами поставщика.
6. dehro 5 10.06.22 11:21 Сейчас в теме
(3)
...В таблицу ВТЦены выбрать данные по срезу последних цен...

(5)
...Цены закупки могут не фиксироваться установкой цен или ценами поставщика...


Соглсен, могут.

Тогда так: "В таблицу ВТЦены выбрать данные по ценам в разрезе измерений таблицы ВТЗакупка"
3. dehro 5 10.06.22 11:08 Сейчас в теме
Вложенный подзапрос однозначно зря. Лучше через временную таблицу.
И, согласен с (2)

В таблицу ВТЗакупка выбрать закупки
В таблицу ВТЦены выбрать данные по срезу последних цен
Соединить таблицу ВТЗакупки с таблицей ВТЦены левым соединением по организации и номенклатуре.
7. user986816 14.06.22 08:33 Сейчас в теме
Получилось в итоге так вывести

ВЫБРАТЬ РАЗЛИЧНЫЕ
	Закупки.Организация КАК Организация,
	Закупки.Номенклатура КАК Номенклатура,
	ВЫБОР КОГДА Закупки.Количество=0 ТОгда
		0
	Иначе Закупки.Сумма/Закупки.Количество
	Конец КАК ЦенаЗакупки
ПОМЕСТИТЬ ВТ_Закупка
ИЗ
	РегистрНакопления.Закупки КАК Закупки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
		ВЫБРАТЬ РАЗЛИЧНЫЕ
			МАКСИМУМ(Закупки.Период) КАК Период,
			Закупки.Организация КАК Организация,
			Закупки.Номенклатура КАК Номенклатура
		ИЗ
			РегистрНакопления.Закупки КАК Закупки
		СГРУППИРОВАТЬ ПО
			Закупки.Организация,
			Закупки.Номенклатура
			) КАК ВРЕМ
ПО Закупки.Номенклатура = ВРЕМ.Номенклатура И Закупки.Организация=ВРЕМ.Организация И ЗАКУПКИ.ПЕриод=ВРем.ПЕриод;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗапасыОстатки.Организация КАК Организация,
	ЗапасыОстатки.СтруктурнаяЕдиница КАК Склад,
	ЗапасыОстатки.КоличествоОстаток КАК Количество,
	ВЫБОР
		КОГДА ЗапасыОстатки.ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
			ТОГДА 0
		ИНАЧЕ ЗапасыОстатки.КоличествоОстаток
	КОНЕЦ КАК Резерв,
	ЕСТЬNULL(ВТ_Закупка.ЦенаЗакупки,0) КАК ЦенаЗакупки,
	ЗапасыОстатки.СуммаОстаток КАК Сумма,
	ЗапасыОстатки.Номенклатура КАК Номенклатура,
	ЗапасыОстатки.Характеристика КАК Характеристика,
	ВЫБОР
		КОГДА НЕ ЗапасыОстатки.КоличествоОстаток = 0
			ТОГДА ЗапасыОстатки.СуммаОстаток / ЗапасыОстатки.КоличествоОстаток
		ИНАЧЕ 0
	КОНЕЦ КАК Цена,
	ЗапасыОстатки.ЗаказПокупателя КАК ЗаказПокупателя,
	ЗапасыОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
ИЗ
	РегистрНакопления.Запасы.Остатки КАК ЗапасыОстатки
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Закупка КАК ВТ_Закупка
		ПО (ВТ_Закупка.Номенклатура = ЗапасыОстатки.Номенклатура
		   И ВТ_Закупка.Организация = ЗапасыОстатки.Организация )
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот