Здравствуйте, помогите пожалуйста решить такую задачку: есть регистр сведений ЦеныНоменклатурыПоставщиков, мне нужно получить последние цены на все товары. Я делаю так:
Проблема в том, что строк в результате выполнения запроса с одним товаром может быть несколько, связано это с тем, как я понял, что в регистре отличаются значения измерений(таких как "Поставщик" и т.д.) В итоге я получаю что-то типа такого:
НазваниеТовара 100р.
НазваниеТовара 100р.
НазваниеТовара 120р.
Как сделать так, чтобы выбиралась только последняя цена на текущий момент, без учета остальных измерений?
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК ЦенаЗакупки,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
ПОМЕСТИТЬ ЦЕНЫЗАКУПКИ
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
;
Проблема в том, что строк в результате выполнения запроса с одним товаром может быть несколько, связано это с тем, как я понял, что в регистре отличаются значения измерений(таких как "Поставщик" и т.д.) В итоге я получаю что-то типа такого:
НазваниеТовара 100р.
НазваниеТовара 100р.
НазваниеТовара 120р.
Как сделать так, чтобы выбиралась только последняя цена на текущий момент, без учета остальных измерений?
По теме из базы знаний
- Валовая прибыль от типа цены закупки
- Мониторинг цен закупки / цен продаж и наценки для Управления Торговлей 11 (все), ERP 2, КА 2, Розница 2, УНФ 1.6/3.0
- Поиск самых прибыльных и не прибыльных при продаже товаров в 1С:Розница 2.х
- Ценообразование. Установка, проверка и исправление цен. Контроль минимальной цены. 1С 7.7
- Заполнение плана закупки по планам многопередельного производства для КА 2
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)Сделал так:
Результат не изменился, выгребает несколько разных цен от разных поставщиков(
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК ЦенаЗакупки,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ЦЕНЫЗАКУПКИ
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&ДатаКонца, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
;
ПоказатьРезультат не изменился, выгребает несколько разных цен от разных поставщиков(
(9)(7) Вот весь код запроса:
Вот что находится в регистре:
Мне нужна только цена которая выделена красной рамкой, она последняя, а получаю я 2 цены, ту которая мне нужна и последнюю по второму партнеру...
Как обойти?
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК ЦенаЗакупки,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ЦЕНЫЗАКУПКИ
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&ДатаКонца, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
ПоказатьВот что находится в регистре:
Мне нужна только цена которая выделена красной рамкой, она последняя, а получаю я 2 цены, ту которая мне нужна и последнюю по второму партнеру...
Как обойти?
Прикрепленные файлы:
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ЦЕНЫЗАКУПКИ
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&ДатаКонца, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура;
Выбрать вт.Номенклатура, вт.Период, Максимум(Срез.ЦенаЗакупки) из ЦЕНЫЗАКУПКИ как вт
Левое соединение РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&ДатаКонца, ) как Срез
по Срез.Номенклатыра=вт.Номенклатура и Срез.Период=вт.Период
Сгруппировать по вт.Номенклатура, вт.Период
ПоказатьГруппировка во втором запросе на случай, если в один период установлены цены для двух поставщиков. Обычно так не делают, но конфигурация не озвучена, а в разного рода самоделках возможно все.
(10) нет, там цена не в один момент времени. Дело именно в разных поставщиках... посмотрите содержимое регистра
Мне нужна только цена которая выделена красной рамкой, она последняя, а получаю я 2 цены, ту которая мне нужна и последнюю по второму партнеру...
Как обойти?
Мне нужна только цена которая выделена красной рамкой, она последняя, а получаю я 2 цены, ту которая мне нужна и последнюю по второму партнеру...
Как обойти?
Прикрепленные файлы:
(18)Вы мои комментарии читали?
Если, как утверждает автор, разные поставщики устанавливаются разными документами, этот Максимум рояля не играет.
(19)Этого не может быть, вы опять что-то забыли или не там проверяете. Но я не телепат и без наличия кода указать ошибку не могу
Группировка во втором запросе на случай, если в один период установлены цены для двух поставщиков. Обычно так не делают, но конфигурация не озвучена, а в разного рода самоделках возможно все.
Если, как утверждает автор, разные поставщики устанавливаются разными документами, этот Максимум рояля не играет.
(19)Этого не может быть, вы опять что-то забыли или не там проверяете. Но я не телепат и без наличия кода указать ошибку не могу
(33)Автору нужна последняя цена по неполному набору измерений. Вот для того, чтобы исключить задвоение в одном периоде по неучитываемым измерениям я и сделала группировку. Любой агрегатной функцией. Как именно отсекать дубли в этом случае, решать автору, я лишь указала направление.
(21) Вот, со связью по периоду, никаких изменений(
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Цена
|ПОМЕСТИТЬ ВСЕЦЕНЫ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
| МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
|ПОМЕСТИТЬ ЦЕНЫСМАКСПЕРИОДОМ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВСЕЦЕНЫ.Номенклатура КАК Номенклатура,
| ВСЕЦЕНЫ.Цена
|ИЗ
| ВСЕЦЕНЫ КАК ВСЕЦЕНЫ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦЕНЫСМАКСПЕРИОДОМ КАК ЦЕНЫСМАКСПЕРИОДОМ
| ПО ВСЕЦЕНЫ.Номенклатура = ЦЕНЫСМАКСПЕРИОДОМ.Номенклатура
| И ВСЕЦЕНЫ.Период = ЦЕНЫСМАКСПЕРИОДОМ.Период
|
|УПОРЯДОЧИТЬ ПО
| ВСЕЦЕНЫ.Номенклатура.Наименование";
Показать
Можете пример запроса показать, пожалуйста(
(27)
Запрос:
Прикрепляю два файла, один из них скрин регистра, второй скрин ТЗ в которую я выгружаю результат работы запроса.
(27)
Запрос:
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Цена
|ПОМЕСТИТЬ ВСЕЦЕНЫ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
| МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
|ПОМЕСТИТЬ ЦЕНЫСМАКСПЕРИОДОМ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВСЕЦЕНЫ.Номенклатура КАК Номенклатура,
| ВСЕЦЕНЫ.Цена
|ИЗ
| ВСЕЦЕНЫ КАК ВСЕЦЕНЫ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦЕНЫСМАКСПЕРИОДОМ КАК ЦЕНЫСМАКСПЕРИОДОМ
| ПО ВСЕЦЕНЫ.Номенклатура = ЦЕНЫСМАКСПЕРИОДОМ.Номенклатура
| И ВСЕЦЕНЫ.Период = ЦЕНЫСМАКСПЕРИОДОМ.Период
|
|УПОРЯДОЧИТЬ ПО
| ВСЕЦЕНЫ.Номенклатура.Наименование";
ПоказатьПрикрепляю два файла, один из них скрин регистра, второй скрин ТЗ в которую я выгружаю результат работы запроса.
Прикрепленные файлы:
(29) да, вы правы, вывел в ТЗ ещё и код, оказалось что это разные товары))
Запрос переписал так:
Запрос переписал так:
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
|ПОМЕСТИТЬ МАКСПЕРИОДЫ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Цена,
| МАКСПЕРИОДЫ.Номенклатура,
| МАКСПЕРИОДЫ.Номенклатура.Код
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ МАКСПЕРИОДЫ КАК МАКСПЕРИОДЫ
| ПО ЦеныНоменклатурыПоставщиковСрезПоследних.Период = МАКСПЕРИОДЫ.Период
| И ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура = МАКСПЕРИОДЫ.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| МАКСПЕРИОДЫ.Номенклатура.Наименование";
Показать
(39) почему маловероятным? не знаю как в УТ, а вообще цены поставщиком могут регистрироваться автоматом при проведении первичных поступлений тмц, и если два разных поступления с одной тмц будут иметь одинаковые даты_время то получим тот самый маловероятный случай. Прежде чем править запрос надо ответить на вопрос - в этом маловероятном случае какую цену брать?
(14) почему-то на сайт не загружалась, решил так добавить, извиняюсь.
Попробовал так, тоже ничего не получается(
Попробовал так, тоже ничего не получается(
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Цена
|ПОМЕСТИТЬ ВСЕЦЕНЫ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
| МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
|ПОМЕСТИТЬ ЦЕНЫСМАКСПЕРИОДОМ
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВСЕЦЕНЫ.Номенклатура,
| ВСЕЦЕНЫ.Цена
|ИЗ
| ВСЕЦЕНЫ КАК ВСЕЦЕНЫ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦЕНЫСМАКСПЕРИОДОМ КАК ЦЕНЫСМАКСПЕРИОДОМ
| ПО ВСЕЦЕНЫ.Номенклатура = ЦЕНЫСМАКСПЕРИОДОМ.Номенклатура";
Показать
Как получить последнюю цену закупа - понятно. А если продукция не закупается, а производится и потом заносится документом "Поступление из производства" с указанием вида цен - Закупочная (УТ 11.4)? как получить последнюю цену себестоимости? В регистрах Цены номенклатуры и Цены номенклатуры поставщиков ее нет. Из документа брать цену вроде как не хорошо
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот