Как отобразить скрытые кнопки Пересчитать и Доначислить сейчас в документе Начисление зарплаты ЗУП 3.1

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

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

Анализ логики работы интерфейса в ЗУП 3.1

Для начала проанализируем ситуацию: почему пользователь с полными правами не видит нужные элементы? Дело не в правах доступа (ролях), а в программном управлении свойством Видимость (Visible) на стороне сервера и клиента. В 1С 8.3 Управляемые формы динамически перестраиваются в зависимости от состояния данных объекта.

Рассмотрим основные причины скрытия кнопок:

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

Способ 1: Использование стандартных команд без изменения кода

Если расчетчику необходимо выполнить пересчет здесь и сейчас, а кнопки на командной панели отсутствуют, мы можем воспользоваться альтернативными путями, которые предусмотрены платформой 1С:Предприятие 8.3.

Разберем по шагам, как найти эти команды:

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

Способ 2: Настройка видимости через Изменить форму

Иногда элементы могут быть скрыты не программным кодом, а настройками пользовательской видимости. Посмотрим, как это проверить:

В верхнем меню документа нажмем Еще — Изменить форму. В появившемся окне найдем группу команд, отвечающую за расчет (обычно это ГруппаКомандыПересчета или аналогичная). Проверим, стоят ли флажки напротив нужных кнопок. Если флажки стоят, но кнопки все равно не видны — значит, работает программный алгоритм в общем модуле УправлениеФормойЗарплатаКадры.

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

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

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

Пример кода для расширения формы документа НачислениеЗарплаты:


&НаСервере
&Вместо("УстановитьВидимостьЭлементов")
Процедура Расш_УстановитьВидимостьЭлементов()
    // Вызываем основную логику системы
    ПродолжитьВызов();
    
    // Принудительно включаем видимость наших кнопок
    Элементы.ГруппаКомандПересчета.Видимость = Истина;
    Элементы.ФормаПересчитать.Видимость = Истина;
    
    // Если нужно, чтобы кнопка всегда была доступна (Enabled)
    Элементы.ФормаПересчитать.Доступность = Истина;
КонецПроцедуры

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

Способ 4: Анализ сервиса перерасчетов

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

  1. Воспользуемся режимом Функции для технического специалиста (ранее «Все функции»).
  2. Найдем регистр сведений Перерасчеты зарплаты (или Очередь перерасчетов).
  3. Отфильтруем записи по нужному сотруднику и периоду.

Если записей нет, то система «считает», что всё начислено верно. Чтобы кнопка появилась «естественным» путем, нужно внести исправления в первичные документы (например, изменить график работы или оклад в кадровом переводе прошлым числом), тогда запись в регистре появится автоматически.

Заключение и рекомендации

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

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

← На главную