Имя: Пароль:
1C
 
УТ 11.1 Распространение скидки только на определенный вид цен
0 fantomrik
 
17.12.15
11:26
Коллеги, привет!

Типовыми средствами можно ограничить действие скидки (скидка на ценовую группу у меня) только на определенные виды цен? Не найду что то где это сделать можно...
1 fantomrik
 
17.12.15
14:02
апну
2 fantomrik
 
18.12.15
12:28
апну
3 fantomrik
 
23.12.15
01:19
ап
4 fantomrik
 
12.01.16
11:27
Дописал. Возможно кому то пригодится

Добавил в форму элемента Скидки-наценки ТЧ Виды цены.
При записи элемента данные виды цен пишутся в новый РС по измерениям СкидкаНаценка и ВидыЦен.
НУ и в общем модуле СкидкиНаценкиСервер изменил немного процедуру расчета скидок

// Процедура применяет результат расчета скидок (наценок) к объекту.
// Вызывается из форм документов.
//
Процедура ПрименитьРезультатРасчетаКОбъекту(Объект,
                                            ИмяТЧ,
                                            ПримененныеСкидкиНаценки,
                                            РассчитыватьСуммуСНДС=Ложь,
                                            РассчитыватьСуммуВзаиморасчетов=Ложь,
                                            РеализацияСверхЗаказа = Ложь)
    
    Объект.СкидкиНаценки.Загрузить(ПримененныеСкидкиНаценки.ТаблицаСкидкиНаценки);
    АвтоматическиеСкидкиНаценки = ПримененныеСкидкиНаценки.ТаблицаСкидкиНаценки.Скопировать(Новый Структура("СпособПримененияСкидки", Перечисления.СпособыПримененияСкидокНаценок.ПрименитьВМоментРасчетаСкидокНаценок));
    НачисленныеБонусныеБаллы = ПримененныеСкидкиНаценки.ТаблицаСкидкиНаценки.Скопировать(Новый Структура("СпособПримененияСкидки", Перечисления.СпособыПримененияСкидокНаценок.НачислитьБонусныеБаллы));
    //+   2015-12-29  
    лзАвтоматическиеСкидкиНаценки = ПримененныеСкидкиНаценки.ТаблицаСкидкиНаценки.Скопировать(Новый Структура("СпособПримененияСкидки", Перечисления.СпособыПримененияСкидокНаценок.ПрименитьВМоментРасчетаСкидокНаценок));
    //-   2015-12-29  
    
    
    // Заполнение скидок в табличной части "Товары"
    АвтоматическиеСкидкиНаценки.Свернуть("КлючСвязи", "Сумма");
    АвтоматическиеСкидкиНаценки.Индексы.Добавить("КлючСвязи");
    
    Если ИмяТЧ="Услуги" Тогда
        ИмяКоличества = "Количество";
    Иначе
        ИмяКоличества = "КоличествоУпаковок";
    КонецЕсли;
    
    Для Каждого СтрокаТЧ Из Объект[ИмяТЧ] Цикл
        
        Если РеализацияСверхЗаказа И СтрокаТЧ.КодСтроки > 0 Тогда
            Продолжить;
        КонецЕсли;
        
        СтрокаТаблицы = АвтоматическиеСкидкиНаценки.Найти(СтрокаТЧ.КлючСвязи, "КлючСвязи");
        
        Если СтрокаТаблицы = Неопределено Тогда
            СуммаАвтоматическойСкидки = 0;
        Иначе
            //+   2015-12-29  
            Попытка
                ВидЦены = СтрокаТЧ.ВидЦены;
            Исключение
                ВидЦены = Объект.ВидЦены;
            КонецПопытки;
            Если НЕ ЗначениеЗаполнено(ВидЦены) Тогда //Пустое значение - произвольный вид цены, скидку не применяем
                СуммаАвтоматическойСкидки = 0;
            Иначе
                ТекущаяСкидка = лзАвтоматическиеСкидкиНаценки.Найти(СтрокаТЧ.КлючСвязи, "КлючСвязи").СкидкаНаценка;
                
                Если НЕ ТекущаяСкидка.Управляемая Тогда //Управляемые скидки присутсвуют в РМК, по ним будем отрабатывать без проверок.
                    Запрос = Новый Запрос;
                    Запрос.Текст =
                    "ВЫБРАТЬ
                    |    ЛЗ_СкидкаНаценкаПоВидуЦен.СкидкаНаценка,
                    |    ЛЗ_СкидкаНаценкаПоВидуЦен.ВидЦены
                    |ИЗ
                    |    РегистрСведений.ЛЗ_СкидкаНаценкаПоВидуЦен КАК ЛЗ_СкидкаНаценкаПоВидуЦен
                    |ГДЕ
                    |    ЛЗ_СкидкаНаценкаПоВидуЦен.СкидкаНаценка = &СкидкаНаценка
                    |    И ЛЗ_СкидкаНаценкаПоВидуЦен.ВидЦены = &ВидЦены";
                    
                    Запрос.УстановитьПараметр("ВидЦены"         , ВидЦены);
                    Запрос.УстановитьПараметр("СкидкаНаценка", ТекущаяСкидка);
                    
                    РезультатЗапроса = Запрос.Выполнить();
                    Если РезультатЗапроса.Пустой() Тогда
                        СуммаАвтоматическойСкидки = 0;
                    Иначе    
                        СуммаАвтоматическойСкидки = СтрокаТаблицы.Сумма;
                    КонецЕсли;
                Иначе
                    СуммаАвтоматическойСкидки = СтрокаТаблицы.Сумма
                КонецЕсли;
            КонецЕсли;    
            //СуммаАвтоматическойСкидки = СтрокаТаблицы.Сумма;
            //-   2015-12-29  
        КонецЕсли;
        
        РассчитыватьСуммуВзаиморасчетовПоСтроке = (РассчитыватьСуммуВзаиморасчетов И СтрокаТЧ.СуммаАвтоматическойСкидки <> СуммаАвтоматическойСкидки);
        
        СтрокаТЧ.СуммаАвтоматическойСкидки = СуммаАвтоматическойСкидки;
        
        // Применение автоматической скидки.
        СуммаБезСкидки = Окр(СтрокаТЧ[ИмяКоличества] * СтрокаТЧ.Цена,2);
        
        Если СуммаБезСкидки <> 0 Тогда
            СтрокаТЧ.ПроцентРучнойСкидки = 100 * СтрокаТЧ.СуммаРучнойСкидки / СуммаБезСкидки;
        КонецЕсли;
        
        СуммаСкидки = СуммаАвтоматическойСкидки + СтрокаТЧ.СуммаРучнойСкидки;
        
        СтрокаТЧ.ПроцентАвтоматическойСкидки = ?(СуммаБезСкидки = 0, 0 , 100 * СуммаАвтоматическойСкидки / СуммаБезСкидки);
        
        СтрокаТЧ.Сумма    = СуммаБезСкидки - ?(СуммаСкидки > СуммаБезСкидки, СуммаБезСкидки, СуммаСкидки);
        СтрокаТЧ.СуммаНДС = РассчитатьСуммуНДС(СтрокаТЧ.Сумма, СтрокаТЧ.СтавкаНДС, Объект.ЦенаВключаетНДС);
        
        Если РассчитыватьСуммуСНДС Тогда
            СтрокаТЧ.СуммаСНДС = СтрокаТЧ.Сумма + ?(Объект.ЦенаВключаетНДС, 0, СтрокаТЧ.СуммаНДС);
        КонецЕсли;
        
        Если РассчитыватьСуммуВзаиморасчетовПоСтроке Тогда
            СтрокаТЧ.СуммаВзаиморасчетов = 0;
        КонецЕсли;
        
    КонецЦикла;
    
    Объект.СуммаДокумента = ЦенообразованиеКлиентСервер.ПолучитьСуммуДокумента(Объект[ИмяТЧ], Объект.ЦенаВключаетНДС);
    Объект.СкидкиРассчитаны = Истина;
    
КонецПроцедуры
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший