"вот, как считается :<br><br><br>//******************************************************************************<br>// глНачисляемыйНДС(Ставка)<br>// <br>// Параметры: <br>// Ставка - значение типа "Перечисление.СтавкиНДС".<br>//<br>// Возвращаемое значение: <br>// Числовой коэффициент НДС.<br>//<br>// Описание:<br>// По ставке НДС (Перечисление) получаем числовой коэффициент НДС, на который<br>// необходимо умножить число при начислении НДС сверху для получения суммы НДС.<br>// <br>Функция глНачисляемыйНДС(Ставка) Экспорт<br> Если ПустоеЗначение(Ставка)=1 Тогда<br> Возврат 0;<br> ИначеЕсли(Ставка=Перечисление.СтавкиНДС.БезНДС) Тогда<br> Возврат 0;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС10) Тогда<br> Возврат 0.1;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС20) Тогда<br> Возврат 0.2;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС18) Тогда<br> Возврат 0.18;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС9_09) Тогда<br> Возврат 0.09998900010999890001099989000 // Это 0.0909/0.9091;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС16_67) Тогда<br> Возврат 0.20004800192007680307212288492 // Это 0.1667/0.8333, только более точно в последнем знаке;<br> Иначе<br> Сообщить("Функция глНачисляемыйНДС(Ставка): неверная ставка");<br> Возврат 0;<br> КонецЕсли;<br>КонецФункции //глНачисляемыйНДС()<br> <br>//******************************************************************************<br>// глВыделяемыйНДС(Ставка)<br>//<br>// Параметры: <br>// Ставка - значение типа "Перечисление.СтавкиНДС"<br>//<br>// Возвращаемое значение: <br>// Числовой коэффициент НДС.<br>//<br>// Описание:<br>// По ставке НДС (Перечисление) получаем числовой коэффициент НДС, на который<br>// необходимо умножить число при выделении НДС (если НДС включен в сумму) для <br>// получения суммы НДС.<br>//<br>Функция глВыделяемыйНДС(Ставка) Экспорт<br> Если ПустоеЗначение(Ставка)=1 Тогда<br> Возврат 0;<br> ИначеЕсли(Ставка=Перечисление.СтавкиНДС.БезНДС) Тогда<br> Возврат 0;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС10) <br> или (Ставка=Перечисление.СтавкиНДС.НДС10_110) Тогда<br> Возврат 0.09090909090909090909090909091; // Это 1/11, только точнее<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС20) <br> или (Ставка=Перечисление.СтавкиНДС.НДС20_120) Тогда<br> Возврат 0.166666666666666666666666666667; // Это 1/6, только точнее<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС18) <br> или (Ставка=Перечисление.СтавкиНДС.НДС18_118) Тогда<br> Возврат 0.15254237288135593220338983050985 // Это округленный результат 18/118;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС9_09) Тогда<br> Возврат 0.0909;<br> ИначеЕсли (Ставка=Перечисление.СтавкиНДС.НДС16_67) Тогда<br> Возврат 0.1667;<br> Иначе<br> Сообщить("Функция глВыделяемыйНДС(Ставка): неверная ставка");<br> Возврат 0;<br> КонецЕсли;<br>КонецФункции //глВыделяемыйНДС()<br>//******************************************************************************<br>// глСтавкаНДСАванса(СтавкаНДС)<br>//<br>// Параметры:<br>// СтавкаНДС - значение перечисления ставки НДС<br>//<br>// Возвращаемое значение:<br>// Ставка НДС (значение перечисления)<br>//<br>// Описание:<br>// Для авансов выбираем ставку НДС: если не выбрана, то 16.67, а иначе <br>// выбранную в документе (соответствующую ей расчетную).<br>//<br>Функция глСтавкаНДСАванса(пСтавкаНДС) Экспорт<br> Если ПустоеЗначение(пСтавкаНДС)=0 Тогда<br> Если пСтавкаНДС = Перечисление.СтавкиНДС.НДС10 Тогда<br> Возврат Перечисление.СтавкиНДС.НДС9_09;<br> ИначеЕсли пСтавкаНДС = Перечисление.СтавкиНДС.НДС20 Тогда<br> Возврат Перечисление.СтавкиНДС.НДС16_67;<br> Иначе<br> Возврат пСтавкаНДС;<br> КонецЕсли;<br> Иначе <br> Возврат Перечисление.СтавкиНДС.НДС16_67;<br> КонецЕсли;<br>КонецФункции // глСтавкаНДСАванса()<br><br>//******************************************************************************<br>// глРасчетНалога(Конт,ВидНалога) <br>//<br>// Параметры: <br>// Конт - контекст документа<br>// ВидНалога - строка "НДС" или "НП"<br>//<br>// Возвращаемое значение: <br>// Нет<br>//<br>// Описание:<br>// Рассчитываем сумму налога, подставляем ее в документ<br>//<br>Процедура глРасчетНалога(Конт,ВидНалога) Экспорт<br> <br> ЕстьНП = глЕстьРеквизитМнЧ("СуммаНП",Конт.Вид());<br> СтНП=0;<br> Если ЕстьНП=1 Тогда<br> СтНП =?(Конт.УчитыватьНП =1,Конт.СтавкаНП.Ставка/100,0);<br> КонецЕсли;<br> СтавкаНДС =?(Конт.УчитыватьНДС=1,Конт.СтавкаНДС,Перечисление.СтавкиНДС.БезНДС);<br> <br> Если Врег(ВидНалога)="НДС" Тогда<br> БазаНалога=Конт.Сумма;<br> Если ЕстьНП=1 Тогда<br> Если Конт.СуммаВклНП=1 Тогда<br> БазаНалога=Конт.Сумма/(1+СтНП);<br> КонецЕсли; <br> КонецЕсли;<br> Если Конт.СуммаВклНДС=1 Тогда<br> Конт.СуммаНДС=БазаНалога*глВыделяемыйНДС(СтавкаНДС);//0.1667, 0.16666(6),...<br> Иначе<br> Конт.СуммаНДС=БазаНалога*глНачисляемыйНДС(СтавкаНДС);//0.20, 0.20004...<br> КонецЕсли;<br> <br> ИначеЕсли Врег(ВидНалога)="НП" Тогда<br> Если Конт.СуммаВклНДС=1 Тогда<br> БазаНалога=Конт.Сумма;<br> Иначе <br> БазаНалога=Конт.Сумма*(1+глНачисляемыйНДС(СтавкаНДС));<br> КонецЕсли;<br> Если Конт.СуммаВклНП=1 Тогда<br> Конт.СуммаНП=БазаНалога*СтНП/(1+СтНП);<br> Иначе <br> Конт.СуммаНП=БазаНалога*СтНП;<br> КонецЕсли; <br> Иначе<br> Сообщить("РасчетНалога(ВидНалога):неверный вид налога: "+ВидНалога,"i");<br> КонецЕсли; <br> <br>КонецПроцедуры //глРасчетНалога() "