СКД. Вывести разницу в процентах между двумя числами
Здравствуйте, подскажите пожалуйста, есть Розница 2.3
Хочу вывести запрос который показывает разницу в ценах между двумя поставщиками
Типа:
Номенклатура / Поставщик1 / Поставщик2
(Булочка) / 50 / 70
и вот хочется видеть разницу в процентах
Номенклатура / Поставщик1 / Поставщик2
(Булочка) / 50 (40) / 70 (-28)
Проблема в чем, не пойму как вычислить разницу когда у тебя одно поле с ценой.
Вот запрос
в правильном направлении рою?
Хочу вывести запрос который показывает разницу в ценах между двумя поставщиками
Типа:
Номенклатура / Поставщик1 / Поставщик2
(Булочка) / 50 / 70
и вот хочется видеть разницу в процентах
Номенклатура / Поставщик1 / Поставщик2
(Булочка) / 50 (40) / 70 (-28)
Проблема в чем, не пойму как вычислить разницу когда у тебя одно поле с ценой.
Вот запрос
ВЫБРАТЬ
мпс_НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
мпс_НоменклатураПоставщиков.Характеристика КАК Характеристика,
мпс_НоменклатураПоставщиков.Цена КАК Цена,
мпс_НоменклатураПоставщиков.Поставщик КАК Поставщик
ИЗ
РегистрСведений.мпс_НоменклатураПоставщиков КАК мпс_НоменклатураПоставщиков
ГДЕ
мпс_НоменклатураПоставщиков.Поставщик = &Поставщик1
СГРУППИРОВАТЬ ПО
мпс_НоменклатураПоставщиков.Характеристика,
мпс_НоменклатураПоставщиков.Номенклатура,
мпс_НоменклатураПоставщиков.Цена,
мпс_НоменклатураПоставщиков.Поставщик
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
мпс_НоменклатураПоставщиков.Номенклатура,
мпс_НоменклатураПоставщиков.Характеристика,
мпс_НоменклатураПоставщиков.Цена,
мпс_НоменклатураПоставщиков.Поставщик
ИЗ
РегистрСведений.мпс_НоменклатураПоставщиков КАК мпс_НоменклатураПоставщиков
ГДЕ
мпс_НоменклатураПоставщиков.Поставщик = &Поставщик2
СГРУППИРОВАТЬ ПО
мпс_НоменклатураПоставщиков.Характеристика,
мпс_НоменклатураПоставщиков.Номенклатура,
мпс_НоменклатураПоставщиков.Цена,
мпс_НоменклатураПоставщиков.Поставщик
Показатьв правильном направлении рою?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) вам нужно соединять, а не объединять.
И зачем в данном случае группировать? Не понятно.
ВЫБРАТЬ
ЕСТЬNULL(мпс_НоменклатураПоставщиков1.Номенклатура, мпс_НоменклатураПоставщиков2.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(мпс_НоменклатураПоставщиков1.Характеристика, мпс_НоменклатураПоставщиков2.Характеристика) КАК Характеристика,
мпс_НоменклатураПоставщиков1.Цена КАК Цена1,
мпс_НоменклатураПоставщиков1.Поставщик КАК Поставщик1,
мпс_НоменклатураПоставщиков2.Цена КАК Цена2,
мпс_НоменклатураПоставщиков2.Поставщик КАК Поставщик2
ИЗ
РегистрСведений.мпс_НоменклатураПоставщиков КАК мпс_НоменклатураПоставщиков1
ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.мпс_НоменклатураПоставщиков КАК мпс_НоменклатураПоставщиков2
ПО мпс_НоменклатураПоставщиков1.Номенклатура = мпс_НоменклатураПоставщиков2.Номенклатура
И мпс_НоменклатураПоставщиков1.Характеристика = мпс_НоменклатураПоставщиков2.Характеристика
И мпс_НоменклатураПоставщиков2.Поставщик = &Поставщик2
ГДЕ
мпс_НоменклатураПоставщиков1.Поставщик = &Поставщик1
ПоказатьИ зачем в данном случае группировать? Не понятно.
(8) хотя... тоже неправильно. так не выйдет номенклатура которой нет по первому поставщику.
Я бы через временные сделал. По типу такого.
Я бы через временные сделал. По типу такого.
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура,
ЕСТЬNULL(СпрХарактеристики.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
ПО СпрНоменклатура.Ссылка = СпрХарактеристики.Владелец
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
ЦеныНоменклатуры.Характеристика КАК Характеристика,
ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
ЦеныНоменклатуры.Цена КАК Цена
ПОМЕСТИТЬ ВТ_ВидЦены1
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.ВидЦены = &ВидЦены1
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
ЦеныНоменклатуры.Характеристика КАК Характеристика,
ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
ЦеныНоменклатуры.Цена КАК Цена
ПОМЕСТИТЬ ВТ_ВидЦены2
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.ВидЦены = &ВидЦены2
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Номенклатура.Номенклатура КАК Номенклатура,
ВТ_Номенклатура.Характеристика КАК Характеристика,
ВТ_ВидЦены1.ВидЦены КАК ВидЦены1,
ВТ_ВидЦены1.Цена КАК Цена1,
ВТ_ВидЦены2.ВидЦены КАК ВидЦены2,
ВТ_ВидЦены2.Цена КАК Цена2
ИЗ
ВТ_Номенклатура КАК ВТ_Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВидЦены1 КАК ВТ_ВидЦены1
ПО ВТ_Номенклатура.Номенклатура = ВТ_ВидЦены1.Номенклатура
И ВТ_Номенклатура.Характеристика = ВТ_ВидЦены1.Характеристика
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВидЦены2 КАК ВТ_ВидЦены2
ПО ВТ_Номенклатура.Номенклатура = ВТ_ВидЦены2.Номенклатура
И ВТ_Номенклатура.Характеристика = ВТ_ВидЦены2.Характеристика
Показать
а что произойдет, когда появится еще один поставщик??
и как определить какой первый, а какой второй?? %))
если все таки есть кокретика поставщиков (явно задан первый и второй), то самый простой вариант через объединение ;))
p.s. код писал от фонаря)) возможно в регистре сведений нужно использовать срез последних
а еще в СКД есть ресурсы, где можно помучаться прописать, чтобы отнимал предыдущее и следующее значение, но там нужно хорошо помучаться)))
и как определить какой первый, а какой второй?? %))
если все таки есть кокретика поставщиков (явно задан первый и второй), то самый простой вариант через объединение ;))
ВЫБРАТЬ
Номенклатура,
Характеристика
СУММА(ЦенаРазницаПоставщик1),
СУММА(ЦенаРазницаПоставщик2)
ИЗ
(ВЫБРАТЬ
Номенклатура,
Характеристика,
Цена КАК ЦенаРазницаПоставщик1,
-Цена КАК ЦенаРазницаПоставшик2
ИЗ
РегистрСведений.мпс_НоменклатураПоставщиков
ГДЕ Контрагент = &Поставщик1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Номенклатура,
Характеристика,
-Цена КАК ЦенаРазницаПоставщик1,
Цена КАК ЦенаРазницаПоставшик2
ИЗ
РегистрСведений.мпс_НоменклатураПоставщиков
ГДЕ Контрагент = &Поставщик2) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
Номенклатура,
Характеристика
Показатьp.s. код писал от фонаря)) возможно в регистре сведений нужно использовать срез последних
а еще в СКД есть ресурсы, где можно помучаться прописать, чтобы отнимал предыдущее и следующее значение, но там нужно хорошо помучаться)))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот