среда, 21 октября 2009 г.

1С: УСН: Пиво на дом: Скидки. Продолжение

В статье я рассказал как можно реализовать механизм скидок. И описал ту часть которая отвечает за день рождения. Сейчас хочу описать вторую часть механизма (в зависимости от выбранного объема).В целом механизм готов, осталось только дописать одну ветку в функции глВычислитьСкидку.Ниже код этой части:
  Ит = СоздатьОбъект("БухгалтерскиеИтоги");
  Ит.ИспользоватьРазделительУчета(ПолучитьПустоеЗначение());
  
  ВСК = ВидыСубконто.ЗначениеПоИДентификатору("Контрагенты");
  Ит.ИспользоватьСубконто(ВСК, Клиент, 2);
  
  Если Ит.ВыполнитьЗапрос(ДобавитьМесяц(ДокДата,-1), ДокДата, СчетПоКоду("62.1"),,,, "Проводка") = 0 Тогда
   Возврат 0;
  КонецЕсли;
  
  //Получаем сумму
  ДО = 0;
  Ит.ВыбратьПериоды();
  Пока Ит.ПолучитьПериод() = 1 Цикл
   Опер = Ит.Операция;
   //Пропускаем текущий документ
   Если Опер.Документ = Конт Тогда
    Продолжить;
   КонецЕсли;
   Дт = Ит.ВыбранаПоДт();
   Кт = Ит.ВыбранаПоКт();
   
   Если Дт = 1 Тогда
    //Отгрузка пива
    Если (Опер.Кредит.Номенклатура.Выбран() = 1) Тогда
     Если (Опер.Кредит.Номенклатура.гСкидка = 1) Тогда
      ДО = ДО + Опер.Сумма;
     КонецЕсли;
    КонецЕсли;
   КонецЕсли;
  КонецЦикла;
  
  Оплачено = ДО;
  Спр.ВыбратьЭлементыПоРеквизиту("ДляДР",Перечисление.Булево.Нет,0,0);
  
  Пока Спр.ПолучитьЭлемент() = 1 Цикл
   Если Спр.Действует = Перечисление.Булево.Да Тогда
    
    Если Спр.СуммаСтарт <= Оплачено Тогда
     Если (Спр.СуммаКонец = 0) или (Спр.СуммаКонец > Оплачено) Тогда
      Возврат Спр.Размер;
     КонецЕсли;
    КонецЕсли;
   КонецЕсли;
  КонецЦикла;

Что делаем:

  1. Ит.ВыполнитьЗапрос( - Получаем Бухгалтерские итоги за период "месяц"
  2. В цикле cобирается купленный объем (при этом учитывается только тот товар у которого выставлена галка гСкидка)
  3. Выбираем подходящую скидку

Вот и все :) все достаточно просто

Комментариев нет:

Отправить комментарий