Свертка базы данных в сложных конфигурациях, таких как 1С:ERP Управление предприятием 2.5, — это всегда серьезный вызов. Одной из самых распространенных проблем, возникающих уже после завершения процедуры свертки и начала работы в «чистой» базе, является обработка возвратов от покупателей за прошлые периоды. Чтобы процедура прошла гладко, часто требуется предварительная подготовка базы к сворачиванию данных по товарам с автоматическим наполнением документов ввода остатков.
Рассмотрим ситуацию: свертка выполнена на 31.12.2023. Документы реализации за 2023 год удалены или помечены на удаление, остатки перенесены. В 2024 году клиент возвращает товар, купленный в 2023 году. При попытке оформить документ Возврат товаров от клиента и последующем закрытии месяца возникает ошибка в регистре СебестоимостьТоваров, так как система не может найти партию (документ реализации), чтобы корректно сторнировать себестоимость.
Разберем подробно несколько способов решения этой проблемы, от штатных настроек документа до технических методов исправления.
Прежде чем приступать к исправлению, давайте разберемся, почему возникает ошибка. В 1С:ERP 2.5 используется сложный механизм расчета себестоимости (РАУЗ/ФИФО скользящая и т.д.). Когда мы проводим Возврат товаров от клиента, система пытается выполнить два основных действия:
Чтобы определить, какую именно стоимость вернуть, система обращается к документу-основанию (партии) — Реализация товаров и услуг. Она смотрит, какая себестоимость была списана при продаже, и восстанавливает её. Если база свернута, документ реализации либо отсутствует (удален), либо помечен на удаление и не имеет движений. Цепочка разрывается, и механизм расчета себестоимости выдает ошибки. В таких случаях для диагностики полезно использовать отчет для поиска ошибок в учете, который сравнивает остатки на складах и данные организаций.
Самый безопасный и методологически верный способ для единичных случаев, который не требует создания фиктивных документов, заключается в использовании настроек самого документа возврата.
В документе Возврат товаров от клиента на вкладке Товары есть колонка, отвечающая за способ определения себестоимости. В стандартном режиме она настроена на автоматический расчет по документу продажи. Нам необходимо изменить это поведение.
Давайте выполним следующие действия:
Возврат товаров от клиента.При таком подходе система не будет пытаться найти удаленную Реализацию товаров и услуг для сторнирования движений по регистру СебестоимостьТоваров. Вместо этого она приходует товар на склад по указанной вами цене. Это позволяет корректно закрыть месяц.
Если свертка была произведена корректно, то остатки товаров и взаиморасчетов должны были быть перенесены на документы Ввод начальных остатков (ВНО). С точки зрения системы, после свертки история начинается именно с этих документов.
Если клиент возвращает товар, который был продан до даты свертки, логичнее всего «привязать» этот возврат к вводу остатков, а не к несуществующей реализации. Для корректного сопоставления данных можно применить внешний отчет для сравнения товаров на складах и себестоимости, который покажет расхождения в регистрах.
Посмотрим, как это сделать:
Важный нюанс: При таком подходе мы фактически говорим системе, что этот товар «появился» у нас 31.12.23. В документе Возврат товаров от клиента в поле «Документ реализации» мы выбираем именно этот созданный Ввод начальных остатков.
В обсуждении на форуме специалисты предложили метод, который позволяет «обмануть» систему проверки целостности ссылок, создав временные документы. Этот метод эффективен, если нужно массово исправить ошибки.
Суть метода заключается в создании документа-основания, проведении его для формирования записей, а затем очистке его движений. Если в процессе манипуляций возникнут лишние записи в регистрах, пригодится универсальная корректировка и чтение остатков регистра накопления.
Разберем алгоритм действий пошагово:
Реализация товаров и услуг задним числом.Возврат товаров от клиента выбираем эту новую реализацию в качестве основания.Более безопасный вариант реализации этого метода — использовать документ Операция (регл. учет) или Корректировка регистров, который сторнирует движения этой реализации «в ноль» той же датой.
Пример логики кода для программной очистки движений:
// Примерный алгоритм очистки движений для конкретного документа
ДокОбъект = СсылкаНаРеализацию.ПолучитьОбъект();
ДокОбъект.Движения.Очистить(); // Очищаем коллекции движений
ДокОбъект.Записать(РежимЗаписиДокумента.Запись); // Записываем без проведения
Если из-за некорректных возвратов в базе образовалась «краснота», рекомендуем использовать обработку для автоматического устранения отрицательных остатков, которая массово создает документы оприходования излишков.
Помимо себестоимости, при свертке и потере исходных документов возникает проблема с НДС. Если возврат оформляется как корректировочный, для корректного формирования записи книги покупок требуется ссылка на исходный счет-фактуру.
Если исходный счет-фактура удален:
Запись книги покупок вручную.При работе с возвратами в ERP 2.5 после свертки базы мы рекомендуем придерживаться следующей приоритетности решений:
Также настоятельно рекомендуем установить Дату запрета изменения данных для всех пользователей на дату свертки (31.12.2023), чтобы случайное перепроведение документов в прошлом периоде не нарушило целостность базы.