Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 19:38

Помогите новичку! Пересчет сумм при изменение ставки НДС

Автор аня, 13 дек 2010, 17:56

0 Пользователей и 1 гость просматривают эту тему.

аня

Добрый день!
Я новичок!
Создаю документ поступление тмц.
На количество и цену сделала процедуру
Процедура ПриИзмененииКоличествоЦены()   
СуммаБезНДС=Количество*Цена; 
Итого=Количество*Цена;   
   Если СтавкаНДС=Перечисление.СтавкиНДС.НДС10 тогда
      ПрНДС=10;   
   ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.НДС18 тогда
       ПрНДС=18; 
ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.БезНДС тогда
       ПрНДС=0;
КонецЕсли;
   СуммаНДС=СуммаБезНДС* ПрНДС/100;
   Итого=СуммаБезНДС+СуммаНДС;
КонецПроцедуры 

еще сделала
Процедура ПриИзмененииСуммыИтого()

   Если СтавкаНДС=Перечисление.СтавкиНДС.НДС10 тогда
      ПрНДС=10;   
   ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.НДС18 тогда
      ПрНДС=18; 
   ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.БезНДС тогда
      ПрНДС=0;
   КонецЕсли;   
   
   Цена=Итого/Количество;
   СуммаНДС=Итого*ПрНДС/(ПрНДС+100);
КонецПроцедуры   


но не могу сделать что бы при изменение ставки НДС 10, 18,0  пересчитывалось сумма ндс и итоговая??
подскажите кто знает.
на колонку ставка НДС написала процедуру
Процедура ПриИзмененииСтавкиНДС()   

DenPlus

Процедура ПриИзменениСтавкиНДС()
  Если СтавкаНДС=Перечисление.СтавкиНДС.НДС10 тогда
     ПрНДС=10;    
  ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.НДС18 тогда
     ПрНДС=18;  
  ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.БезНДС тогда
     ПрНДС=0;
  КонецЕсли;  

  СуммаНДС=СуммаБезНДС* ПрНДС/100;
  Итого=СуммаБезНДС+СуммаНДС;
КонецЕсли;
/////////////////////////////////////////////////////////////////////
Но лучше сразу все делать более правильно.

На все колонки табличной части сразу вешайте:


глПересчетТаблЧасти(Контекст,Форма.ТекущаяКолонка())

В глобальном модуле:

//******************************************************************************
// глПересчетТаблЧасти(Конт,ИмяРеквизита)
//
// Параметры:                
//    Конт                   - контекст документа,
//   ИмяРеквизита           - идентификатор текущей колонки табличной части,
//          
// Возвращаемое значение:
//  Нет
//
// Описание:
//   Производится пересчет зависимых реквизитов при редактировании реквизита
//  табличной части в документах, имеющих сумму и налоги в табличной части,
//  однако не во всех.
//
Процедура глПересчетТаблЧасти(Конт,ИмяРеквизита) Экспорт  

       Если ИмяРеквизита = "Номенклатура" Тогда
              // например если вызовете из документа "Реализация...", то можете заполнить Конт.Цена....
       ИначеЕсли ИмяРеквизита = "Количество" Тогда
      Конт.СуммаБезНДС = Конт.Цена*Конт.Количество;
                          ..........
                          ..........
       ИначеЕсли ИмяРеквизита = "СтавкаНДС" Тогда
      Если Конт.СтавкаНДС = Перечисление.СтавкиНДС.НДС10 тОГДА
         СтавкаНДС = 10;
                                      ....................
                                      ....................
      ИначеЕсли Конт.СтавкаНДС = Перечисление.СтавкиНДС.ндс18 Тогда
         СтавкаНДС = 18;
         Конт.СуммаНДС = Конт.СуммаБезНДС*СтавкаНДС/100;
         кОНТ.Всего = Конт.СуммаБезНДС+Конт.СуммаНДС;
      КонецЕсли;
       КонецеСЛИ;// И ТАК ДАЛЕЕ
КонецПроцедуры // глПересчет



prog1c7.7

//или для начала (если понимания нет пока) делаете всего одну процедуру на форме:
Процедура ПриИзмененииКоличествоЦены()  
   Если СтавкаНДС=Перечисление.СтавкиНДС.НДС10 тогда
      ПрНДС=10;    
   ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.НДС18 тогда
      ПрНДС=18;  
   ИначеЕсли СтавкаНДС=Перечисление. СтавкиНДС.БезНДС тогда
      ПрНДС=0;
   КонецЕсли;   
  СуммаБезНДС = Количество*Цена;
  СуммаНДС    = Количество*Цена*ПрНДС/100;
  Итого       = Количество*Цена*(1+ПрНДС/100);
КонецПроцедуры  
//  и вешаете ее просто на  колонки ЦЕНА, КОЛИЧЕСТВО,СТАВКИНДС
//  далее при изменении реквизитов она вам сама все посчитает
// но DenPlus  там сверху :befhbt: глобальней и правильнее говорит <_<

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск