Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 23:59

1С Розница для Беларуси 2.1.6.1. РЕШЕНИЕ ПРОБЛЕМЫ с накопительными скидками за весь период

Автор CARtMEN, 18 мая 2016, 19:47

0 Пользователей и 1 гость просматривают эту тему.

CARtMEN

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

В общем пришлось перелопатить код. А оказалось все до боли банально. Какой-то программист не смог правильно посчитать количество таблиц в запросе.

В общем модуле "СкидкиНаценкиСервер" есть функция "ТекстЗапросаСкидкаЗаНакопленныйОбъемПродажПоДисконтнойКартеЗаПериод". В коде я пометил места ошибок строкой "//%".

Функция ТекстЗапросаСкидкаЗаНакопленныйОбъемПродажПоДисконтнойКартеЗаПериод(ПакетЗапросов, УсловиеПредоставления, ДатаНачала, ДатаОкончания)

Сегмент = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УсловиеПредоставления, "СегментНоменклатурыОграничения");

Если ЗначениеЗаполнено(Сегмент) Тогда

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

//% Из-за этого не работали накопительные скидки
//ВсегоЗапросов = 8;
ВсегоЗапросов = 9;
НомерТаблицыРезультата = 5;

Иначе

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

//% Из-за этого не работали накопительные скидки
//ВсегоЗапросов = 7;
ВсегоЗапросов = 8;
НомерТаблицыРезультата = 4;

КонецЕсли;

CARtMEN


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск