Имя: Пароль:
1C
1С v8
Объясните пожалуйста смысл процедуры
0 Klesk
 
12.01.13
06:17
Процедура ПересчитатьЦенуСкидкуПоСуммеВПродажахВСтрокеТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения)
   
   СтруктураПараметровДействия = Неопределено;
   
   Если СтруктураДействий.Свойство("ПересчитатьЦенуСкидкуПоСуммеВПродажах", СтруктураПараметровДействия) Тогда
       
       ИспользоватьРучныеСкидки = Ложь;
       Если СтруктураПараметровДействия <> Неопределено Тогда
           Если СтруктураПараметровДействия.Свойство("ИспользоватьРучныеСкидки") Тогда
               ИспользоватьРучныеСкидки = Истина;
           КонецЕсли;
       КонецЕсли;
       
       ИспользоватьАвтоматическиеСкидки = Ложь;
       Если СтруктураПараметровДействия <> Неопределено Тогда
           Если СтруктураПараметровДействия.Свойство("ИспользоватьАвтоматическиеСкидки") Тогда
               ИспользоватьАвтоматическиеСкидки = Истина;
           КонецЕсли;
       КонецЕсли;
       
       ИмяКоличества = "КоличествоУпаковок";
       Если СтруктураПараметровДействия <> Неопределено Тогда
           Если НЕ СтруктураПараметровДействия.Свойство("ИмяКоличества",ИмяКоличества) Тогда
               ИмяКоличества = "КоличествоУпаковок";
           КонецЕсли;
       КонецЕсли;
       
       Если ИспользоватьРучныеСкидки И КэшированныеЗначения.ИспользоватьРучныеСкидкиВПродажах = Неопределено Тогда
           КэшированныеЗначения.ИспользоватьРучныеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
       КонецЕсли;
       
       Если ИспользоватьАвтоматическиеСкидки И КэшированныеЗначения.ИспользоватьАвтоматическиеСкидкиВПродажах = Неопределено Тогда
           КэшированныеЗначения.ИспользоватьАвтоматическиеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
       КонецЕсли;
       
       // Если используются ручные скидки - перерасчитаем процент и сумму ручной скидки, иначе перерасчитываем цену
       Если ИспользоватьРучныеСкидки И КэшированныеЗначения.ИспользоватьРучныеСкидкиВПродажах Тогда
           
           Если ТекущаяСтрока.Сумма = 0 Или ТекущаяСтрока[ИмяКоличества] = 0 Тогда
               
               ТекущаяСтрока.Цена                = 0;
               ТекущаяСтрока.СуммаРучнойСкидки   = 0;
               
           Иначе
               
               Если ТекущаяСтрока.Цена = 0 Тогда
                   Если ЗначениеЗаполнено(ТекущаяСтрока.ПроцентРучнойСкидки) Тогда
                       ТекущаяСтрока.СуммаРучнойСкидки = (ТекущаяСтрока.Сумма * ТекущаяСтрока.ПроцентРучнойСкидки)  / (100 - ТекущаяСтрока.ПроцентРучнойСкидки);
                   КонецЕсли;
                   ТекущаяСтрока.Цена = Окр((ТекущаяСтрока.Сумма + ТекущаяСтрока.СуммаРучнойСкидки) / ТекущаяСтрока[ИмяКоличества], 2);
               Иначе
                   СуммаБезСкидки = ТекущаяСтрока.Цена * ТекущаяСтрока[ИмяКоличества];
                   ТекущаяСтрока.СуммаРучнойСкидки   = СуммаБезСкидки - ТекущаяСтрока.Сумма;
                   ТекущаяСтрока.ПроцентРучнойСкидки = Окр(100*ТекущаяСтрока.СуммаРучнойСкидки / СуммаБезСкидки, 2);
               КонецЕсли;
               
           КонецЕсли;
           
       Иначе
           
           Если ТекущаяСтрока.Сумма = 0 Или ТекущаяСтрока[ИмяКоличества] = 0 Тогда
               ТекущаяСтрока.Цена = 0;
           Иначе
               ТекущаяСтрока.Цена = Окр(ТекущаяСтрока.Сумма / ТекущаяСтрока[ИмяКоличества], 2);
           КонецЕсли;
           
       КонецЕсли;
       
       Если ИспользоватьАвтоматическиеСкидки Тогда
           Если КэшированныеЗначения.ИспользоватьАвтоматическиеСкидкиВПродажах Тогда
               ТекущаяСтрока.СуммаАвтоматическойСкидки   = 0;
               ТекущаяСтрока.ПроцентАвтоматическойСкидки = 0;
           КонецЕсли;
       КонецЕсли;
       
   КонецЕсли;
   
КонецПроцедуры

Типовая УТ 11.0.9.5
Не могу въехать
1 Klesk
 
12.01.13
06:23
что надо передать в неё , чтобы она прошла первое условие
2 VladZ
 
12.01.13
06:26
(0) Жуть какая-то...
3 GROOVY
 
12.01.13
06:32
(1) В коллекции СтруктураДействий должен быть ключ "ПересчитатьЦенуСкидкуПоСуммеВПродажах"
4 Klesk
 
12.01.13
06:37
СтруктураПараметровДействия = Неопределено;

.....

ИспользоватьРучныеСкидки = Ложь;
       Если СтруктураПараметровДействия <> Неопределено Тогда

......

ИспользоватьАвтоматическиеСкидки = Ложь;
       Если СтруктураПараметровДействия <> Неопределено Тогда

.......
Если ИспользоватьРучныеСкидки И

.....

Если ИспользоватьАвтоматическиеСкидки Тогда


т.е. что не передавай не выполнится ни одно условие (ну кроме первого) ?
5 GROOVY
 
12.01.13
06:43
//Объявляем переменную для приема параметров
СтруктураПараметровДействия = Неопределено;
   
//Пытаемся найти запись в коллекции по ключу
   Если СтруктураДействий.Свойство("ПересчитатьЦенуСкидкуПоСуммеВПродажах", СтруктураПараметровДействия) Тогда
//Если нашли то значение по ключу записали в переменную  СтруктураПараметровДействия      

//Объявляем переменную хз зачем
       ИспользоватьРучныеСкидки = Ложь;

//Если ранее нашли ключ СтруктураПараметровДействия  то идем в условие
       Если СтруктураПараметровДействия <> Неопределено Тогда

//Если есть в коллекции ключ с именем ИспользоватьРучныеСкидки То идем в условие
           Если СтруктураПараметровДействия.Свойство("ИспользоватьРучныеСкидки") Тогда
//Присваиваем переменной значение истина.
               ИспользоватьРучныеСкидки = Истина;
           КонецЕсли;
       КонецЕсли;
       
Написано немного по дурацки, но смахивает на стандарт разработки конфигураций от 1С.
6 Klesk
 
12.01.13
06:50
(5) понял, спасибо
7 GROOVY
 
12.01.13
07:03
(6) Пожалуйста.