Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Объясните пожалуйста смысл процедуры

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

.....

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

......

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

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

.....

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


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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует