Срез последних цен без учета характеристики номенклатуры

1. user761098 22.05.19 12:09 Сейчас в теме
Добрый день! Подскажите как сделать срез последних в запросе без учета характеристики, чтоб выводились последние цены по видам цен. Первый скрин как есть изначально, второй скрин как нужно.
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ksen 22.05.19 12:13 Сейчас в теме
(1) А зачем в запросе тащить характеристику если она не нужна? Попробуйте убрать её из запроса и сгруппировать по номенклатуре и виду цен.
3. user761098 22.05.19 12:17 Сейчас в теме
(2) Характеристику выбрала, чтоб показать, что они разные. Если её убрать и группировать, все равно результат не тот.
Прикрепленные файлы:
8. ErshKUS 2 22.05.19 12:24 Сейчас в теме
(3) По цене не нужно сгруппировывать, её нужно считать
ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.ТипЦен,
	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	СРЕДНЕЕ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних

СГРУППИРОВАТЬ ПО
	ЦеныНоменклатурыСрезПоследних.ТипЦен,
	ЦеныНоменклатурыСрезПоследних.Номенклатура
Показать

в этом примере выведено среднее значение. Можете максимум, минимум на свой вкус
9. ksen 22.05.19 12:38 Сейчас в теме
(3)Не уверен, нужно проверять. Попробуйте сгруппировать по наименованию или артикулу, если они уникальные, если не поможет то надо будет писать вложенный запрос или играться с условиями.
4. ErshKUS 2 22.05.19 12:18 Сейчас в теме
(1) Сразу вопрос, что делать если у двух характеристик в одной номенклатуре разные цены? взять максимум, минимум, среднее,... ?
5. ErshKUS 2 22.05.19 12:19 Сейчас в теме
Напишите ваше сообщение
(4) + как у тест1 Розничные. Взять минимум?
6. user761098 22.05.19 12:20 Сейчас в теме
(4) Мне характеристики не важны. Нужно взять последние цены по видам цен.
7. ErshKUS 2 22.05.19 12:24 Сейчас в теме
(6) эти характеристики обе последние. Хотя конечно если пройтись по регистру можно найти что какая то из них была днем раньше, но могут быть и в один день (момент времени), что тогда?
12. ksen 22.05.19 13:34 Сейчас в теме
(6)Можете показать вывод запроса
ВЫБРАТЬ
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура,
	МАКСИМУМ(ЦеныНоменклатуры.Регистратор.Дата) КАК РегистраторДата

Нет базы с использованием характеристик чтобы проверить

Если он выдаст всего 2 даты по 1 номенклатуре на примере выше то просто сцепите полученный результат с еще запросом через поля номенклатура и ЦеныНоменклатуры.Регистратор.Дата)
13. user761098 22.05.19 13:50 Сейчас в теме
(12) Результат такой же, как в (3)
15. ksen 22.05.19 13:51 Сейчас в теме
(13)Даже если цену не тащить? только с Номенклатурой, датой и типом цен?
А если просто достать Номенклатуру из справочнику по артикулу или наименованию он её тоже разделит на 2 по характеристикам?
16. user761098 22.05.19 13:54 Сейчас в теме
(15) Так, без цены 2 строчки. Сейчас попробую сцепить с ценами.
17. ksen 22.05.19 14:00 Сейчас в теме
(16)Только цепляйте по 2 полям, номенклатуре и дате. Должно сработать, разве что не оптимальный запрос, но как сделать лучше я пока не знаю.
Разве что брать так же из среза последних без максимума, не должно делить по характеристикам.
19. ErshKUS 2 22.05.19 14:07 Сейчас в теме
(12) тоже не поможет, разные характеристики могут быть залиты одним доком, даже так чаще и происходит
21. ksen 22.05.19 17:31 Сейчас в теме
(19)Ну а на этом шаге уже можно брать среднее/макс/мин на макс дату, если есть такие ситуации.
22. ErshKUS 2 22.05.19 18:05 Сейчас в теме
(21) вроде в (20) должно сработать, я просто уже на максимум звязал их, чтобы дублей не было
11. ErshKUS 2 22.05.19 13:05 Сейчас в теме
(1) Ну или вот такой запрос, но всё равно нужна защита от разных характеристик одной датой

ВЫБРАТЬ
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура,
	МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
ПОМЕСТИТЬ ВТ_СрезДат
ИЗ
	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
	ЦеныНоменклатуры.Активность

СГРУППИРОВАТЬ ПО
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура,
	СРЕДНЕЕ(ЦеныНоменклатуры.Цена) КАК Цена
ИЗ
	ВТ_СрезДат КАК ВТ_СрезДат
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО ВТ_СрезДат.ТипЦен = ЦеныНоменклатуры.ТипЦен
			И ВТ_СрезДат.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И ВТ_СрезДат.Период = ЦеныНоменклатуры.Период

СГРУППИРОВАТЬ ПО
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура
Показать
14. user761098 22.05.19 13:51 Сейчас в теме
(11) Результат не тот, какой нужен был. Видимо без характеристик никак. Спасибо за помощь.
18. ErshKUS 2 22.05.19 14:00 Сейчас в теме
(14) так ты(вы) опишите подробнее что хотелось. Тут большая проблема что делать с несколькими характеристиками в одну дату. Конечно если не ограничиваться только запросом, то можно через код взять первых (допустим через обход группировок), хотя и в запросе такое можно исхитрится наверно.
НО есть шанс, при таком подходе (взяв просто первую запись), получать при каждом запросе разные данные. Дело в том что если нет сортировки, то скуль может порядок строк в выборке изменить.
20. ErshKUS 2 22.05.19 14:11 Сейчас в теме
(1) попробуйте такой вариант
ВЫБРАТЬ
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура,
	МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
	ЦеныНоменклатуры.Регистратор.Дата,
	ЦеныНоменклатуры.НомерСтроки
ПОМЕСТИТЬ ВТ_СрезДат
ИЗ
	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
	ЦеныНоменклатуры.Активность

СГРУППИРОВАТЬ ПО
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура,
	ЦеныНоменклатуры.Регистратор.Дата,
	ЦеныНоменклатуры.НомерСтроки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатуры.ТипЦен,
	ЦеныНоменклатуры.Номенклатура,
	ЦеныНоменклатуры.Цена КАК Цена
ИЗ
	ВТ_СрезДат КАК ВТ_СрезДат
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО ВТ_СрезДат.ТипЦен = ЦеныНоменклатуры.ТипЦен
			И ВТ_СрезДат.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И ВТ_СрезДат.Период = ЦеныНоменклатуры.Период
			И ВТ_СрезДат.РегистраторДата = ЦеныНоменклатуры.Регистратор.Дата
			И ВТ_СрезДат.НомерСтроки = ЦеныНоменклатуры.НомерСтроки
Показать
10. SGordon1 22.05.19 12:49 Сейчас в теме
А программно найти последнию цену по виду цен и номенклатуре, а затем ее вывести - прокатит?
23. shastin87 9 23.12.21 17:09 Сейчас в теме
Стандартная задача. Делаю так:

ВЫБРАТЬ
ВидыЦен.Ссылка КАК ВидЦены
ПОМЕСТИТЬ ВТ_ВидЦены
ИЗ
Справочник.ВидыЦен КАК ВидыЦен
ГДЕ
ВидыЦен.Наименование = "Закупочная"
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
МАКСИМУМ(ВТ_Цены.Период) КАК Период,
ВТ_Цены.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_МаксПериод
ИЗ
ВТ_Цены КАК ВТ_Цены

СГРУППИРОВАТЬ ПО
ВТ_Цены.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ВТ_Цены.ЦенаЗакупа КАК ЦенаЗакупа,
ВТ_Цены.Номенклатура КАК Номенклатура
ИЗ
ВТ_Цены КАК ВТ_Цены
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаксПериод КАК ВТ_МаксПериод
ПО ВТ_Цены.Период = ВТ_МаксПериод.Период
И ВТ_Цены.Номенклатура = ВТ_МаксПериод.Номенклатура
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)