Имя: Пароль:
1C
1С v8
БП ред. 3 Программное заполнение табличной части документа
0 bvn-2005
 
23.01.19
15:00
Документ "Передача ОС". Обработкой заполняю табличную часть.
....
            СтрДОк.ОсновноеСредство=Выборка.МЦ;
            СтрДОк.Количество=1;
            СтрДОк.Сумма=(Выборка.Сумма-Выборка.Амортизация)*(1+(Процент/100));
            СтрДОк.Цена=СтрДОк.Сумма/СтрДОк.Количество;
            СтрДОк.СтавкаНДС=Перечисления.СтавкиНДС.НДС18;
....
Как сделать, чтобы после заполнения полей Сумма и СтавкаНДС поле СуммаНДС заполнилось бы автоматически, как при ручном вводе данных?
1 spiller26
 
23.01.19
15:02
(0) ОбработкаТабличныхЧастейКлиентСервер.РассчитатьСуммуНДСТабЧасти(СтрокаТаблицы, Объект.СуммаВключаетНДС, ПрименяютсяСтавки4и2);
2 spiller26
 
23.01.19
15:03
СтрокаТабличнойЧасти.СуммаНДС = УчетНДСКлиентСервер.РассчитатьСуммуНДС(
                                                СтрокаТабличнойЧасти.Сумма,
                                                СуммаВключаетНДС,
                                                УчетНДСВызовСервераПовтИсп.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС, ПрименяютсяСтавки4и2));
3 spiller26
 
23.01.19
15:05
И в итоге попадаешь вот сюда

// Рассчитывает сумму НДС исходя из суммы и флагов налогообложения.
//
// Параметры:
//  Сумма            - Число - сумма от которой надо рассчитывать налоги;
//  СуммаВключаетНДС - Булево - признак включения НДС в сумму ("внутри" или "сверху");
//  СтавкаНДС        - Число - процентная ставка НДС.
//
// Возвращаемое значение:
//  Число - полученная сумма НДС.
//
Функция РассчитатьСуммуНДС(Сумма, СуммаВключаетНДС, СтавкаНДС) Экспорт

    Если СуммаВключаетНДС Тогда
        СуммаБезНДС = 100 * Сумма / (100 + СтавкаНДС);
        СуммаНДС = Сумма - СуммаБезНДС;
    Иначе
        СуммаБезНДС = Сумма;
    КонецЕсли;

    Если НЕ СуммаВключаетНДС Тогда
        СуммаНДС = СуммаБезНДС * СтавкаНДС / 100;
    КонецЕсли;
    
    Возврат СуммаНДС;

КонецФункции // РассчитатьСуммуНДС()