Почему в 1С:ЗУП 3.1 не отображаются показатели и не считается зарплата?

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

Каждый расчетчик зарплаты или администратор системы хотя бы раз сталкивался с ситуацией, когда программа 1С:Зарплата и Управление Персоналом (ЗУП) редакции 3.1 начинает вести себя непредсказуемо. Одной из самых коварных проблем является внезапное «обнуление» показателей расчета в документах начисления. Пользователь открывает документ Начисление зарплаты и взносов, пытается рассчитать сотрудников, но табличные части остаются пустыми, а все плановые показатели (оклады, тарифные ставки, надбавки) на форме «Начисления и удержания» отображаются равными нулю.

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

Выясняем причину: коварный реквизит «Головная организация»

Первоисточником описанной проблемы является очистка служебного реквизита Головная организация в справочнике Организации. В архитектуре 1С:ЗУП 3.1 этот реквизит имеет фундаментальное значение:

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

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

Почему очищается реквизит?

Проанализируем основные причины, из-за которых происходит автоматическое или случайное затирание этого реквизита:

Технические нюансы: почему показатели приравниваются к нулю?

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

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

Где ТаблицаКадров.Организация.ГоловнаяОрганизация = ТаблицаПоказателей.Организация.ГоловнаяОрганизация

Когда реквизит ГоловнаяОрганизация в карточке вашей компании пуст, СУБД пытается выполнить левое или внутреннее соединение таблиц по значению ЗначениеЗаполнено(ГоловнаяОрганизация) = Ложь (пустая ссылка). В результате такого соединения выборка возвращает пустой набор записей. Программа считает, что у сотрудника нет действующих плановых начислений и показателей на дату расчета, поэтому выводит нули на форме и отказывается производить расчет.

Сопутствующие симптомы и ошибки

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

Инструкция по решению проблемы по шагам

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

Способ 1: Интерактивное исправление через интерфейс программы

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

  1. Перейдите в раздел меню Настройка, далее выберите пункт Организации.
  2. Откройте карточку вашей проблемной организации двойным кликом мыши.
  3. В верхней части формы найдите и установите флаг «Это филиал (обособленное подразделение)».
  4. После установки этого флага на форме отобразится скрытое ранее поле «Головная организация». В этом поле выберите из списка эту же самую организацию (то есть сошлитесь на саму себя).
  5. Снимите флаг «Это филиал (обособленное подразделение)». Поле скроется, но введенная вами ссылка останется в памяти объекта.
  6. Нажмите кнопку Записать и закрыть для сохранения изменений.

Способ 2: Использование обработки «Групповое изменение реквизитов»

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

  1. Перейдите в раздел Администрирование -> Обслуживание -> Корректировка данных и откройте ссылку Групповое изменение реквизитов.
  2. В поле «Выбирать элементы типа» укажите объект Организация (справочник «Организации»).
  3. При необходимости настройте отбор по конкретной организации, требующей исправления.
  4. В списке доступных для изменения реквизитов найдите строку Головная организация.
  5. В колонке «Новое значение» выберите из справочника соответствующую головную организацию (ссылку на саму себя).
  6. Нажмите кнопку Изменить реквизиты внизу формы и дождитесь завершения выполнения операции.

Способ 3: Программное восстановление реквизита (для разработчиков)

Если интерактивные методы по какой-то причине заблокированы или вы хотите автоматизировать процесс исправления в коде внешней обработки, используйте следующий программный код на языке 1С. Мы программно отключаем бизнес-процессы проверки записи с помощью свойства ОбменДанными.Загрузка = Истина, чтобы гарантировать успешную запись изменений.


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

Обязательный финальный шаг: Пересчет планового ФОТ

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

Для этого выполните следующие действия:

  1. Перейдите в раздел программы Зарплата.
  2. В блоке Сервис найдите и откройте обработку Пересчет планового ФОТ.
  3. В открывшейся форме выберите вашу организацию и нажмите кнопку Выполнить пересчет.
  4. Дождитесь окончания выполнения процедуры. Программа полностью пересчитает плановый фонд оплаты труда по всем сотрудникам организации и перезаполнит служебные регистры сведений кадровой истории.

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

← На главную