Плановые начисления интервальный регистр как удалить

Разбираемся, как чисто и без ошибок удалить лишнюю строку в интервальном регистре плановых начислений. Простая инструкция для 1С, чтобы база осталась в идеальном порядке.

Бесплатная консультация юриста

+7 (800) 302-87-29

Реклама jurik.ru

В конфигурации 1С:ЗУП 3․1 (и типовых на её базе) регистр сведений «Плановые начисления» имеет связанный интервальный регистр (полное имя: ПлановыеНачисленияИнтервальный)․ Данная статья подробно разбирает‚ как работает этот механизм‚ почему прямое удаление записей крайне не рекомендуется‚ и какие правильные методы существуют для отмены начислений‚ исправления ошибок загрузки или массовой очистки данных․

Теория: Зачем нужен интервальный регистр?

В 1С:ЗУП 3․1 для ускорения расчетов зарплаты и отчетов (например‚ «Анализ плановых начислений»‚ расчет ФОТ) используется механизм интервальных регистров сведений․

  • Основной регистр («Плановые начисления»): хранит историю изменений — документы «Назначение плановых начислений»‚ «Изменение плановых начислений» с действиями «Установить»‚ «Изменить»‚ «Отменить»․ Это таблица фактов․
  • Интервальный регистр («Плановые начисленияИнтервальный»): хранит срезы последних состояний на дату (Период‚ Сотрудник‚ Начисление‚ Значение‚ НачалоПериода‚ КонецПериода)․ Он позволяет мгновенно получить актуальный оклад/ставку на любую дату без сканирования всей истории документов․

Ключевое правило: Интервальный регистр, это производная структура․ Он автоматически перестраивается платформой 1С при записи документов основного регистра или при вызове метода перезаполнения․

Почему НЕЛЬЗЯ просто удалять записи из интервального регистра

Многие администраторы‚ видя «лишние» строки в интервальном регистре (через Консоль запросов или Универсальный отчет)‚ пытаются удалить их кодом:

НаборЗаписей = РегистрыСведений․ПлановыеНачисленияИнтервальный․СоздатьНаборЗаписей;
НаборЗаписей․Записать; // Очищает весь регистр

Последствия такого подхода:

  1. Расхождение данных: Основной регистр говорит одно (начисление активно)‚ а интервальный — другое (пусто)․ Отчеты по ФОТ‚ штатному расписанию‚ расчеты зарплаты будут выдавать нули или старые данные․
  2. Потеря истории: Интервальный регистр не имеет «истории изменений» в привычном понимании — он хранит только текущие срезы․ Удалив записи‚ вы теряете актуальное состояние‚ которое можно восстановить только полной перестройкой․
  3. Ошибки уникальности: При следующей попытке записи документа «Изменение плановых начислений» платформа может выдать ошибку «Записи регистра сведений стали неуникальными»‚ так как в основном регистре остались движения‚ а в интервальном — нет․

Правильные способы «удаления» (отмены) плановых начислений

Вариант А: Документ «Изменение плановых начислений» (Стандартный‚ для пользователей)

Это единственный правильный способ для рабочей базы в режиме предприятия․

  • Действие: «Отменить» (для полной отмены начисления с даты документа)․
  • Действие: «Изменить» с установкой даты окончания (если нужно закончить начисление в прошлом)․
  • Массовая обработка: В документе есть кнопка «Заполнить по сотрудникам» / «Подбор»‚ позволяющая отменить начисление сразу для всего отдела или организации․

Результат: Платформа сама запишет движения в основной регистр и автоматически обновит интервальный регистр за затраченные периоды․

Вариант Б: Программное перезаполнение интервального регистра (Для администраторов/разработчиков)

Если данные в основном регистре верны‚ а интервальный «поехал» (сбой при обновлении‚ ручное исправление БД‚ миграция)‚ используется служебный метод менеджера регистра:

// Выполняется в консоли запросов‚ внешней обработке или фоновом задании
РегистрыСведений․ПлановыеНачисления․ЗаполнитьИнтервальныйРегистр;

Нюансы:

  • Метод перестраивает интервальный регистр полностью по данным основного регистра․
  • На больших базах (1000+ сотрудников‚ история 5+ лет) может выполняться долго (минуты/часы)․ Запускайте в фоновом задании или ночью․
  • В версиях ЗУП 3․1․18+ механизм перезаполнения существенно оптимизирован и работает надежнее․

Вариант В: Полная очистка при начальной загрузке / тестировании (Только на чистой/тестовой базе!)

Если вы загружаете начальные данные (документ «Начальная штатная расстановка» или внешняя обработка загрузки) и хотите начать с чистого листа:

  1. Удалите все документы «Назначение плановых начислений»‚ «Изменение плановых начислений»‚ «Начальная штатная расстановка» (пометить на удаление и провести удаление помеченных)․
  2. Выполните Удаление помеченных объектов (Администрирование — Удаление помеченных объектов)․ Это очистит и основной‚ и интервальный регистры корректно․
  3. Только после этого загружайте данные заново․

Специфические сценарии и решения

Сценарий 1: «Исчезают записи прошлого года при изменении нескольких начислений»

Причина: Известная проблема ранних релизов ЗУП 3․1 (до ~3․1․18)‚ когда при записи документа «Изменение плановых начислений» для группы сотрудников некорректно пересчитывались интервалы для прошлых периодов․

Решение:

  1. Обновите конфигурацию до актуального релиза (3․1․18+)․
  2. Выполните РегистрыСведений․ПлановыеНачисления․ЗаполнитьИнтервальныйРегистр; для восстановления истории․

Сценарий 2: Ошибка «Записи регистра сведений стали неуникальными»

Возникает при попытке провести документ‚ если в интервальном регистре уже есть запись с таким набором измерений (Сотрудник‚ Начисление‚ Период)‚ но другие ресурсы‚ либо при ручном вмешательстве в БД․

Лечение: Только полная перестройка интервального регистра (Вариант Б)․ Ручная правка интервального регистра через SQL/Консоль запросов запрещена и приведет к рекурсивным ошибкам․

Сценарий 3: Связь с регистром «Значения периодических показателей расчета зарплаты (для сотрудников) Интервальный»

Плановые начисления, это источник данных для периодических показателей (ППРЗ)․ Если вы чистите плановые начисления‚ но не пересчитываете ППРЗ‚ в расчете зарплаты подтянутся старые значения․

Порядок действий при глобальной перезагрузке:

  1. Очистить/исправить документы Плановых начислений․
  2. Вызвать РегистрыСведений․ПлановыеНачисления․ЗаполнитьИнтервальныйРегистр;
  3. Выполнить перерасчет/перезаполнение регистра ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный (обычно делается документом «Перерасчет периодических показателей» или регламентным заданием)․

Инструментарий для диагностики (Перед удалением)

Перед любыми действиями проверьте состояние регистров через Универсальный отчет:

  1. Откройте «Универсальный отчет»․
  2. Тип объекта: Регистр сведений․
  3. Выберите: ПлановыеНачисленияИнтервальный․
  4. Поля: Период‚ Сотрудник‚ Начисление‚ Значение‚ НачалоПериода‚ КонецПериода․
  5. Сравните с отчетом по основному регистру ПлановыеНачисления (показать движения/остатки)․

Также полезно использовать стандартную обработку «Анализ плановых начислений» (Расчеты — Анализ плановых начислений), она показывает итоговые цифры‚ которые увидят бухгалтеры в зарплате․

Резюме: Чек-лист безопасной работы

Действие Можно? Комментарий
Удалить записи интервального регистра кодом НаборЗаписей․Записать НЕТ Разрушает целостность․ Восстановление — только полной перестройкой․
Отменить начисление документом «Изменение плановых начислений» ДА Единственно верный пользовательский способ․ Автообновление интервалов․
Вызвать ЗаполнитьИнтервальныйРегистр ДА Служебный метод для восстановления после сбоев/миграции․ Запускать в фоне․
Удалять документы основного регистра через «Удаление помеченных» ДА Корректно чистит и основной‚ и интервальный регистры․
Правка интервального регистра через SQL / Прямой доступ к БД КАТЕГОРИЧЕСКИ НЕТ Нарушает архитектуру 1С‚ гарантирует ошибки уникальности и некорректную зарплату․

Пример кода для фонового задания (Перестройка интервального регистра)

Рекомендуемый шаблон для создания регламентного задания или фонового задания на перестройку:

// Процедура для ФоновогоЗадания или РегламентногоЗадания
Процедура ПерестроитьИнтервальныйПлановыеНачисления Экспорт
 
 // 1․ Логирование начала
 ЖурналРегистрации․Записать("Начало перестройки интервального регистра ПлановыеНачисления"‚ УровеньЖурналаРегистрации․Информация);
 
 // 2․ Вызов системного метода (может быть долгим)
 // Внимание: метод может требовать прав полного доступа к регистру
 Попытка
 РегистрыСведений․ПлановыеНачисления․ЗаполнитьИнтервальныйРегистр;
 ЖурналРегистрации․Записать("Перестройка завершена успешно"‚ УровеньЖурналаРегистрации․Информация);
 Исключение
 ЖурналРегистрации․Записать("Ошибка перестройки: " + ОписаниеОшибки‚ УровеньЖурналаРегистрации․Ошибка);
 // Можно отправить уведомление админу через Email/Telegram
 КонецПопытки;
 
КонецПроцедуры

Интервальный регистр «Плановые начисления» — это кэш‚ а не хранилище данных․ Удалять записи в нем вручную — это как чистить кэш браузера‚ удаляя файлы на диске вручную‚ пока браузер работает: результат непредсказуем․

Алгоритм действий при любой проблеме:

  1. Исправьте исходные документы («Назначение»‚ «Изменение»‚ «Начальная штатная расстановка»)․
  2. Проведите их (или выполните «Удаление помеченных» для чистки)․
  3. При необходимости — запустите РегистрыСведений․ПлановыеНачисления․ЗаполнитьИнтервальныйРегистр;․
  4. Проверьте отчет «Анализ плановых начислений»․

Соблюдение этого порядка гарантирует целостность данных зарплаты‚ корректность расчета ФОТ и отсутствие ошибок уникальности при дальнейшей работе пользователей․