Почему в 1С:ERP при записи документа «Корректировка регистров» очищаются движения и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет IT и автоматизация бизнеса
← На главную

При работе в 1С:ERP Управление предприятием 2.5 (или Комплексной автоматизации 2) специалисты часто сталкиваются с ситуацией, когда при заполнении документа Корректировка регистров по регистру Себестоимость товаров после нажатия кнопки «Записать» все внесенные данные в табличной части бесследно исчезают. При этом система не выдает никаких предупреждений или ошибок, документ успешно записывается и получает номер, но остается «пустым» внутри.

Особенно часто это проявляется при переносе остатков из других систем (например, из 1С:УПП), когда требуется внести корректировки концом года (31.12.2024), в то время как полноценный учет в новой базе планируется начать с начала следующего года (01.01.2025). Разберем по шагам, почему это происходит и как правильно настроить систему.

Выясняем причину «тихого» удаления движений

Проанализируем поведение системы. Если мы создаем документ датой 01.01.2025, движения сохраняются корректно. Однако стоит изменить дату на 31.12.2024, как табличная часть очищается при записи. На первый взгляд это похоже на работу механизма «Дата запрета редактирования», но это не так. Дата запрета обычно блокирует саму возможность записи документа или выдает явное сообщение об ошибке прав доступа.

В данном случае мы имеем дело с внутренней логикой механизмов учета себестоимости. В конфигурации заложена жесткая проверка целостности данных партионного учета. Система программно блокирует любые изменения в регистрах себестоимости, если период этих изменений меньше даты официального старта учета, указанной в константах. Рассмотрим программную логику этого процесса:

В типовом решении при записи набора записей регистра Себестоимость товаров вызываются процедуры общего модуля (например, в модулях, отвечающих за проведение или расчет себестоимости). Логика выглядит примерно следующим образом:


Если НЕ ЭтоВводОстатков И ПериодДвижения < ДатаНачалаУчетаСебестоимости Тогда
    НаборЗаписей.Очистить();
КонецЕсли;

Именно поэтому в Журнале регистрации мы видим успешную транзакцию изменения данных, но по факту в базе данных записи отсутствуют — они были стерты непосредственно перед физической записью в таблицу БД. Программа считает, что до даты начала учета данные могут вноситься только специализированными документами ввода остатков.

Проверка и изменение настройки «Дата начала учета себестоимости»

Чтобы решить проблему, нам необходимо найти и проверить значение константы Дата начала учета себестоимости. Разберем, где эта настройка находится в интерфейсе 1С:ERP 2.5:

  1. Перейдем в раздел НСИ и администрирование.
  2. Выберем пункт Настройка НСИ и разделовФинансовый результат и контроллинг.
  3. Раскроем подраздел Учет товаров.
  4. Найдем поле Дата начала учета себестоимости.

Если в этом поле стоит дата 01.01.2025, то любые ручные корректировки датой 31.12.2024 будут игнорироваться системой. Важный момент: если вы решите временно изменить эту дату «назад», помните, что это может повлиять на статусы закрытия месяца и потребовать пересчета себестоимости за уже закрытые периоды (если они были).

Методологически верное решение: использование документов «Ввод остатков»

Вместо использования универсального документа Корректировка регистров, который является инструментом «крайнего случая», рассмотрим использование стандартного механизма Помощник ввода остатков.

Система делает исключение для документов типа Ввод остатков. В их программной логике прописан приоритет, позволяющий формировать движения датой, предшествующей дате начала учета. Это связано с тем, что их прямое назначение — создать начальное сальдо для последующих расчетов. Если вам нужно скорректировать остатки при переходе с УПП, использование Ввода остатков будет более безопасным для целостности данных, так как этот документ автоматически заполнит сопутствующие аналитики и регистры (например, Партии товаров организации).

Как использовать отладчик для локализации проблемы

Если изменение даты начала учета не помогло, проанализируем ситуацию с помощью отладчика. Это поможет выявить, не вносит ли изменения какое-то расширение или дополнительная настройка. Выполним следующие шаги:

  1. Запустим конфигуратор и установим точку останова в модуле набора записей регистра Себестоимость товаров в процедуре ПередЗаписью.
  2. В режиме «Предприятие» попробуем записать документ Корректировка регистров.
  3. При срабатывании точки останова проанализируем Стек вызовов.
  4. Ищем вызовы функций из общих модулей, таких как УчетСебестоимости или ПроведениеСервер.
  5. Обратим внимание на переменные, содержащие настройки учетной политики. Часто именно там скрывается условие, которое обнуляет коллекцию Движения.

Рекомендации по корректировке регистров себестоимости

Посмотрим на ситуацию со стороны дальнейшей эксплуатации базы. Регистр Себестоимость товаров в ERP 2.5 не живет «сам по себе». Он тесно связан с регистрами партионного учета. Если мы внесем ручную правку только в один регистр, то при первом же выполнении регламентной операции Расчет себестоимости система обнаружит расхождения между партиями и себестоимостью, что может привести к непредсказуемым суммам списания или ошибкам в отчете «Ведомость по партиям товаров».

При необходимости использования именно Корректировки регистров, придерживайтесь следующего алгоритма:

  1. Временно установите Дата начала учета себестоимости в значение, меньшее чем дата вашего документа (например, 01.01.2024).
  2. Выполните запись документа Корректировка регистров и убедитесь, что движения сохранились.
  3. Верните Дата начала учета себестоимости в исходное положение (01.01.2025).
  4. Обязательно проверьте отчеты Себестоимость товаров и Ведомость по партиям товаров, чтобы убедиться в отсутствии «перекосов» в остатках.

Таким образом, мы выяснили, что «исчезновение» движений — это не баг платформы, а защитный механизм конфигурации, предотвращающий появление некорректных данных до момента официального запуска учета в системе.

← На главную