|
УТ 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; КонецЕсли; КонецЦикла; Объект.СуммаДокумента = ЦенообразованиеКлиентСервер.ПолучитьСуммуДокумента(Объект[ИмяТЧ], Объект.ЦенаВключаетНДС); Объект.СкидкиРассчитаны = Истина; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |