СКД. Вывести разницу в процентах между двумя числами

1. user606894_schana1w3 21.06.21 14:16 Сейчас в теме
Здравствуйте, подскажите пожалуйста, есть Розница 2.3

Хочу вывести запрос который показывает разницу в ценах между двумя поставщиками

Типа:

Номенклатура / Поставщик1 / Поставщик2
(Булочка) / 50 / 70

и вот хочется видеть разницу в процентах

Номенклатура / Поставщик1 / Поставщик2
(Булочка) / 50 (40) / 70 (-28)

Проблема в чем, не пойму как вычислить разницу когда у тебя одно поле с ценой.

Вот запрос

ВЫБРАТЬ
	мпс_НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
	мпс_НоменклатураПоставщиков.Характеристика КАК Характеристика,
	мпс_НоменклатураПоставщиков.Цена КАК Цена,
	мпс_НоменклатураПоставщиков.Поставщик КАК Поставщик
ИЗ
	РегистрСведений.мпс_НоменклатураПоставщиков КАК мпс_НоменклатураПоставщиков
ГДЕ
	мпс_НоменклатураПоставщиков.Поставщик = &Поставщик1

СГРУППИРОВАТЬ ПО
	мпс_НоменклатураПоставщиков.Характеристика,
	мпс_НоменклатураПоставщиков.Номенклатура,
	мпс_НоменклатураПоставщиков.Цена,
	мпс_НоменклатураПоставщиков.Поставщик

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	мпс_НоменклатураПоставщиков.Номенклатура,
	мпс_НоменклатураПоставщиков.Характеристика,
	мпс_НоменклатураПоставщиков.Цена,
	мпс_НоменклатураПоставщиков.Поставщик
ИЗ
	РегистрСведений.мпс_НоменклатураПоставщиков КАК мпс_НоменклатураПоставщиков
ГДЕ
	мпс_НоменклатураПоставщиков.Поставщик = &Поставщик2

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


в правильном направлении рою?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 21.06.21 14:22 Сейчас в теме
(1) тут напрашивается использование вычисляемого поля.
5. user606894_schana1w3 21.06.21 15:16 Сейчас в теме
(2)а как сделать? мы видим 1 цену, а другую цену только когда сформируем отчет, как мне вычислить разницу когда в итоге у меня 1 цена.
7. spacecraft 21.06.21 15:19 Сейчас в теме
(5) на закладке Ресурсы указываем нужную формулу расчета. При группировке по номенклатуре будет все выводить.
3. EVKash 15 21.06.21 14:44 Сейчас в теме
(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
Показать

И зачем в данном случае группировать? Не понятно.
4. user606894_schana1w3 21.06.21 15:15 Сейчас в теме
(3)
нклатураПоставщиков1.Поставщик = &Поставщик2


он при таком соединении выводит только по 1 или по 2-ому поставщику, не обоих.
6. EVKash 15 21.06.21 15:17 Сейчас в теме
(4) очепятка была. конечно должно быть И мпс_НоменклатураПоставщиков2.Поставщик = &Поставщик2
8. user606894_schana1w3 21.06.21 15:49 Сейчас в теме
(6)Это понятно, результат тотже
9. EVKash 15 21.06.21 16:00 Сейчас в теме
(8) тот-же это какой? Вот только что проверил.
проверял на периодическом РС, поэтому срез последних.
Прикрепленные файлы:
10. EVKash 15 21.06.21 16:41 Сейчас в теме
(8) хотя... тоже неправильно. так не выйдет номенклатура которой нет по первому поставщику.
Я бы через временные сделал. По типу такого.
ВЫБРАТЬ
	СпрНоменклатура.Ссылка КАК Номенклатура,
	ЕСТЬNULL(СпрХарактеристики.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
	Справочник.Номенклатура КАК СпрНоменклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
		ПО СпрНоменклатура.Ссылка = СпрХарактеристики.Владелец
ГДЕ
	НЕ СпрНоменклатура.ЭтоГруппа
;

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Номенклатура.Номенклатура КАК Номенклатура,
	ВТ_Номенклатура.Характеристика КАК Характеристика,
	ВТ_ВидЦены1.ВидЦены КАК ВидЦены1,
	ВТ_ВидЦены1.Цена КАК Цена1,
	ВТ_ВидЦены2.ВидЦены КАК ВидЦены2,
	ВТ_ВидЦены2.Цена КАК Цена2
ИЗ
	ВТ_Номенклатура КАК ВТ_Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВидЦены1 КАК ВТ_ВидЦены1
		ПО ВТ_Номенклатура.Номенклатура = ВТ_ВидЦены1.Номенклатура
			И ВТ_Номенклатура.Характеристика = ВТ_ВидЦены1.Характеристика
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВидЦены2 КАК ВТ_ВидЦены2
		ПО ВТ_Номенклатура.Номенклатура = ВТ_ВидЦены2.Номенклатура
			И ВТ_Номенклатура.Характеристика = ВТ_ВидЦены2.Характеристика
Показать
11. Dr.HiHi 3 21.06.21 17:39 Сейчас в теме
а что произойдет, когда появится еще один поставщик??
и как определить какой первый, а какой второй?? %))

если все таки есть кокретика поставщиков (явно задан первый и второй), то самый простой вариант через объединение ;))

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


p.s. код писал от фонаря)) возможно в регистре сведений нужно использовать срез последних

а еще в СКД есть ресурсы, где можно помучаться прописать, чтобы отнимал предыдущее и следующее значение, но там нужно хорошо помучаться)))
Оставьте свое сообщение

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