В процессе работы с программными продуктами на платформе 1С:Предприятие 8.2 и 8.3 (особенно в конфигурациях с обычным интерфейсом, таких как УТ 10.3, УПП 1.3 или КА 1.1) часто возникает необходимость массово перепровести документы. Это может потребоваться после исправления ошибок в модулях проведения, изменения цен или внесения исправлений в документы «задним числом». Рассмотрим, как работает встроенный инструмент Групповая обработка справочников и документов и нужно ли выполнять дополнительные действия для корректного обновления данных.
Основной вопрос пользователей и начинающих разработчиков заключается в следующем: нужно ли сначала запускать действие Снять отметку проведения, а затем Установить, или достаточно сразу выбрать «Установить»? Проанализируем, что происходит внутри системы при выборе этих команд.
Когда мы работаем в универсальной групповой обработке, при выборе действия Изменить: [Проведение документа] — Установить, система выполняет программный вызов метода Записать() с параметром РежимЗаписиДокумента.Проведение. Рассмотрим подробнее программную логику, которая скрыта за этой кнопкой:
// Примерный алгоритм, выполняемый обработкой внутри транзакции
ОбъектДокумента = СсылкаНаДокумент.ПолучитьОбъект();
Попытка
ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
Сообщить("Ошибка при проведении: " + ОписаниеОшибки());
КонецПопытки;
Вызов метода Записать в режиме Проведение автоматически инициирует выполнение процедуры ОбработкаПроведения в модуле объекта документа. Важный технический момент: если документ уже был проведен, платформа 1С перед началом проведения сама очистит старые движения документа по всем регистрам (если в свойствах документа не установлено иное). Таким образом, предварительное снятие проведения вручную не требуется — результат будет абсолютно одинаковым. Простое выполнение действия «Установить» полностью обновит движения документа в системе.
Важно различать реальное проведение и простую смену статуса. Проанализируем ситуацию, если бы мы просто меняли свойство Проведен. Как правильно заметили участники обсуждения, код типа об.Проведен = Истина; об.Записать(); не вызовет процедуру проведения и не сформирует движения в регистрах накопления или бухгалтерии. Он лишь изменит картинку в списке документов. Стандартная «Групповая обработка» работает корректно и использует полноценный метод Записать с флагом проведения, что гарантирует актуальность учетных данных.
Если вы выбрали нужные документы, нажали «Выполнить», но система проигнорировала уже проведенные документы, выясним причину. В типовой групповой обработке существует защитный механизм. Разберем по шагам, как его проверить:
Только после установки этой настройки действие «Установить» затронет уже проведенные объекты и выполнит их перепроведение.
Рассмотрим критическую особенность массового проведения через универсальную обработку. В конфигурациях типа 1С:Управление торговлей 10.3 учет остатков и себестоимости (партионный учет) жестко зависит от хронологии документов. Если мы отберем документы за месяц и просто запустим их проведение через групповую обработку, они будут обрабатываться в том порядке, в котором они расположены в табличной части обработки.
Если в списке документы отсортированы не по дате и времени (а, например, по номеру или контрагенту), то документ реализации может попытаться провестись раньше документа поступления. Это приведет к ошибкам «Недостаточно товара на складе» или к некорректному расчету себестоимости. Выясним, как этого избежать:
Последовательности документов. Это значит, что «граница последовательности» не сдвинется вперед автоматически после завершения всех операций.Проанализируем совет из обсуждения: использовать специализированный инструмент. В главном меню Операции выберите пункт Проведение документов. Это более продвинутый и безопасный способ для глобального перепроведения.
Рассмотрим преимущества этого метода:
Хотя технически «Установить проведение» выполняет всю работу, рассмотрим редкие случаи, когда предварительное снятие («распроведение») может быть полезным:
1. Очистка «грязных» движений: В старых версиях платформы или при наличии специфических ошибок в коде конфигурации (когда движения записываются вручную вне стандартных механизмов), при обычном перепроведении старые записи могут не удалиться. Снятие проведения гарантирует полную очистку регистров перед новой записью.
2. Анализ ошибок: Если база большая и сложная, иногда проще сначала распровести весь период, убедиться, что остатки «чистые», а затем пошагово запускать проведение, чтобы локализовать документ, на котором возникают ошибки нехватки товара.
Подведем итог нашего анализа. Если ваша задача — просто обновить движения в нескольких десятках документов через Групповую обработку справочников и документов, вам не нужно нажимать «Снять отметку проведения». Просто выберите Установить, убедившись в настройках, что изменение проведенных документов разрешено. Однако для массового перепроведения за длительный период с целью восстановления учета всегда отдавайте предпочтение штатному механизму Проведение документов из меню Операции.