Как избавиться от всех начислений и удержаний в базе 1С:ЗУП 3.1, сохранив кадровую историю

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

При ведении учета в программе 1С:Зарплата и управление персоналом нередко возникают ситуации, когда из-за методологических ошибок прошлых периодов у сотрудников накапливаются фиктивные долги, некорректные остатки по взаиморасчетам или неверные данные по налогам. Если количество сотрудников велико (например, более 2000 человек), ручная корректировка каждого документа становится невозможной. В такой ситуации возникает потребность «обнулить» финансовую составляющую базы, оставив при этом кадровые данные: приказы о приеме, переводах, увольнениях и штатное расписание. Разберем наиболее эффективные методы решения этой задачи.

Метод 1: Использование документа «Перенос данных» для обнуления регистров

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

Рассмотрим пошагово, какие регистры требуют внимания:

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

Для реализации этого метода создадим документ Перенос данных с датой, предшествующей началу нового учета (например, 31.12.2023). В настройках состава регистров выберем вышеуказанные объекты и внесем корректирующие записи, которые выведут остатки в ноль. Это позволит сохранить «историю» в базе, но начать финансовый год с чистого листа.

Метод 2: Перенос кадровых данных в чистую базу через XML

Если база слишком «замусорена» и очистка регистров кажется трудоемкой, рассмотрим вариант с использованием универсальной обработки Выгрузка и загрузка данных XML. Этот способ позволяет перенести только нужные объекты из старой базы в новую, пустую конфигурацию.

Важные нюансы при выгрузке:

Во время настройки выгрузки выберем справочники (Физические лица, Сотрудники, Подразделения, Должности) и кадровые документы (Прием на работу, Кадровый перевод). Важно: при выгрузке документов программа может попытаться «подтянуть» по ссылкам связанные расчетные документы. Чтобы этого не произошло, необходимо внимательно настраивать правила или использовать фильтры по датам.

Разберем ситуацию с ошибкой «Нарушение прав доступа» при загрузке на Postgresql. Часто это связано с тем, что процесс сервера 1С не имеет прав на запись в каталог временных файлов или возникают конфликты при попытке записи констант. Проанализируем решение: попробуйте исключить Константы из списка выгружаемых объектов и выполнять загрузку под пользователем с полными административными правами, убедившись, что в базе-приемнике нет активных сессий других пользователей.

Метод 3: Массовая отмена проведения расчетных документов

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

Использовать простое выделение через Ctrl+A в больших списках не рекомендуется, так как это может привести к зависанию системы. Вместо этого воспользуемся обработкой Групповое изменение реквизитов:

  1. Выберем тип объекта: Начисление зарплаты и взносов, Премия, Материальная помощь и другие расчетные документы.
  2. Установим отбор по дате (например, «Дата меньше 01.01.2024»).
  3. В разделе «Специальные возможности» (под кнопкой «Дополнительные параметры») включим отображение служебных реквизитов.
  4. Найдем реквизит Проведен и установим значение Ложь.

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

Метод 4: Свертка информационной базы

Профессиональный способ «отсечения» лишних данных — штатная обработка Свертка информационной базы. Она объединяет в себе несколько подходов: автоматически создает документы Перенос данных с остатками на определенную дату и помечает на удаление все документы за предыдущие периоды.

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

Критический момент: Расчет среднего заработка

Проанализируем серьезную проблему, с которой вы столкнетесь после любой очистки: расчет среднего заработка для отпусков и больничных. Для расчета отпуска программе нужны данные о начислениях за последние 12 месяцев. Если вы удалите документы или очистите регистры за прошлый год, программа посчитает средний заработок равным нулю.

Чтобы этого избежать, после очистки базы необходимо заполнить специальные документы:

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

Технический пример автоматизации

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


Выборка = Документы.НачислениеЗарплаты.Выбрать(НачалоГода, КонецГода);
Пока Выборка.Следующий() Цикл
    ОбъектДок = Выборка.ПолучитьОбъект();
    Если ОбъектДок.Проведен Тогда
        Попытка
            ОбъектДок.Записать(РежимЗаписиДокумента.ОтменаПроведения);
            Сообщить("Отменено проведение: " + ОбъектДок);
        Исключение
            Сообщить("Ошибка при отмене документа: " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

Использование РежимЗаписиДокумента.ОтменаПроведения гарантирует, что все движения по всем регистрам (начисления, НДФЛ, взносы) будут корректно удалены системой автоматически.

Резюме: Для быстрого результата на большой базе лучше всего подходит сочетание свертки базы и последующего ввода данных для среднего заработка. Это обеспечит чистоту взаиморасчетов при сохранении работоспособности механизмов расчета отпусков и больничных.

← На главную