В процессе работы с 1С:Управление нашей фирмой (УНФ) 3.0 часто возникает задача внедрения партионного учета в уже действующей информационной базе. Однако при попытке отредактировать старые, уже проведенные документы (например, приходные накладные) для указания в них партий, система может выдать неожиданную ошибку: "Не хватает остатка по учету запасов и затрат". На первый взгляд это кажется нелогичным, ведь мы имеем дело с приходным документом, который должен увеличивать остатки, а не уменьшать их. Давайте разберемся, почему так происходит и какие существуют способы решения этой проблемы.
Чтобы понять, почему система блокирует проведение приходного документа, проанализируем механику работы 1С при изменении уже проведенного документа. Процесс состоит из двух ключевых шагов:
"Запасы и затраты", где аналитика "Партия" еще не была заполнена.Проблема возникает между этими двумя шагами. Представим ситуацию: товар из этой приходной накладной уже был продан и списан другими документами (например, расходной накладной). Когда система выполняет шаг 1 и отменяет приход, на складе на короткий момент времени образуется временный отрицательный остаток. Контрольный механизм платформы фиксирует этот "кассовый разрыв" и справедливо блокирует дальнейшие действия. Ошибка "Не хватает остатка" при проведении прихода возникает именно из-за того, что система видит нехватку запасов для последующих списаний в момент перепроведения. В штатном режиме работы для предотвращения подобных ситуаций иногда используют автоматическое оприходование отрицательных остатков, но при ручной корректировке задним числом этот механизм не спасет.
Этот способ является быстрым, но требует осторожности и понимания процессов. Он заключается в создании временного расширения конфигурации, которое будет перехватывать процедуру проверки остатков и принудительно отключать отказ в проведении документа. Этот метод идеально подходит, когда нужно внести изменения в небольшое количество документов и вы уверены в корректности своих действий.
Рассмотрим по шагам:
"ПроведениеДокументов". Программная модификация проведения документов в этом модуле позволит гибко управлять логикой контроля.ЗапасыНаСкладахСписком и ЗапасыСписком.&После. В теле обработчика нужно принудительно установить параметр Отказ в значение ЛОЖЬ.Пример кода для вставки в расширение:
&После("ЗапасыНаСкладахСписком")
Процедура BWSЗапасыНаСкладахСписком(ДокОбъект, ВыборкаЗаписей, Отказ)
Отказ = ЛОЖЬ;
КонецПроцедуры
&После("ЗапасыСписком")
Процедура BWSЗапасыСписком(ДокОбъект, ВыборкаЗаписей, Отказ, ОстаткиРезервов)
Отказ = ЛОЖЬ;
КонецПроцедуры
После сохранения расширения и перезапуска предприятия вы сможете провести измененные документы. Система по-прежнему может выводить служебные сообщения об ошибке, но сам документ проведется, так как мы отменили отказ.
Важно! После того как все необходимые документы будут исправлены, обязательно закомментируйте или удалите этот код. Постоянно работающая такая "заглушка" может привести к серьезным перекосам в базе. Если в процессе возникли лишние записи, вам может пригодиться универсальная корректировка и чтение остатков регистра накопления для ручного исправления итогов.
Хотя программный метод работает, существуют более методологически верные подходы. Эти методы не требуют вмешательства в код и обеспечивают большую целостность данных.
Этот способ предполагает, что вы не трогаете исторические документы, а вводите остатки товаров в разрезе партий на определенную дату. Чтобы подготовить регистры к этой операции, иногда предварительно выполняется закрытие остатков регистра накопления на выбранную дату, чтобы обнулить старые записи без партий.
"Ввод начальных остатков" по разделу "Запасы".Этот метод безопасен и контролируем, но он не позволяет отследить историю движения конкретной партии до момента ввода остатков.
Это самый основательный, но и самый трудоемкий способ. Он подходит, если партионный учет нужно внедрить "задним числом" на всем протяжении работы базы.
После успешного внедрения учета возникает вопрос: как теперь увидеть остатки и движения в разрезе партий? В УНФ нет одного отчета с названием "Ведомость по партиям", однако стандартные отчеты можно легко адаптировать.
"Партия" в строки группировки после номенклатуры. Отчет покажет приход, расход и конечный остаток по каждой конкретной партии.Также не забудьте проверить настройки в самой карточке номенклатуры. Установка флага "Обязательное заполнение партий" поможет избежать ошибок пользователей в будущем, не позволяя проводить документы без указания аналитики.