Хронологическое перепроведение в ЗУП 3.1: когда оно нужно и как не испортить расчёт

· 10 мин

Содержание

Чтобы в 1С ЗУП перепровести все документы в хронологическом порядке, сделайте копию базы , отберите документы за нужный период, отсортируйте их по дате по возрастанию и проводите от самого раннего к самому позднему. Типовой команды «перепровести всё» в ЗУП 3.1 нет, поэтому используют групповое проведение из списков или внешнюю обработку , которая сама обходит документы по дате.

Сначала решите, нужно ли это вообще. В ЗУП перепроведение не пересчитывает начисления: документ записывает в регистры то, что уже лежит в его табличных частях. Массовый проход по закрытым месяцам легко создаёт новые расхождения вместо того, чтобы лечить старые. Поэтому сначала диагноз, потом процедура.

Зачем соблюдать порядок дат при перепроведении в ЗУП

В ЗУП почти все данные зависят от того, что случилось раньше. Кадровый перевод опирается на приём, увольнение — на действующие плановые начисления, отпуск — на кадровую историю и средний заработок.

Если провести документы вразнобой, программа на момент проведения позднего документа «не увидит» раннего. Что получается в итоге:

  • 🔴 документ увольнения не проводится: сотрудник ещё «не принят» в регистрах;
  • 🟠 перевод закрывает не те плановые начисления;
  • 🟡 отпуск или больничный берёт неверный график и норму времени;
  • 🔵 в регистре перерасчётов появляются записи по месяцам, которые никто не трогал.

Порядок важен и внутри одного дня. Приём и перевод с одной датой должны идти именно в такой последовательности. Платформа хранит у документа не только дату, но и время. Если два документа стоят на одну дату и одно время, порядок между ними не гарантирован.

Если документы за один день идут не в той последовательности, поправьте время в поле даты: например, приёму поставьте 09:00, переводу — 09:01. Время документа не попадает в печатные формы и отчёты.

Когда без полного перепроведения не обойтись

Полный проход по всем документам — крайняя мера. Он оправдан в нескольких ситуациях:

  1. 🔧 После загрузки или переноса данных. Например, начальные кадровые данные и документы перенесли обработкой без проведения или проводили в порядке выгрузки, а не по датам.
  2. 🧩 После исправления ошибки в коде доработки. Нетиповое расширение неверно писало движения, его исправили — старые движения нужно переписать.
  3. 🗂 После восстановления базы из частичной копии или ручного удаления записей регистров.
  4. ⚠️ Когда отчёты расходятся с документами и точечное перепроведение не помогает.

Когда массовое перепроведение — плохая идея:

  • ❌ отчётность за период уже сдана: 6-НДФЛ, РСВ, ЕФС-1. Любое изменение движений в сданных месяцах — это повод для уточнёнок;
  • ❌ ошибка в одном сотруднике или одном месяце. Тогда перепроводят только его документы или делают документ-исправление;
  • ❌ вы хотите «пересчитать» зарплату. Перепроведение этого не делает: для пересчёта откройте документ, нажмите «Пересчитать» или «Заполнить» и только потом проведите.
СитуацияЧто делать
Ошибка у 1-2 сотрудниковПерепровести их кадровые и расчётные документы по датам
Ошибка в закрытом месяцеДокумент-исправление в текущем периоде
Массовая загрузка без проведенияПолное перепроведение за период загрузки
Сбой регистров после доработкиПолное перепроведение на копии, сверка, затем рабочая база

Подготовка: копия базы, проверка целостности и дата запрета

Перепроведение меняет движения во всех регистрах сразу. Делайте его только после полной резервной копии.

Резервная копия

  1. Попросите всех пользователей выйти из базы.
  2. Откройте базу в режиме Конфигуратор.
  3. Выберите Администрирование → Выгрузить информационную базу и сохраните файл .dt.
  4. Для клиент-серверной базы дополнительно сделайте бэкап средствами СУБД.

Тестовая копия

Разверните файл .dt в отдельную базу и выполните весь проход сначала там. На копии вы увидите, сколько документов не проведётся и сколько займёт процедура. В рабочей базе повторяйте только то, что сработало.

Проверка целостности

Если подозреваете повреждение данных, перед перепроведением запустите в Конфигураторе Администрирование → Тестирование и исправление. Для этого нужен монопольный доступ: в базе не должно быть других сеансов.

Отметьте проверку логической и ссылочной целостности. Битые ссылки и повреждённые объекты лучше выявить до проведения, иначе процедура будет падать на них раз за разом.

Дата запрета изменения данных

В ЗУП 3.1 закрытые периоды защищают датой запрета. Настройка находится в разделе Администрирование → Общие настройки, флажок «Даты запрета изменения».

  • 🔒 Если дата запрета стоит, документы раньше неё не проведутся — система вернёт ошибку.
  • 🔓 Временно снимать запрет можно только на тестовой копии или с согласия главного бухгалтера.
  • ↩️ После завершения верните дату запрета на место.

Как перепровести все документы в хронологическом порядке: три способа

Выбор зависит от объёма. Для сотни документов хватит ручного проведения из списков. Для тысяч — нужна обработка.

СпособКогда подходитРиски
Групповое проведение из спискаОдин-два вида документов, небольшой периодЛегко пропустить вид документа или нарушить порядок между видами
Универсальная обработка группового перепроведенияВсе виды документов, без программированияВнешнюю обработку нужно взять из проверенного источника
Своя внешняя обработкаНужен контроль порядка и журнал ошибокТребует проверки кода на копии

Способ 1. Групповое проведение из списков документов

  1. Включите полное меню: в ЗУП откройте Главное меню → Сервис → Параметры и отметьте «Отображать команду “Все функции”».
  2. Перейдите в Главное меню → Все функции → Документы и откройте список нужного вида, например «Прием на работу».
  3. Установите отбор по периоду и отсортируйте список по колонке «Дата» по возрастанию.
  4. Выделите документы мышью с Shift или комбинацией Ctrl+A.
  5. В командной панели списка выберите «Провести» — в меню «Еще», если кнопки нет на панели.

Слабое место способа — переходы между видами документов. Если провести сначала все приёмы, затем все переводы и все увольнения, порядок дат между ними нарушится. Поэтому идите короткими интервалами: месяц за месяцем, внутри месяца — кадровые документы раньше расчётных.

Удобный порядок внутри месяца:

  1. Приёмы, переводы, увольнения и кадровые изменения.
  2. Отпуска, больничные, командировки, отсутствия.
  3. Разовые начисления и премии.
  4. Начисление зарплаты и взносов.
  5. Ведомости и выплаты.
  6. Отражение зарплаты в бухучёте.

Способ 2. Универсальная обработка

На дисках и в разделе универсальных обработок ИТС давно лежит внешняя обработка группового перепроведения для управляемого интерфейса. Она умеет перепроводить документы всех видов за период по времени документа.

Откройте её через Главное меню → Файл → Открыть. Перед запуском проверьте, что в обработке отмечены только проводимые документы и задан правильный период. Запуск — с правами администратора.

Способ 3. Своя внешняя обработка с журналом ошибок

Если нужен полный контроль, создайте внешнюю обработку в Конфигураторе. Ниже процедура сервера: она собирает проведённые документы всех видов за период, сортирует их по дате и проводит заново. Ошибки не останавливают проход, а пишутся в журнал регистрации.

&НаСервереБезКонтекста
Процедура ПерепровестиЗаПериодНаСервере(НачалоПериода, КонецПериода)

	Таблица = Новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("Ссылка");
	Таблица.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));

	Для Каждого МетаДок Из Метаданные.Документы Цикл
		Если МетаДок.Проведение <> Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
			Продолжить;
		КонецЕсли;
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ Д.Ссылка КАК Ссылка, Д.Дата КАК Дата
		|ИЗ Документ." + МетаДок.Имя + " КАК Д
		|ГДЕ Д.Проведен И Д.Дата МЕЖДУ &Начало И &Конец";
		Запрос.УстановитьПараметр("Начало", НачалоДня(НачалоПериода));
		Запрос.УстановитьПараметр("Конец", КонецДня(КонецПериода));
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Выборка);
		КонецЦикла;
	КонецЦикла;

	Таблица.Сортировать("Дата");

	Для Каждого Строка Из Таблица Цикл
		Попытка
			ДокументОбъект = Строка.Ссылка.ПолучитьОбъект();
			ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
		Исключение
			ЗаписьЖурналаРегистрации("Перепроведение документов",
				УровеньЖурналаРегистрации.Ошибка, , Строка.Ссылка,
				ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		КонецПопытки;
	КонецЦикла;

КонецПроцедуры

Что важно в этом коде:

  • 📌 берутся только проведённые документы — непроведённые и помеченные на удаление не трогаются;
  • 📌 сортировка по реквизиту «Дата» учитывает и время документа;
  • 📌 запись идёт обычным проведением, со всеми проверками конфигурации — так, как если бы пользователь нажал «Провести».

Не включайте в такой обработке режим обмена данными (ОбменДанными.Загрузка = Истина). В этом режиме конфигурация пропускает обработчики проведения, и движения не перезапишутся.

После прохода откройте журнал регистрации с отбором по событию «Перепроведение документов ». Там будет список документов, которые не провелись, с текстом ошибки по каждому.

Перед запуском в рабочей базе
Выполнено: 0 / 5

Как ускорить перепроведение больших баз ЗУП

В базе на несколько тысяч сотрудников за пять лет набираются сотни тысяч документов. Полный проход может идти много часов.

Что реально помогает:

  • ⏱ Дробите период. Запускайте по месяцу или по кварталу. Ошибка в середине не заставит начинать с нуля, а результат проще сверить.
  • 🌙 Работайте вне рабочего дня. Пользователи в базе тормозят проход блокировками и сами получают ошибки при записи.
  • 🖥 Выполняйте код на сервере. Процедура в примере выше — серверная, без контекста формы. Если проводить каждый документ отдельным вызовом с клиента, время вырастет в разы.
  • 🗄 Не гоняйте большую базу в файловом режиме. Скопируйте её в клиент-серверный вариант на нормальный SQL-сервер, перепроведите там и сверьте.
  • 🎯 Сужайте состав. Если сбой только в кадровых регистрах, не трогайте ведомости и отражение в бухучёте.

Замерьте время на одном месяце тестовой копии и умножьте на число месяцев. Так вы заранее поймёте, хватит ли ночи или нужны выходные.

Контроль после перепроведения: что сверить и как исправлять

Перепроведение закончилось — это ещё не результат. Результат — это когда цифры сошлись с тем, что было до прохода, или изменились там, где вы ожидали.

Что сверить

  1. Ошибки проведения. Журнал регистрации или сообщения обработки. Каждый непроведённый документ разберите вручную.
  2. Начисления и удержания. Сформируйте отчёт «Анализ начислений и удержаний» за весь период до и после прохода и сравните итоги по месяцам.
  3. Налоги и взносы. Сравните суммы НДФЛ и страховых взносов по месяцам с теми, что попали в сданную отчётность.
  4. Кадровые данные. Выборочно откройте личные карточки нескольких сотрудников с переводами и проверьте должность и оклад на разные даты.
Сверка итогов до и после перепроведения
ПоказательНаши данныеКонтрагентΔ
Начислено за период—
НДФЛ исчислен—
Страховые взносы—
Выплачено сотрудникам—
Итоговое расхождение: 0 ₽

Если суммы разошлись

  • 🔍 Расхождение в одном месяце — найдите в нём документы с изменёнными движениями и сравните их с копией базы до прохода.
  • 🧾 Расхождение в сданном периоде — не правьте старые документы. Проведите исправление в текущем месяце, чтобы не порождать уточнённую отчётность без необходимости.
  • ♻️ Появились перерасчёты прошлых периодов — при следующем начислении зарплаты программа предложит их выполнить. Проверьте каждый: часть из них — следствие перепроведения, а не реальной ошибки.

Если результат на рабочей базе вас не устроил, не пытайтесь «доперепровести» до правильных сумм. Загрузите выгрузку .dt, разберитесь с причиной на копии и повторите.

Что мешает документам провестись и как это устранить

Почти на каждом большом проходе часть документов не проводится. Причины повторяются, и их удобно разбирать по сообщению об ошибке.

Диагностика: выберите симптом

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

Частые вопросы

Пересчитает ли перепроведение зарплату по новым окладам?
Нет. При проведении документ «Начисление зарплаты» записывает в регистры уже рассчитанные строки. Чтобы суммы изменились, документ нужно перезаполнить или пересчитать, а затем провести.
Можно ли перепровести документы, пока бухгалтеры работают в базе?
Технически да, но это плохая практика. Пользователи получат ошибки блокировок, а их новые документы вклинятся в середину прохода. Планируйте работу на нерабочее время.
Почему документ не проводится с ошибкой про дату запрета?
Дата документа раньше даты запрета изменения данных. Либо согласуйте временное снятие запрета, либо оставьте документ как есть и исправляйте период документом-исправлением.
Нужно ли перепроводить документы, помеченные на удаление?
Нет. Их проведение отменено, движений у них нет. Удалите их обработкой удаления помеченных объектов или оставьте — на расчёт они не влияют.
Сколько времени занимает полное перепроведение?
Зависит от числа документов и сервера. Надёжный способ узнать — замерить один месяц на тестовой копии и пересчитать на весь период.