К статье
Практический материал

Другое · 11 мин

Как определить количество рабочих дней в 1С

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

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

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

Проверка и заполнение производственного календаря

Производственный календарь — это справочник, в котором каждая дата отмечена как рабочий день, выходной, праздничный или предпраздничный (сокращённый). В типовых конфигурациях он находится в разделе «Настройка» или «Администрирование» → «Производственные календари» (в ЗУП: «Настройка» → «Производственные календари»). Откройте список и убедитесь, что календарь существует и заполнен на весь интересующий период.

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

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

Подсчёт рабочих дней в 1С:ЗУП через отчёты

В конфигурации «1С:Зарплата и управление персоналом» самый быстрый способ узнать норму рабочих дней — отчёт «Табель учёта рабочего времени (Т-13)». Он находится в разделе «Зарплата» → «Отчёты по зарплате» или «Кадры» → «Кадровые отчёты» в зависимости от версии. Укажите период и организацию — в шапке и итогах отчёта отображается норма дней и часов по графику работы сотрудника или подразделения.

Если нужна норма без привязки к сотрудникам, откройте справочник «Графики работы сотрудников» («Настройка» → «Графики работы»). В форме графика задан шаблон (пятидневка, сменный и т.д.), и по нему система рассчитывает норму за любой месяц. Для пятидневки норма совпадает с производственным календарём, для сменных графиков — считается по шаблону цикла.

Порядок действий в ЗУП
  1. 1
    Откройте «Настройка» → «Производственные календари» и убедитесь, что нужный год заполнен
  2. 2
    Откройте «Зарплата» → «Отчёты по зарплате» → «Табель учёта рабочего времени (Т-13)»
  3. 3
    Укажите период, организацию и при необходимости подразделение
  4. 4
    Сформируйте отчёт и найдите строку с нормой дней/часов
  5. 5
    Сверьте норму с официальным производственным календарём на тот же период

Норма для неполного рабочего времени

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

Подсчёт в 1С:Бухгалтерии и других конфигурациях

В «1С:Бухгалтерии предприятия» нет полноценного кадрового учёта с графиками, но производственный календарь присутствует («Администрирование» → «Производственный календарь» либо через «Все функции» → «Справочники»). Разового отчёта «количество рабочих дней за период» в типовой поставке может не быть — в этом случае проще всего открыть сам календарь и посчитать дни визуально по месяцам, либо воспользоваться консолью запросов/внешней обработкой.

В конфигурациях на управляемых формах (УТ, ERP, КА) производственные календари используются для расчёта сроков доставки, планирования и кадрового учёта. Путь к справочнику: «НСИ и администрирование» → «Производственные календари» или раздел «Нормативно-справочная информация». Норму рабочих дней по конкретному графику можно увидеть в кадровых отчётах, если подсистема учёта рабочего времени включена в настройках.

Программный расчёт функциями встроенного языка

Для разработчиков и внешних обработок в библиотеке стандартных подсистем (БСП), на которой построены типовые конфигурации, есть модуль «КалендарныеГрафики». Основная функция — РазностьДатКалендарныхГрафиков, которая возвращает количество рабочих дней между двумя датами по указанному графику. В качестве графика передаётся ссылка на производственный календарь; если параметр опущен, используется календарь по умолчанию.

bsl
РабочихДней = КалендарныеГрафики.РазностьДатКалендарныхГрафиков(ПроизводственныйКалендарь, НачалоПериода, КонецПериода);

Для произвольного периода (например, месяца) границы удобно получать функциями НачалоМесяца(Дата) и КонецМесяца(Дата). Если нужен перебор дат с проверкой вида дня, используйте запрос к регистру сведений «ДанныеПроизводственногоКалендаря» — там хранится признак вида дня (рабочий, суббота, воскресенье, праздничный, предпраздничный) для каждой даты.

Учитывайте граничные условия: функция разности дат чувствительна к тому, входят ли граничные даты в расчёт. Перед использованием результата в начислениях проверьте поведение на коротком тестовом периоде, где количество рабочих дней известно точно, — например, на неделе без праздников должно получиться 5.

Расчёт через запрос к данным календаря

Альтернатива функциям БСП — прямой запрос к регистру сведений «ДанныеПроизводственногоКалендаря». Запрос выбирает записи за период с отбором по виду дня и считает их количество. Такой подход удобен в отчётах на СКД, где нужно вывести норму дней рядом с другими показателями, и не требует вызова серверных функций.

Типовой текст запроса: выбрать количество записей, где производственный календарь равен заданному, дата попадает в диапазон, а вид дня — «Рабочий» или «Предпраздничный». Предпраздничный день является рабочим (сокращённым на час), поэтому при подсчёте дней его включают, а при подсчёте часов — учитывают сокращение.

Контрольные точки

Как проверить результат

Норма дней за месяц без праздников
Норма

Совпадает с числом будней по календарю (обычно 20–23 дня)

Тревожный признак

Значение заметно меньше или равно нулю — календарь не заполнен

Месяц с праздниками и переносами
Норма

Совпадает с официальным производственным календарём

Тревожный признак

Переносы не учтены — база не обновлялась

Тестовая неделя без праздников
Норма

Функция возвращает 5 рабочих дней

Тревожный признак

Возвращает 0 или 7 — неверно задан график или границы периода

Типичные ошибки и их последствия

Самая частая причина неверного подсчёта — устаревший или пустой производственный календарь. Вторая по частоте — использование общероссийского календаря там, где действует региональный, либо наоборот. Третья группа ошибок связана с программными расчётами: неправильные границы периода (включение/исключение последнего дня) и игнорирование предпраздничных дней при подсчёте часов.

Типичные ошибки
01
Считать рабочие дни как «календарные минус субботы и воскресенья» в формуле Excel или обработке — праздники и переносы не учитываются, расчёт зарплаты и сроков искажается
02
Не обновить календарь после выхода постановления о переносе выходных — норма дней в отдельные месяцы расходится с официальной
03
Использовать в запросе только вид дня «Рабочий» и терять предпраздничные дни — норма дней занижается на 1–2 дня в год
04
Передавать в функцию разности дат неверный календарь (не тот, что назначен графику сотрудника) — норма не совпадает с табелем

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

Когда стандартных средств недостаточно

Если нужно считать рабочие дни по нестандартным правилам — например, с учётом корпоративных «тихих» дней, отраслевых календарей или нескольких календарей одновременно — создайте дополнительные элементы справочника производственных календарей и используйте их в функциях и запросах. Это безопаснее, чем правка типового общероссийского календаря: типовой объект останется эталоном для сверки.

Маршрут решения

Как выбрать способ подсчёта

Нужна разовая норма дней по сотрудникам или подразделениюИспользуйте отчёт «Табель учёта рабочего времени (Т-13)» в ЗУП
Нужна норма без привязки к кадрамОткройте производственный календарь и посчитайте дни по видам дней
Расчёт нужен в обработке, отчёте или обменеИспользуйте КалендарныеГрафики.РазностьДатКалендарныхГрафиков или запрос к регистру ДанныеПроизводственногоКалендаря
Правила подсчёта нестандартныеСоздайте отдельный производственный календарь и ссылайтесь на него

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

Итог

Что важно запомнить

Количество рабочих дней в 1С всегда определяется производственным календарём. Разовую норму смотрите в отчёте Т-13 или справочнике календарей, программный расчёт делайте функцией РазностьДатКалендарныхГрафиков или запросом к регистру данных календаря. Перед любыми расчётами проверяйте, что календарь заполнен и обновлён с учётом переносов праздников.

Частые вопросы

Почему отчёт показывает нулевую норму рабочих дней?

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

Как учесть региональные праздники?

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

Входит ли предпраздничный день в количество рабочих дней?

Да, предпраздничный день — рабочий, он включается в норму дней. Сокращение касается только часов: продолжительность работы уменьшается на один час, что важно при подсчёте нормы времени в часах, а не в днях.

Можно ли посчитать рабочие дни между произвольными датами без ЗУП?

Да, если в конфигурации есть подсистема календарных графиков (она входит в состав БСП и присутствует в большинстве типовых решений). Используйте функцию РазностьДатКалендарныхГрафиков или запрос к регистру ДанныеПроизводственногоКалендаря через внешнюю обработку или консоль кода.

Что делать, если после обновления конфигурации норма дней изменилась?

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