Почему в документе Отпуск в 1С:ЗУП 3.1 скрываются реквизиты Вид отпуска и Вид компенсации и как их вернуть

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

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

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

Выясняем причину: как работает механизм динамической видимости «под капотом»

Разработчики решения 1С:ЗУП 3.1 заложили в логику формы документа ДокументСсылка.Отпуск механизм автоматического упрощения интерфейса. Его цель — скрыть «лишние» поля, если у пользователя нет необходимости делать выбор. Программа анализирует список доступных в базе начислений:

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

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

Почему не работают стандартные методы и расширения конфигурации

Когда пропадают элементы формы, первое действие любого специалиста — проверить настройку «Изменить форму» или написать расширение, принудительно устанавливающее свойство Видимость = Истина. Однако в данном случае это не помогает.

Дело в том, что в коде формы документа в событии ПриСозданииНаСервере или при изменении связанных реквизитов жестко прописан программный алгоритм переопределения видимости. Упрощенно этот код выглядит следующим образом:


// Примерная программная логика управления видимостью в 1С:ЗУП 3.1
ПараметрыОтображения = ПолучитьПараметрыОтображенияОтпускаНаСервере();
Если ПараметрыОтображения.КоличествоДоступныхНачислений <= 1 Тогда
    Элементы.ГруппаВидОтпуска.Видимость = Ложь;
    Элементы.ГруппаВидКомпенсации.Видимость = Ложь;
Иначе
    Элементы.ГруппаВидОтпуска.Видимость = Истина;
    Элементы.ГруппаВидКомпенсации.Видимость = Истина;
КонецЕсли;

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

Пошаговое решение проблемы

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

Способ 1. Перезапись начисления (основной рабочий метод)

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

  1. Перейдите в раздел Настройка — Начисления.
  2. Найдите в списке начисление Отпуск основной (или то начисление, которое используется у вас для проведения основных отпусков).
  3. Откройте карточку этого начисления.
  4. Не внося никаких изменений в форму, нажмите кнопку Записать и закрыть (или просто Записать).

Что происходит в этот момент в системе? При записи элемента справочника Начисления срабатывают встроенные обработчики событий в модуле объекта. Программа принудительно очищает и заново регистрирует параметры видов расчета в системных регистрах сведений, обновляя внутренний кэш доступности видов начислений для документов. После этой процедуры откройте документ Отпуск — реквизиты выбора должны снова появиться на форме.

Способ 2. Проверка дублирующих начислений и флага использования

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

  1. В списке Начисления нажмите кнопку Еще и выберите пункт Показывать неиспользуемые начисления.
  2. Проверьте, нет ли у вас созданных ранее альтернативных видов отпусков, которые могли быть ошибочно помечены флагом Начисление больше не используется.
  3. Если вы нашли такое начисление, откройте его, снимите флаг Начисление больше не используется, запишите элемент, а затем (при необходимости скрыть его снова) установите флаг обратно и повторно запишите. Этот цикл гарантированно перестроит индекс видов расчета в базе данных.

Способ 3. Очистка локального кэша платформы 1С

Иногда перезапись начисления не дает эффекта из-за «зависшего» локального кэша на конкретном рабочем месте пользователя. В этом случае выполним очистку кэша:

  1. Закройте программу 1С:Предприятие.
  2. Откройте список баз в стартовом окне запуска 1С.
  3. Выберите нужную информационную базу, нажмите кнопку Изменить, перейдите на последнюю вкладку настроек и в поле «Дополнительные параметры запуска» пропишите команду: /ClearCache.
  4. Запустите базу, после чего закройте ее и удалите параметр запуска /ClearCache (чтобы не замедлять последующие штатные запуски).

Способ 4. Тестирование и исправление базы данных

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

  1. Создайте резервную копию информационной базы (обязательно перед любыми техническими работами!).
  2. Запустите базу в режиме Конфигуратор.
  3. Перейдите в меню Администрирование — Тестирование и исправление...
  4. Установите флажки напротив пунктов Реиндексация таблиц информационной базы и Проверка логической целостности.
  5. Нажмите кнопку Выполнить и дождитесь окончания процесса.

Проведение тестирования исправит возможные внутренние ошибки СУБД или файловой таблицы, после чего алгоритмы автоподбора видов расчета в документах ЗУП начнут отрабатывать корректно.

← На главную