Переход с упрощенной системы налогообложения (УСН) на общую (ОСНО) — это ответственный период, когда любая небрежность в ведении взаиморасчетов может обернуться серьезными налоговыми переплатами. Одной из самых частых проблем является так называемое "развернутое сальдо" на счетах 60 ("Расчеты с поставщиками и подрядчиками") и 62 ("Расчеты с покупателями и заказчиками"). В этой статье мы подробно разберем, почему возникает эта проблема, чем она опасна и как автоматизировать "глобальный" зачет авансов, чтобы войти в новый налоговый режим с чистым учетом.
В период применения УСН многие бухгалтеры не уделяют должного внимания заполнению поля Документ расчетов в платежных поручениях или документах реализации, так как налог при УСН чаще всего считается по кассовому методу (по факту оплаты). Однако при переходе на НДС программа 1С начинает жестко отслеживать цепочку "аванс — отгрузка".
Если по одному и тому же контрагенту и договору у вас висит остаток в дебете (счет 62.01) и в кредите (счет 62.02) из-за того, что документы не были сопоставлены, система будет считать каждую последующую оплату новым авансом. Это приведет к двойному начислению НДС: один раз с аванса, который фактически таковым не является, и второй раз при отгрузке, которая не зачтет этот мнимый аванс. Рассмотрим, как решить эту задачу системно.
Прежде чем приступать к написанию кода или использованию сторонних обработок, проанализируем текущее состояние базы с помощью встроенных инструментов. Перейдем в раздел Отчеты — Экспресс-проверка. Нас интересует блок "Ведение книги покупок и книги продаж".
Программа автоматически проанализирует остатки на счетах 60 и 62 и укажет на ошибки в расчетах. Часто 1С сама предлагает расшифровку, из которой видно, какие именно документы создали "развернутое сальдо". Это поможет нам понять масштаб проблемы перед запуском автоматизации.
Если документов не критически много, мы можем воспользоваться механизмом группового изменения. Одной из причин незачета авансов является установленный в документах способ погашения задолженности "По документу" вместо "Автоматически".
Реализация товаров и услуг и Поступление на расчетный счет).Если штатные методы не помогают (например, остатки висят на разных договорах или в разных кварталах), целесообразно использовать программную обработку, которая создает документы КорректировкаДолга. Рассмотрим важные технические нюансы, которые обсуждались экспертами при разработке такого решения.
Исправление ошибки доступа к объекту:
При переборе документов в цикле важно не просто обращаться к ссылке, а получать объект документа для возможности его изменения или проверки состояния. Разберем пример исправления ошибки, возникающей при попытке работы с помеченными на удаление записями:
Для Каждого стрДок Из СписокДокументов Цикл
// Неправильно: Док = стрДок.Ссылка;
// Правильно: получаем объект для доступа к свойствам
ДокОбъект = стрДок.Ссылка.ПолучитьОбъект();
Если ДокОбъект.ПометкаУдаления Тогда
// Если логика требует обработки удаленных, снимаем пометку
ДокОбъект.УстановитьПометкуУдаления(Ложь);
ДокОбъект.Записать();
КонецЕсли;
КонецЦикла;
Критически важным моментом при написании обработки для зачета авансов является получение остатков на нужную дату. Проанализируем ситуацию: если мы создаем корректировку долга на ту же секунду, что и документы расчетов, обычный запрос к виртуальным таблицам остатков может их "не увидеть".
Чтобы захватить все документы, включая те, что созданы в последнюю секунду дня, необходимо использовать объект Граница. Посмотрим, как правильно настроить параметры запроса:
// Устанавливаем момент времени на конец дня с включением всех движений этой секунды
Момент = Новый МоментВремени(КонецДня(ДатаКорректировки), СсылкаНаДокумент);
УточненныйМомент = Новый Граница(Момент, ВидГраницы.Включая);
Запрос.УстановитьПараметр("Период", УточненныйМомент);
// Это гарантирует, что в выборку попадут остатки, сформированные в 23:59:59
Как отмечают эксперты, использование конструкции Новый Граница(КонецДня(Дата), ВидГраницы.Включая) является наиболее универсальным способом получения итогов, который избавляет от необходимости писать сложные условия Если ЭтоНовый Тогда.
При реализации "глобального зачета" важно не затронуть счета, которые не относятся к расчетам с покупателями и поставщиками. Рекомендуем жестко прописать массив счетов в коде обработки или в настройках формы. Проанализируем типичный набор счетов для обработки:
Будьте осторожны: случайный зачет по счету 76 (без субсчетов) может привести к дефектам в учете, так как этот счет является агрегирующим.
Таким образом, комбинируя штатные возможности 1С:Бухгалтерии и небольшие программные доработки с использованием объектов Граница и МоментВремени, мы можем эффективно подготовить базу к работе с НДС, избежав ошибок в начислении налогов и сэкономив время на ручной корректировке тысяч документов.