Имя: Пароль:
1C
1С v8
Розница для Беларуси. РЕШЕНИЕ ПРОБЛЕМЫ с накопительными скидками за весь период.
0 CARtMEN
 
18.05.16
20:15
У клиента установлена Розница для Беларуси 2.1.6.1.
Поставили задачу сделать накопительные скидки по дисконтным картам за весь период. И было замечено, что срабатывает только самый низкий порог не смотря на накопления.

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

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

[code]
Функция ТекстЗапросаСкидкаЗаНакопленныйОбъемПродажПоДисконтнойКартеЗаПериод(ПакетЗапросов, УсловиеПредоставления, ДатаНачала, ДатаОкончания)
    
    Сегмент = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УсловиеПредоставления, "СегментНоменклатурыОграничения");
    
    Если ЗначениеЗаполнено(Сегмент) Тогда
    
        ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    НоменклатураСегмента.Номенклатура КАК Номенклатура,
        |    НоменклатураСегмента.Характеристика КАК Характеристика
        |ПОМЕСТИТЬ НоменклатураСегментаВДанномЗапросе
        |ИЗ
        |    РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
        |ГДЕ
        |    НоменклатураСегмента.Сегмент = &ИмяПараметра_СегментНоменклатуры
        |
        |СГРУППИРОВАТЬ ПО
        |    НоменклатураСегмента.Номенклатура,
        |    НоменклатураСегмента.Характеристика
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура,
        |    Характеристика
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ЕСТЬNULL(СУММА(ПродажиПоДисконтнымКартам.Сумма), 0) КАК Сумма,
        |    ЕСТЬNULL(СУММА(ПродажиПоДисконтнымКартам.Количество), 0) КАК Количество
        |ПОМЕСТИТЬ ВремТаблица
        |ИЗ
        |    РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартам
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураСегментаВДанномЗапросе КАК НоменклатураСегмента
        |        ПО (НоменклатураСегмента.Номенклатура = ПродажиПоДисконтнымКартам.Номенклатура)
        |            И (НоменклатураСегмента.Характеристика = ПродажиПоДисконтнымКартам.Характеристика)
        |ГДЕ &ДисконтнаяКартаПредъявлена
        |    И ПродажиПоДисконтнымКартам.Период МЕЖДУ &ДатаНачала_П И &ДатаОкончания_П
        |    И ПродажиПоДисконтнымКартам.ДисконтнаяКарта В (&ДисконтныеКарты)
        |    И ПродажиПоДисконтнымКартам.Регистратор <> &Регистратор
        |;";
        
        //% Из-за этого не работали накопительные скидки
        //ВсегоЗапросов = 8;
        ВсегоЗапросов = 9;
        НомерТаблицыРезультата = 5;
        
    Иначе
        
        ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ЕСТЬNULL(СУММА(ПродажиПоДисконтнымКартамОбороты.Сумма), 0) КАК Сумма,
        |    ЕСТЬNULL(СУММА(ПродажиПоДисконтнымКартамОбороты.Количество), 0) КАК Количество
        |ПОМЕСТИТЬ ВремТаблица
        |ИЗ
        |    РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартамОбороты
        |ГДЕ &ДисконтнаяКартаПредъявлена
        |    И ПродажиПоДисконтнымКартамОбороты.Период МЕЖДУ &ДатаНачала_П И &ДатаОкончания_П
        |    И ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта В (&ДисконтныеКарты)
        |    И ПродажиПоДисконтнымКартамОбороты.Регистратор <> &Регистратор
        |;";
        
        //% Из-за этого не работали накопительные скидки
        //ВсегоЗапросов = 7;
        ВсегоЗапросов = 8;
        НомерТаблицыРезультата = 4;
        
    КонецЕсли;
[/code]
1 Волшебник
 
модератор
18.05.16
20:16
пишется "Несмотря на" и отделяется запятой