Загрузка данных


//++Варнин А.А. Задача №72300 — цены по установкам без приобретений (fallback)
// Правки к ТекстЗапросаЦены() и СформироватьТаблицуЦен()

// ============================================================================
// 1. НОВЫЙ ПАКЕТ. Вставить СРАЗУ ПОСЛЕ ВТ_ПоследняяЦена (до ВТ_ДопРеквизиты)
// ============================================================================

|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|	ЦеныСрез.Номенклатура КАК Номенклатура,
|	ЦеныСрез.Цена КАК Цена,
|	ВЫБОР
|		КОГДА Ном.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС22) ТОГДА 22
|		КОГДА Ном.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 20
|		КОГДА Ном.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) ТОГДА 18
|		КОГДА Ном.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 10
|		ИНАЧЕ 0
|	КОНЕЦ КАК СтавкаНДС
|ПОМЕСТИТЬ ВТ_ЦеныБезПриобретений
|ИЗ
|	РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦены) КАК ЦеныСрез
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НоменклатураКРасчету КАК ВТ_Номенклатура
|		ПО ЦеныСрез.Номенклатура = ВТ_Номенклатура.Номенклатура
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Ном
|		ПО ЦеныСрез.Номенклатура = Ном.Ссылка
|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СредняяЦена КАК ВТ_СредняяЦена
|		ПО ЦеныСрез.Номенклатура = ВТ_СредняяЦена.Номенклатура
|ГДЕ
|	ВТ_СредняяЦена.Номенклатура ЕСТЬ NULL
|	И ЦеныСрез.Цена > 0
|	И НЕ Ном.ПометкаУдаления
|
|ИНДЕКСИРОВАТЬ ПО
|	Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|	ВТ_СредняяЦена.Номенклатура КАК Номенклатура,
|	ВТ_СредняяЦена.СредняяЦена КАК СредняяБезНДС,
|	ВТ_СредняяЦена.СредняяЦенаСНДС КАК СредняяСНДС,
|	ВТ_ПоследняяЦена.ТекущаяЦенаБезНДС КАК ПоследняяБезНДС,
|	ВТ_ПоследняяЦена.ТекущаяЦенаСНДС КАК ПоследняяСНДС,
|	ВТ_СредняяЦена.КоличествоДокументов КАК КоличествоДокументов,
|	ВЫРАЗИТЬ("purchase" КАК СТРОКА(10)) КАК Источник
|ПОМЕСТИТЬ ВТ_ИтоговыеЦены
|ИЗ
|	ВТ_СредняяЦена КАК ВТ_СредняяЦена
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследняяЦена КАК ВТ_ПоследняяЦена
|		ПО ВТ_СредняяЦена.Номенклатура = ВТ_ПоследняяЦена.Номенклатура
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|	ВТ_Цены.Номенклатура,
|	ВЫБОР
|		КОГДА &ЦенаВключаетНДС
|			ТОГДА ВТ_Цены.Цена * 100 / (100 + ВТ_Цены.СтавкаНДС)
|		ИНАЧЕ ВТ_Цены.Цена
|	КОНЕЦ,
|	ВЫБОР
|		КОГДА &ЦенаВключаетНДС
|			ТОГДА ВТ_Цены.Цена
|		ИНАЧЕ ВТ_Цены.Цена * (100 + ВТ_Цены.СтавкаНДС) / 100
|	КОНЕЦ,
|	ВЫБОР
|		КОГДА &ЦенаВключаетНДС
|			ТОГДА ВТ_Цены.Цена * 100 / (100 + ВТ_Цены.СтавкаНДС)
|		ИНАЧЕ ВТ_Цены.Цена
|	КОНЕЦ,
|	ВЫБОР
|		КОГДА &ЦенаВключаетНДС
|			ТОГДА ВТ_Цены.Цена
|		ИНАЧЕ ВТ_Цены.Цена * (100 + ВТ_Цены.СтавкаНДС) / 100
|	КОНЕЦ,
|	0,
|	ВЫРАЗИТЬ("manual" КАК СТРОКА(10))
|ИЗ
|	ВТ_ЦеныБезПриобретений КАК ВТ_Цены
|
|ИНДЕКСИРОВАТЬ ПО
|	Номенклатура
|;
|

// ============================================================================
// 2. ФИНАЛЬНЫЙ ЗАПРОС ЦЕН — заменить целиком (был: ИЗ ВТ_СредняяЦена ... )
// ============================================================================

|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|	ПРЕДСТАВЛЕНИЕ(Ном.Марка) КАК Марка,
|	Ном.Артикул КАК Артикул,
|	ЕСТЬNULL(ВТ_ДопРеквизиты.АртикулМаркетплейса, """") КАК АртикулМаркетплейса,
|	Ном.Код КАК Код,
|	ЕСТЬNULL(ВТ_ДопРеквизиты.OEMНомер, """") КАК OEMНомер,
|	Ном.Ссылка КАК Номенклатура,
|	ПРЕДСТАВЛЕНИЕ(Ном.Ссылка) КАК Наименование,
|	ВТ_ИтоговыеЦены.ПоследняяБезНДС КАК ЦенаБезНДС,
|	ВТ_ИтоговыеЦены.СредняяБезНДС КАК СредняяЦенаБезНДС,
|	ВТ_ИтоговыеЦены.ПоследняяСНДС КАК Цена,
|	ВТ_ИтоговыеЦены.СредняяСНДС КАК СредняяЦена,
|	ВТ_ИтоговыеЦены.КоличествоДокументов КАК КоличествоДокументов,
|	ВТ_ИтоговыеЦены.Источник КАК Источник
|ИЗ
|	ВТ_ИтоговыеЦены КАК ВТ_ИтоговыеЦены
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Ном
|		ПО ВТ_ИтоговыеЦены.Номенклатура = Ном.Ссылка
|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДопРеквизиты КАК ВТ_ДопРеквизиты
|		ПО ВТ_ИтоговыеЦены.Номенклатура = ВТ_ДопРеквизиты.Номенклатура
|ГДЕ
|	НЕ Ном.ПометкаУдаления
|	И ВТ_ИтоговыеЦены.СредняяСНДС > 0
|	И НЕ ВРЕГ(Ном.Наименование) ПОДОБНО &МаскаНоменклатуры
|	И НЕ ВРЕГ(Ном.Артикул) ПОДОБНО &МаскаНоменклатуры
|	И Ном.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор)
|
|УПОРЯДОЧИТЬ ПО
|	Код
|;

// ============================================================================
// 3. СформироватьТаблицуЦен() — новые параметры
// ============================================================================

	Запрос.УстановитьПараметр("ЦенаВключаетНДС", ВидЦены.ЦенаВключаетНДС);
	Запрос.УстановитьПараметр("МаскаНоменклатуры", "%НЕ ИСПОЛЬЗОВАТЬ%");   // ВРЕГ в запросе

// ============================================================================
// 4. ДополнитьЦенамиНаборов() — источник для наборов
// ============================================================================

	// после ЗаполнитьЗначенияСвойств(НоваяСтрока, РеквизитыНаборов[Набор]);
	НоваяСтрока.Источник = "set";

	// и не добавлять набор вовсе, если хоть один компонент без цены:
	// в ветке Иначе вместо обнуления итогов — флаг ЕстьПробел = Истина; Прервать;
	// затем: Если ЕстьПробел Тогда Продолжить; КонецЕсли;

// ============================================================================
// 5. СформироватьОтправитьВKafka() — признак источника в сообщение
// ============================================================================

	Элемент.Вставить("price_source", СокрЛП(СтрЦена.Источник));