Срез последних цен без учета характеристики номенклатуры
По теме из базы знаний
- Согласование цен по заказу
- Как установить цену у сборки товаров в 1С: Розница
- Организация функционала наценок по позициям либо сегментам номенклатуры в УТ 11.4
- Формирование сегментов номенклатуры по проценту наценки в 1С: Розница 2.3
- Новый функционал документа "Заказ клиента". Учет цен конкурентов и не удовлетворенного спроса для ERP 2.5
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) По цене не нужно сгруппировывать, её нужно считать
в этом примере выведено среднее значение. Можете максимум, минимум на свой вкус
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
СРЕДНЕЕ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Номенклатура
Показатьв этом примере выведено среднее значение. Можете максимум, минимум на свой вкус
(6)Можете показать вывод запроса
Нет базы с использованием характеристик чтобы проверить
Если он выдаст всего 2 даты по 1 номенклатуре на примере выше то просто сцепите полученный результат с еще запросом через поля номенклатура и ЦеныНоменклатуры.Регистратор.Дата)
ВЫБРАТЬ
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура,
МАКСИМУМ(ЦеныНоменклатуры.Регистратор.Дата) КАК РегистраторДата
Нет базы с использованием характеристик чтобы проверить
Если он выдаст всего 2 даты по 1 номенклатуре на примере выше то просто сцепите полученный результат с еще запросом через поля номенклатура и ЦеныНоменклатуры.Регистратор.Дата)
(1) Ну или вот такой запрос, но всё равно нужна защита от разных характеристик одной датой
ВЫБРАТЬ
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура,
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
ПОМЕСТИТЬ ВТ_СрезДат
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Активность
СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура,
СРЕДНЕЕ(ЦеныНоменклатуры.Цена) КАК Цена
ИЗ
ВТ_СрезДат КАК ВТ_СрезДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_СрезДат.ТипЦен = ЦеныНоменклатуры.ТипЦен
И ВТ_СрезДат.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ВТ_СрезДат.Период = ЦеныНоменклатуры.Период
СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура
Показать
(14) так ты(вы) опишите подробнее что хотелось. Тут большая проблема что делать с несколькими характеристиками в одну дату. Конечно если не ограничиваться только запросом, то можно через код взять первых (допустим через обход группировок), хотя и в запросе такое можно исхитрится наверно.
НО есть шанс, при таком подходе (взяв просто первую запись), получать при каждом запросе разные данные. Дело в том что если нет сортировки, то скуль может порядок строк в выборке изменить.
НО есть шанс, при таком подходе (взяв просто первую запись), получать при каждом запросе разные данные. Дело в том что если нет сортировки, то скуль может порядок строк в выборке изменить.
(1) попробуйте такой вариант
ВЫБРАТЬ
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура,
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
ЦеныНоменклатуры.Регистратор.Дата,
ЦеныНоменклатуры.НомерСтроки
ПОМЕСТИТЬ ВТ_СрезДат
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Активность
СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Регистратор.Дата,
ЦеныНоменклатуры.НомерСтроки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.ТипЦен,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена КАК Цена
ИЗ
ВТ_СрезДат КАК ВТ_СрезДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_СрезДат.ТипЦен = ЦеныНоменклатуры.ТипЦен
И ВТ_СрезДат.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ВТ_СрезДат.Период = ЦеныНоменклатуры.Период
И ВТ_СрезДат.РегистраторДата = ЦеныНоменклатуры.Регистратор.Дата
И ВТ_СрезДат.НомерСтроки = ЦеныНоменклатуры.НомерСтроки
Показать
Стандартная задача. Делаю так:
ВЫБРАТЬ
ВидыЦен.Ссылка КАК ВидЦены
ПОМЕСТИТЬ ВТ_ВидЦены
ИЗ
Справочник.ВидыЦен КАК ВидыЦен
ГДЕ
ВидыЦен.Наименование = "Закупочная"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
ИНАЧЕ ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка.Коэффициент = 0
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.Упаковка.Коэффициент
КОНЕЦ
КОНЕЦ КАК ЦенаЗакупа,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
ЦеныНоменклатурыСрезПоследних.Период КАК Период
ПОМЕСТИТЬ ВТ_Цены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
,
ВидЦены В
(ВЫБРАТЬ
Вид.ВидЦены
ИЗ
ВТ_ВидЦены КАК Вид)) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура В(&Номенклатура)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
МАКСИМУМ(ВТ_Цены.Период) КАК Период,
ВТ_Цены.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_МаксПериод
ИЗ
ВТ_Цены КАК ВТ_Цены
СГРУППИРОВАТЬ ПО
ВТ_Цены.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Цены.ЦенаЗакупа КАК ЦенаЗакупа,
ВТ_Цены.Номенклатура КАК Номенклатура
ИЗ
ВТ_Цены КАК ВТ_Цены
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаксПериод КАК ВТ_МаксПериод
ПО ВТ_Цены.Период = ВТ_МаксПериод.Период
И ВТ_Цены.Номенклатура = ВТ_МаксПериод.Номенклатура
ВЫБРАТЬ
ВидыЦен.Ссылка КАК ВидЦены
ПОМЕСТИТЬ ВТ_ВидЦены
ИЗ
Справочник.ВидыЦен КАК ВидыЦен
ГДЕ
ВидыЦен.Наименование = "Закупочная"
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
ИНАЧЕ ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка.Коэффициент = 0
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.Упаковка.Коэффициент
КОНЕЦ
КОНЕЦ КАК ЦенаЗакупа,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
ЦеныНоменклатурыСрезПоследних.Период КАК Период
ПОМЕСТИТЬ ВТ_Цены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
,
ВидЦены В
(ВЫБРАТЬ
Вид.ВидЦены
ИЗ
ВТ_ВидЦены КАК Вид)) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура В(&Номенклатура)
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(ВТ_Цены.Период) КАК Период,
ВТ_Цены.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_МаксПериод
ИЗ
ВТ_Цены КАК ВТ_Цены
СГРУППИРОВАТЬ ПО
ВТ_Цены.Номенклатура
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Цены.ЦенаЗакупа КАК ЦенаЗакупа,
ВТ_Цены.Номенклатура КАК Номенклатура
ИЗ
ВТ_Цены КАК ВТ_Цены
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаксПериод КАК ВТ_МаксПериод
ПО ВТ_Цены.Период = ВТ_МаксПериод.Период
И ВТ_Цены.Номенклатура = ВТ_МаксПериод.Номенклатура
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот