7.7 Проблемы со скидкой

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем NemeL, 2 сен 2011.

  1. TopicStarter Overlay
    NemeL
    Offline

    NemeL Опытный в 1С

    Регистрация:
    11 фев 2011
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Добрый день, помогите решить проблему со скидкой, бьюсь уже 2 дня ничего не могу придумать. 1с Предприятие.Платежные документы. Документ-Счет выбираю товар из справочника,у каждого товара может быть скидка разная т,е у первого -10%, у второго - 5%, у третьего-20% и тд. Если скидка нужна на товар, то ставлю галку на флажок, ввожу % скидки и все считается. Проблема в слудующем после того как скидка была принята, закрываю документ, открываю его еще раз и скидка опять вычитается.
    Код:
    Процедура ПриУстановкеСкидки()        
    ВыбратьСтроки();    
    Пока ПолучитьСтроку()=1 Цикл         
    Если Скидка = 0 Тогда             
    Сумма=Цена*Количество;            
    НДС=Цена*0.18;                
    ЦенаБезНДС=Цена/1.18;        
    Иначе             
    СуммаСкидки = Цена*ПроцСкид/100;              
    Цена=Цена - СуммаСкидки;                              
    Сумма=Цена*Количество;                
    НДС=Цена*0.18;             
    ЦенаБезНДС=Цена/1.18;             
    Дополнения=Итог("СуммаСкидки");         
    КонецЕсли;       
    КонецЦикла;    
    Форма.Скидк.Видимость(Скидка);      
    Форма.ПроцСкид.Видимость(Скидка);     
    КонецПроцедуры
    
    
  2. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Проверьте - в какм месте вызывается процедура, расчитывающая скидки.
  3. volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    так умно расписалти что не сразу понял о чем речь. И так я так понял, что при каждом открытии документа (когда включена скидка) уменьшаеться Сумма. ( и через несколько открытий - закрытий документа уже получится к оплате 0) Тоисть процедура вызывается при каждом открытии. Действительно нужно переделать чтобы процедура не вызывалась каждый раз
  4. volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    Как вариант повесить эту процедуру на флажок. Но нужно еще дописать обратное действия, когда снимаешь флажок со скидки, чтобы опять перещитать суммы (из скидки вывести сумму без скидки) и в процедуре ПриОткритии() проверять значения флажка
  5. volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    я так понял флажок один на форме, а сам процент скидки задается в табличкой части?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если проавильно понял флаг скидки не хранится в качестве реквизита документа (только форма) или расчет не вызывается в процедуре ПриОткрытии
  7. TopicStarter Overlay
    NemeL
    Offline

    NemeL Опытный в 1С

    Регистрация:
    11 фев 2011
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Флаг скидки хранится в качестве реквизита,
    Код:
    Процедура ПриОткрытии()  
    ПриУстановкеСкидки();
    КонецПроцедуры
    
    
    Да все правильно поняли, когда скидку применил, потом закрыл 0открыл несколько раз то Сумма к оплате становиться равная 0, а насчет того что б вернулось скидку обратно это я знаю как сделать, убрал из кода специально чтоб не путать народ.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так и должно получаться из вашего кода. А именно
    Код:
    СуммаСкидки = Цена*ПроцСкид/100;                                             
    Цена=Цена - СуммаСкидки; 
    
    
    
    Каждый раз здесь уменьшается цена....
    Нужно так: каждый раз получать цену заново (из справочника или как там еще - не знаю что за конфа)
    Т.е:

    Код:
    Цена=ПолучитьЦенуТовара();//цену получаем изначальную
    СуммаСкидки = Цена*ПроцСкид/100;                                             
    Цена=Цена - СуммаСкидки; 
    
    
    
  9. TopicStarter Overlay
    NemeL
    Offline

    NemeL Опытный в 1С

    Регистрация:
    11 фев 2011
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    это да так можно, я это знал, взять цену из каталога, но у меня иногда бывает что цену надо вводить от руки
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Значит нужно заводить ОТДЕЛЬНЫЙ реквизит ТЦ типа ЦенаСоСкидкой, а реквизит Цена оставлять неизменным.
    Или вычислять сумму не используя реквизит ЦЕНА
  11. volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    Немного подумал, предложу такой вариант. колонку "Сумма" в табличной части запретить редактировать.
    В табличной части добавить реквизит "НачСумма" . Вот в нее нужно загружать сумму из справочника, или вводить вручную (тоисть так как делали раньше)- это будет цена без скидки. А от нее уже вычислять цену со скидкой....
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    что и было предложено в предыдущем посте...

Поделиться этой страницей