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