Загрузка данных
//++Варнин А.А. Задача №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", СокрЛП(СтрЦена.Источник));