Как в ЗУП 3 сделать удобный ввод ночных часов?

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

При переходе на программу «1С:Зарплата и управление персоналом 8», редакция 3.1, многие пользователи сталкиваются с существенным неудобством при заполнении документов «Табель» или «Индивидуальный график». В отличие от старых версий (например, ЗиК 7.7), где достаточно было ввести цифру, современный интерфейс требует ввода строковых значений вида «Я 8» (явочные часы) или «Н 2» (ночные часы).

Для кадровых специалистов и табельщиков, работающих с большими объемами данных, необходимость постоянно переключать раскладку клавиатуры и вводить буквы превращается в рутину, замедляющую работу в несколько раз. В этой статье мы подробно разберем, как автоматизировать этот процесс и сделать ввод данных максимально комфортным — в режиме «цифра - Enter».

Метод 1. Программная автоматизация ввода через расширение

Проанализируем техническую сторону вопроса. В формах документов ИндивидуальныйГрафик и Табель за ввод данных отвечает табличная часть, где ячейки имеют строковый тип. Чтобы облегчить жизнь пользователю, мы можем перехватить ввод текста и программно добавить к числу нужный префикс.

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


&НаКлиенте
Процедура ДанныеОВремениВремяПредставлениеОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
    
    // Если введена пустая строка или символ выходного, ничего не делаем
    Если Текст = "В" Или Текст = "" Тогда
        Возврат;
    КонецЕсли;

    // Пытаемся понять, вводится ли просто число
    Попытка
        ЧисловоеЗначение = Число(Текст);
        
        // Если это число, автоматически подставляем нужный код
        Если ЭтаФорма.Элементы.ДанныеОВремени.ТекущиеДанные.ЭтоПерваяСтрокаПоСотруднику Тогда
            // Обычно первая строка в графике — это явка
            Текст = "Я " + Текст;
        Иначе
            // Вторая и последующие строки — ночные, праздничные и т.д.
            Текст = "Н " + Текст;    
        КонецЕсли;
    Исключение
        // Если в тексте уже есть буквы, оставляем как есть
    КонецПопытки;

КонецПроцедуры

Выясним, как это работает на практике. Когда пользователь вводит в ячейку цифру «2» и нажимает Enter или переходит в другую ячейку, система анализирует введенное значение. Если оно является числом, программа сама дописывает «Н » или «Я », избавляя человека от лишних действий. Дополнительно рекомендуется отключить процедуру автоподбора ДанныеОВремениВремяПредставлениеАвтоПодбор, чтобы стандартные подсказки 1С не мешали быстрому вводу.

Метод 2. Использование документа «Данные для расчета зарплаты»

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

Разберем процесс настройки по шагам:

  1. Перейдем в раздел Настройка — Шаблоны ввода данных и создадим новый шаблон.
  2. На вкладке Виды времени выберем только Ночные часы.
  3. В поле Заполнять данные выберем вариант «По дням» (это создаст колонку на каждый день месяца).
  4. Сохраним шаблон с понятным названием, например, «Ввод ночных часов».

Теперь в разделе Зарплата — Данные для расчета зарплаты при создании нового документа по этому шаблону вы увидите таблицу, где в колонках с датами нужно вводить только количество часов. Система сама поймет, что это НочныеЧасы, и при расчете зарплаты учтет их автоматически. Это избавляет от необходимости использовать ИндивидуальныйГрафик или Табель для фиксации отклонений, которые «пляшут как бог на душу положит».

Метод 3. Внешние обработки и загрузка из внешних файлов

Проанализируем ситуацию, когда данные о ночных сменах ведутся кадровиками или мастерами цехов в сторонних файлах (например, в Excel). Вводить их повторно в 1С вручную — крайне неэффективно.

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

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

Методологическое предостережение: Табель или Индивидуальный график?

Разберем важный момент, затронутый в обсуждении. Многие используют ИндивидуальныйГрафик как замену Табелю, потому что его проще заполнять. Однако нужно четко понимать разницу:

Индивидуальный график — это документ, который переопределяет норму времени для сотрудника. Если сотрудник работает по окладу и вы введете ему индивидуальный график с меньшим количеством часов, он все равно получит полный оклад (так как он отработал свою новую норму).

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

Заключение

Мы проанализировали три основных способа сделать ввод ночных часов удобным:

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

← На главную