Хронологическое перепроведение в ЗУП 3.1: когда оно нужно и как не испортить расчёт
Содержание
Чтобы в 1С ЗУП перепровести все документы в хронологическом порядке, сделайте копию базы , отберите документы за нужный период, отсортируйте их по дате по возрастанию и проводите от самого раннего к самому позднему. Типовой команды «перепровести всё» в ЗУП 3.1 нет, поэтому используют групповое проведение из списков или внешнюю обработку , которая сама обходит документы по дате.
Сначала решите, нужно ли это вообще. В ЗУП перепроведение не пересчитывает начисления: документ записывает в регистры то, что уже лежит в его табличных частях. Массовый проход по закрытым месяцам легко создаёт новые расхождения вместо того, чтобы лечить старые. Поэтому сначала диагноз, потом процедура.
Зачем соблюдать порядок дат при перепроведении в ЗУП
В ЗУП почти все данные зависят от того, что случилось раньше. Кадровый перевод опирается на приём, увольнение — на действующие плановые начисления, отпуск — на кадровую историю и средний заработок.
Если провести документы вразнобой, программа на момент проведения позднего документа «не увидит» раннего. Что получается в итоге:
- 🔴 документ увольнения не проводится: сотрудник ещё «не принят» в регистрах;
- 🟠 перевод закрывает не те плановые начисления;
- 🟡 отпуск или больничный берёт неверный график и норму времени;
- 🔵 в регистре перерасчётов появляются записи по месяцам, которые никто не трогал.
Порядок важен и внутри одного дня. Приём и перевод с одной датой должны идти именно в такой последовательности. Платформа хранит у документа не только дату, но и время. Если два документа стоят на одну дату и одно время, порядок между ними не гарантирован.
Если документы за один день идут не в той последовательности, поправьте время в поле даты: например, приёму поставьте 09:00, переводу — 09:01. Время документа не попадает в печатные формы и отчёты.
Когда без полного перепроведения не обойтись
Полный проход по всем документам — крайняя мера. Он оправдан в нескольких ситуациях:
- 🔧 После загрузки или переноса данных. Например, начальные кадровые данные и документы перенесли обработкой без проведения или проводили в порядке выгрузки, а не по датам.
- 🧩 После исправления ошибки в коде доработки. Нетиповое расширение неверно писало движения, его исправили — старые движения нужно переписать.
- 🗂 После восстановления базы из частичной копии или ручного удаления записей регистров.
- ⚠️ Когда отчёты расходятся с документами и точечное перепроведение не помогает.
Когда массовое перепроведение — плохая идея:
- ❌ отчётность за период уже сдана: 6-НДФЛ, РСВ, ЕФС-1. Любое изменение движений в сданных месяцах — это повод для уточнёнок;
- ❌ ошибка в одном сотруднике или одном месяце. Тогда перепроводят только его документы или делают документ-исправление;
- ❌ вы хотите «пересчитать» зарплату. Перепроведение этого не делает: для пересчёта откройте документ, нажмите «Пересчитать» или «Заполнить» и только потом проведите.
| Ситуация | Что делать |
|---|---|
| Ошибка у 1-2 сотрудников | Перепровести их кадровые и расчётные документы по датам |
| Ошибка в закрытом месяце | Документ-исправление в текущем периоде |
| Массовая загрузка без проведения | Полное перепроведение за период загрузки |
| Сбой регистров после доработки | Полное перепроведение на копии, сверка, затем рабочая база |
Подготовка: копия базы, проверка целостности и дата запрета
Перепроведение меняет движения во всех регистрах сразу. Делайте его только после полной резервной копии.
Резервная копия
- Попросите всех пользователей выйти из базы.
- Откройте базу в режиме Конфигуратор.
- Выберите
Администрирование → Выгрузить информационную базуи сохраните файл .dt. - Для клиент-серверной базы дополнительно сделайте бэкап средствами СУБД.
Тестовая копия
Разверните файл .dt в отдельную базу и выполните весь проход сначала там. На копии вы увидите, сколько документов не проведётся и сколько займёт процедура. В рабочей базе повторяйте только то, что сработало.
Проверка целостности
Если подозреваете повреждение данных, перед перепроведением запустите в Конфигураторе Администрирование → Тестирование и исправление. Для этого нужен монопольный доступ: в базе не должно быть других сеансов.
Отметьте проверку логической и ссылочной целостности. Битые ссылки и повреждённые объекты лучше выявить до проведения, иначе процедура будет падать на них раз за разом.
Дата запрета изменения данных
В ЗУП 3.1 закрытые периоды защищают датой запрета. Настройка находится в разделе Администрирование → Общие настройки, флажок «Даты запрета изменения».
- 🔒 Если дата запрета стоит, документы раньше неё не проведутся — система вернёт ошибку.
- 🔓 Временно снимать запрет можно только на тестовой копии или с согласия главного бухгалтера.
- ↩️ После завершения верните дату запрета на место.
Как перепровести все документы в хронологическом порядке: три способа
Выбор зависит от объёма. Для сотни документов хватит ручного проведения из списков. Для тысяч — нужна обработка.
| Способ | Когда подходит | Риски |
|---|---|---|
| Групповое проведение из списка | Один-два вида документов, небольшой период | Легко пропустить вид документа или нарушить порядок между видами |
| Универсальная обработка группового перепроведения | Все виды документов, без программирования | Внешнюю обработку нужно взять из проверенного источника |
| Своя внешняя обработка | Нужен контроль порядка и журнал ошибок | Требует проверки кода на копии |
Способ 1. Групповое проведение из списков документов
- Включите полное меню: в ЗУП откройте
Главное меню → Сервис → Параметрыи отметьте «Отображать команду “Все функции”». - Перейдите в
Главное меню → Все функции → Документыи откройте список нужного вида, например «Прием на работу». - Установите отбор по периоду и отсортируйте список по колонке «Дата» по возрастанию.
- Выделите документы мышью с Shift или комбинацией Ctrl+A.
- В командной панели списка выберите «Провести» — в меню «Еще», если кнопки нет на панели.
Слабое место способа — переходы между видами документов. Если провести сначала все приёмы, затем все переводы и все увольнения, порядок дат между ними нарушится. Поэтому идите короткими интервалами: месяц за месяцем, внутри месяца — кадровые документы раньше расчётных.
Удобный порядок внутри месяца:
- Приёмы, переводы, увольнения и кадровые изменения.
- Отпуска, больничные, командировки, отсутствия.
- Разовые начисления и премии.
- Начисление зарплаты и взносов.
- Ведомости и выплаты.
- Отражение зарплаты в бухучёте.
Способ 2. Универсальная обработка
На дисках и в разделе универсальных обработок ИТС давно лежит внешняя обработка группового перепроведения для управляемого интерфейса. Она умеет перепроводить документы всех видов за период по времени документа.
Откройте её через Главное меню → Файл → Открыть. Перед запуском проверьте, что в обработке отмечены только проводимые документы и задан правильный период. Запуск — с правами администратора.
Способ 3. Своя внешняя обработка с журналом ошибок
Если нужен полный контроль, создайте внешнюю обработку в Конфигураторе. Ниже процедура сервера: она собирает проведённые документы всех видов за период, сортирует их по дате и проводит заново. Ошибки не останавливают проход, а пишутся в журнал регистрации.
&НаСервереБезКонтекста
Процедура ПерепровестиЗаПериодНаСервере(НачалоПериода, КонецПериода)
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Ссылка");
Таблица.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
Для Каждого МетаДок Из Метаданные.Документы Цикл
Если МетаДок.Проведение <> Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Д.Ссылка КАК Ссылка, Д.Дата КАК Дата
|ИЗ Документ." + МетаДок.Имя + " КАК Д
|ГДЕ Д.Проведен И Д.Дата МЕЖДУ &Начало И &Конец";
Запрос.УстановитьПараметр("Начало", НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр("Конец", КонецДня(КонецПериода));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Выборка);
КонецЦикла;
КонецЦикла;
Таблица.Сортировать("Дата");
Для Каждого Строка Из Таблица Цикл
Попытка
ДокументОбъект = Строка.Ссылка.ПолучитьОбъект();
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("Перепроведение документов",
УровеньЖурналаРегистрации.Ошибка, , Строка.Ссылка,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Что важно в этом коде:
- 📌 берутся только проведённые документы — непроведённые и помеченные на удаление не трогаются;
- 📌 сортировка по реквизиту «Дата» учитывает и время документа;
- 📌 запись идёт обычным проведением, со всеми проверками конфигурации — так, как если бы пользователь нажал «Провести».
Не включайте в такой обработке режим обмена данными (ОбменДанными.Загрузка = Истина). В этом режиме конфигурация пропускает обработчики проведения, и движения не перезапишутся.
После прохода откройте журнал регистрации с отбором по событию «Перепроведение документов ». Там будет список документов, которые не провелись, с текстом ошибки по каждому.
Как ускорить перепроведение больших баз ЗУП
В базе на несколько тысяч сотрудников за пять лет набираются сотни тысяч документов. Полный проход может идти много часов.
Что реально помогает:
- ⏱ Дробите период. Запускайте по месяцу или по кварталу. Ошибка в середине не заставит начинать с нуля, а результат проще сверить.
- 🌙 Работайте вне рабочего дня. Пользователи в базе тормозят проход блокировками и сами получают ошибки при записи.
- 🖥 Выполняйте код на сервере. Процедура в примере выше — серверная, без контекста формы. Если проводить каждый документ отдельным вызовом с клиента, время вырастет в разы.
- 🗄 Не гоняйте большую базу в файловом режиме. Скопируйте её в клиент-серверный вариант на нормальный SQL-сервер, перепроведите там и сверьте.
- 🎯 Сужайте состав. Если сбой только в кадровых регистрах, не трогайте ведомости и отражение в бухучёте.
Замерьте время на одном месяце тестовой копии и умножьте на число месяцев. Так вы заранее поймёте, хватит ли ночи или нужны выходные.
Контроль после перепроведения: что сверить и как исправлять
Перепроведение закончилось — это ещё не результат. Результат — это когда цифры сошлись с тем, что было до прохода, или изменились там, где вы ожидали.
Что сверить
- Ошибки проведения. Журнал регистрации или сообщения обработки. Каждый непроведённый документ разберите вручную.
- Начисления и удержания. Сформируйте отчёт «Анализ начислений и удержаний» за весь период до и после прохода и сравните итоги по месяцам.
- Налоги и взносы. Сравните суммы НДФЛ и страховых взносов по месяцам с теми, что попали в сданную отчётность.
- Кадровые данные. Выборочно откройте личные карточки нескольких сотрудников с переводами и проверьте должность и оклад на разные даты.
| Показатель | Наши данные | Контрагент | Δ |
|---|---|---|---|
| Начислено за период | — | ||
| НДФЛ исчислен | — | ||
| Страховые взносы | — | ||
| Выплачено сотрудникам | — |
Если суммы разошлись
- 🔍 Расхождение в одном месяце — найдите в нём документы с изменёнными движениями и сравните их с копией базы до прохода.
- 🧾 Расхождение в сданном периоде — не правьте старые документы. Проведите исправление в текущем месяце, чтобы не порождать уточнённую отчётность без необходимости.
- ♻️ Появились перерасчёты прошлых периодов — при следующем начислении зарплаты программа предложит их выполнить. Проверьте каждый: часть из них — следствие перепроведения, а не реальной ошибки.
Если результат на рабочей базе вас не устроил, не пытайтесь «доперепровести» до правильных сумм. Загрузите выгрузку .dt, разберитесь с причиной на копии и повторите.
Что мешает документам провестись и как это устранить
Почти на каждом большом проходе часть документов не проводится. Причины повторяются, и их удобно разбирать по сообщению об ошибке.
После каждой правки проводите не только исправленный документ, но и все более поздние документы этого сотрудника. Иначе исправление не дойдёт до последующих месяцев.