В чем разница между восстановлением последовательности и перепроведением документов в 1С:УПП?

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

При работе в сложных конфигурациях, таких как УПП 1.3, специалисты часто сталкиваются с необходимостью исправления ошибок в прошлых периодах (например, в партионном учете за 2018 год). Возникает закономерный вопрос: достаточно ли просто запустить механизм Восстановления последовательности или необходимо выполнить полное Групповое перепроведение? Разберем подробно внутреннюю механику этих процессов, выясним причины возможных «косяков» и составим правильный алгоритм действий.

Механика группового перепроведения документов

Проанализируем, что происходит, когда мы запускаем стандартную обработку «Проведение документов». Этот механизм предназначен для массового выполнения процедуры проведения (вызова метода Записать(РежимЗаписиДокумента.Проведение)) для выбранного набора объектов. Рассмотрим ключевые особенности этого процесса:

  1. Выборка данных: Система берет документы за указанный период, часто без учета их логической взаимосвязи. Если не задана строгая сортировка, документы могут проводиться в порядке их внутреннего идентификатора (GUID) или просто по дате, что не всегда гарантирует правильное списание партий, если несколько документов созданы в одну секунду.
  2. Полная перезапись: При групповом перепроведении происходит полная очистка старых движений по всем регистрам (сведения, накопления, бухгалтерия) и формирование новых. Это наиболее «жесткий» способ обновить данные.
  3. Отсутствие контроля границы: Этот механизм не передвигает автоматически «границу последовательности» платформенного механизма, если вы не используете специализированные надстройки.

Механика восстановления последовательности

Теперь рассмотрим, чем отличается платформенный механизм восстановления последовательности. В 1С существует объект метаданных Последовательность, который следит за хронологическим порядком документов, влияющих на определенные ресурсы (например, остатки товаров).

Восстановление последовательности работает по следующему алгоритму:

  1. Поиск границы: Система находит самый ранний документ, после которого в цепочке произошли изменения (редактирование, удаление, перепроведение). Этот момент времени называется «Границей последовательности».
  2. Упорядоченное проведение: Система начинает проводить документы строго по одному в порядке их Момента Времени. Каждый следующий документ «видит» итоги, сформированные предыдущим.
  3. Актуализация: После успешного проведения каждого документа граница перемещается вперед.

Важный нюанс: Восстановление последовательности проводит только те документы, которые входят в данную конкретную последовательность. Если документ не зарегистрирован в ней, он будет пропущен, даже если он находится в этом временном интервале.

Почему «движения могут не обновиться» при восстановлении?

Существует мнение, что восстановление последовательности иногда работает «лениво» и не обновляет движения документов. Выясним причину этого явления. В прикладном коде конфигурации (особенно в УПП) внутри процедуры ОбработкаПроведения часто стоят оптимизационные проверки.

Рассмотрим пример логики, которая может привести к проблеме:


Если ЭтоНовый() Или Модифицированность() Или НеобходимПересчетПартий Тогда
    // Выполняем сложные расчеты и записываем движения
Иначе
    // Используем уже имеющиеся в базе расчетные данные
КонецЕсли;

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

Специфика УПП 1.3: Партионный учет и НДС

В конфигурации «Управление производственным предприятием» обычного платформенного восстановления часто недостаточно. Проанализируем ситуацию автора: изменение даты «Поступления доп. расходов» за 2018 год. Здесь задействован партионный учет.

Для корректного исправления данных в УПП необходимо использовать специализированные обработки:

Рекомендуемый алгоритм действий (на примере 2018 года)

Если вам нужно гарантированно исправить данные за прошлый период, разберем по шагам наиболее надежную методику:

  1. Сброс границы: Проанализируем дату самого раннего исправления. Необходимо вручную или программно установить границу последовательности на этот момент времени.
  2. Групповое снятие с проведения (опционально): Если ошибки массовые, иногда полезно программно отменить проведение цепочки документов, чтобы полностью очистить регистры от «мусора».
  3. Групповое перепроведение: Выполняем проведение документов за период. Это гарантирует, что прикладной код 1С сработает «на полную мощность», обновляя все реквизиты движений.
  4. Запуск обработки «Проведение по партиям»: Переходим в меню Интерфейс Заведующий учетом -> Регламентные операции -> Проведение по партиям. Устанавливаем период с 01.01.2018 и обязательно ставим флаг «Перепроводить проведенные документы». Это ключевой момент, который заставит систему пересчитать суммы списания с учетом ваших новых «Доп. расходов».
  5. Восстановление последовательности расчетов: После партий запускаем восстановление расчетов по контрагентам.
  6. Проверка: Обязательно формируем отчет «Ведомость по партиям товаров на складах» и проверяем наличие отрицательных остатков или «зависших» сумм без количества.

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

← На главную