Как настроить автозаполнение табеля учета рабочего времени для сотрудников из разных подразделений?

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

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

Анализ технической причины поведения системы

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

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


Если ЗначениеЗаполнено(ДанныеТабеля.Подразделение) Тогда 
    ПараметрыЗаполнения.Подразделение = ДанныеТабеля.Подразделение; 
КонецЕсли;

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

Способ 1. Использование механизма «Подбор» (Рекомендуемый)

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

  1. В документе «Табель» нажмем кнопку Подбор.
  2. В открывшемся окне справочника сотрудников мы можем не ограничиваться текущим подразделением. Чтобы быстро найти нужных людей, воспользуемся видом списка По подразделениям.
  3. Выберем нужное подразделение, выделим всех сотрудников (сочетание клавиш Ctrl + A) и нажмем Выбрать.
  4. Затем перейдем к другому подразделению в этом же окне подбора, найдем «дополнительного» сотрудника и также нажмем Выбрать.
  5. После того как список сформирован и мы возвращаемся в документ, система автоматически рассчитает время для всех перенесенных в список сотрудников, основываясь на их графиках и документах-отклонениях.

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

Способ 2. Группировка сотрудников через папки

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

Проанализируем шаги:

  1. Перейдем в справочник Сотрудники.
  2. Создадим новую группу (папку), например, «Проектная группа А».
  3. Перенесем (или скопируем ссылки) туда всех необходимых сотрудников из разных подразделений.
  4. В документе «Табель» при подборе будем выбирать сотрудников именно из этой группы. Это позволит одним нажатием Ctrl + A добавлять весь специфический состав без необходимости поиска по разным веткам структуры компании.

Способ 3. Программная доработка через расширение конфигурации

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

Рассмотрим алгоритм внесения изменений:

  1. Создадим новое расширение и добавим в него документ ТабельУчетаРабочегоВремени и модуль, отвечающий за заполнение (например, УчетРабочегоВремениРасширенный).
  2. Найдем процедуру, где формируется запрос для получения данных о времени. Обычно это функции, подготавливающие таблицу ДанныеТабеля.
  3. Нам необходимо изменить условие ГДЕ в запросе. Вместо жесткого равенства Подразделение = &Подразделение, мы можем добавить проверку на список исключений или разрешить выборку сотрудников, которые уже добавлены в табличную часть документа на момент нажатия кнопки «Обновить».

Пример логики изменения условия в запросе:


// В типовом запросе:
// | ГДЕ Сотрудник.Подразделение = &Подразделение

// В расширении меняем на:
// | ГДЕ (Сотрудник.Подразделение = &Подразделение ИЛИ Сотрудник В (&СписокСотрудников))

В параметр &СписокСотрудников в этом случае передаются все ID сотрудников, которые уже присутствуют в строках документа. Таким образом, система «увидит» добавленного вручную человека и подтянет по нему данные из регистров.

Способ 4. Альтернативный учет через Индивидуальные графики

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

Проанализируем преимущества этого метода:

Резюме и рекомендации

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

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

← На главную