При работе с документом Табель учета рабочего времени в конфигурациях на платформе 1С:Предприятие 8.3 (например, ЗУП 3.1, ERP или Комплексная автоматизация) пользователи часто сталкиваются с жестким ограничением. При выборе конкретного структурного подразделения в шапке документа система автоматически фильтрует список сотрудников. Если бухгалтер пытается добавить в этот же табель «чужого» сотрудника (из другого отдела), данные по его отработанному времени, явкам и ночным часам не подтягиваются автоматически. Рассмотрим, почему так происходит и какими способами можно решить эту задачу, не нарушая логику учета.
Для начала проанализируем, как система обрабатывает заполнение документа. Основная логика заложена в модуле менеджера документа ТабельУчетаРабочегоВремени или в специализированных общих модулях, таких как УчетРабочегоВремениРасширенный. Проблема заключается в том, что наличие заполненного реквизита Подразделение в шапке документа интерпретируется системой как жесткий фильтр для построения запроса к базе данных.
Разберем фрагмент кода, который отвечает за установку параметров заполнения:
Если ЗначениеЗаполнено(ДанныеТабеля.Подразделение) Тогда
ПараметрыЗаполнения.Подразделение = ДанныеТабеля.Подразделение;
КонецЕсли;
Когда этот параметр передается в процедуру формирования данных, запрос извлекает только тех сотрудников, чье основное рабочее место на дату документа соответствует указанному значению. Любой сотрудник, добавленный вручную кнопкой «Добавить», не проходит через этот алгоритм автоматического сбора данных, так как он изначально исключен из выборки по подразделению.
Многие пользователи ошибочно полагают, что единственный способ заполнить табель — это нажать кнопку «Заполнить». Однако в 1С реализован более гибкий механизм — Подбор. Выясним, почему он эффективнее в нашей ситуации:
Ctrl + A) и нажмем Выбрать.Важный нюанс: если вы сначала заполните табель по кнопке «Заполнить», а потом решите добавить кого-то через «Подбор», данные этого человека добавятся к существующему списку. Если же вы нажмете «Заполнить» повторно, ручные изменения и «чужие» сотрудники могут быть удалены, так как система снова применит фильтр из шапки.
Если бухгалтерии постоянно требуется заполнять табель по определенному составу людей, не совпадающему со штатной структурой, рассмотрим вариант с использованием Групп сотрудников. Это чисто интерфейсный механизм, который не влияет на расчет зарплаты, но упрощает выбор.
Проанализируем шаги:
Ctrl + A добавлять весь специфический состав без необходимости поиска по разным веткам структуры компании.Если бизнес-процессы предприятия требуют именно автоматического заполнения «смешанных» табелей и пользователи не хотят использовать подбор, нам придется вмешаться в логику программы. Чтобы не «ломать» типовую конфигурацию и сохранить возможность легкого обновления, используем расширение.
Рассмотрим алгоритм внесения изменений:
ТабельУчетаРабочегоВремени и модуль, отвечающий за заполнение (например, УчетРабочегоВремениРасширенный).ДанныеТабеля.ГДЕ в запросе. Вместо жесткого равенства Подразделение = &Подразделение, мы можем добавить проверку на список исключений или разрешить выборку сотрудников, которые уже добавлены в табличную часть документа на момент нажатия кнопки «Обновить».Пример логики изменения условия в запросе:
// В типовом запросе:
// | ГДЕ Сотрудник.Подразделение = &Подразделение
// В расширении меняем на:
// | ГДЕ (Сотрудник.Подразделение = &Подразделение ИЛИ Сотрудник В (&СписокСотрудников))
В параметр &СписокСотрудников в этом случае передаются все ID сотрудников, которые уже присутствуют в строках документа. Таким образом, система «увидит» добавленного вручную человека и подтянет по нему данные из регистров.
Посмотрим на ситуацию с точки зрения методологии 1С. Часто потребность добавить «чужого» сотрудника в табель возникает, когда он временно работает в другом отделе. В таких случаях правильнее использовать документ Индивидуальный график.
Проанализируем преимущества этого метода:
Индивидуальный график позволяет зафиксировать плановое время для любого сотрудника без привязки к подразделению табеля.Выясним, какой путь выбрать. Если конфигурация типовая и на поддержке — используйте метод №1 (Подбор). Это самый безопасный способ, не требующий затрат на программирование и не создающий проблем при обновлении. Обучите бухгалтеров использовать Ctrl+A в форме подбора — это снимет вопрос о «множестве нажатий кнопок».
Если же работа со смешанными составами — это ежедневная рутина, стоит написать расширение. При этом крайне важно помнить о рисках: добавление сотрудника в «чужой» табель может привести к тому, что в его основном подразделении табель не сформируется или выдаст ошибку о дублировании данных. Всегда проверяйте настройки распределения затрат, так как начисления по такому табелю могут «улететь» на затраты того подразделения, которое указано в шапке документа, что не всегда корректно для бухгалтерского учета.