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

Быстрый старт · 9 мин

Как создать календарь в 1С: пошаговая инструкция

Как создать производственный и графический календарь в 1С: заполнение регистра, перенос праздников, настройка графиков работы и проверка результата.

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

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

Какие виды календарей есть в 1С и какой нужен вам

Прежде чем что-то создавать, определите, какой именно календарь требуется. Производственный календарь хранит общероссийское или региональное распределение дней на рабочие, выходные и праздничные. График работы сотрудников ссылается на производственный календарь и описывает конкретный режим: пятидневка, сменный график, гибкая неделя. Регламентированный календарь в конфигураторе — это разработческий объект для расчёта дат в собственных механизмах.

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

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

Как выбрать действие

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

Создание производственного календаря в пользовательском режиме

В типовых конфигурациях на платформе 1С:Предприятие 8.3 производственный календарь обычно находится в разделе «Настройка» или «Администрирование». В 1С:ЗУП путь такой: «Настройка» → «Производственные календари». В 1С:Бухгалтерии календарь доступен через «Главное» → «Настройки» → «Производственные календари» либо заполняется автоматически при обновлении конфигурации.

Порядок создания нового календаря: откройте список производственных календарей, нажмите «Создать», укажите наименование и код (например, для регионального календаря с дополнительными праздниками). Затем откройте календарь и заполните его. Быстрее всего — кнопкой автоматического заполнения по шаблону пятидневной недели с последующей ручной корректировкой праздников.

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

Переносы праздничных дней

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

Настройка графика работы сотрудников

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

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

Проверка результата после настройки

Главный признак корректно созданного календаря — совпадение нормы рабочего времени с официальным производственным календарём. Откройте форму календаря и сравните помесячные и годовые нормы часов для 40-часовой недели с официальными данными. Расхождение даже на один день приведёт к ошибкам в расчёте оклада и среднего заработка.

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

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

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

Норма часов за год в календаре
Норма

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

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

Расхождение на один и более дней

Табель по новому графику
Норма

Все рабочие дни заполнены, норма корректна

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

Пустые дни или нулевая норма

Праздничные и предпраздничные дни
Норма

Праздники отмечены, предпраздничные сокращены на час

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

Праздник стоит рабочим днём или перенос не выполнен

Создание собственного календаря в конфигураторе

Когда типовых объектов недостаточно, календарь разрабатывают как регистр сведений. Стандартная структура: измерение «Дата» (тип «Дата») и ресурсы — например, «ВидДня» (перечисление: рабочий, выходной, праздничный) и «РабочихЧасов» (число). Такой регистр позволяет хранить произвольное расписание и обращаться к нему из запросов и кода.

Для заполнения регистра пишут процедуру, которая циклом проходит по датам периода и определяет вид дня по дню недели и списку праздников. Пример упрощённого кода:

bsl
Для ТекДата = НачалоГода По КонецГода Цикл
    МенеджерЗаписи = РегистрыСведений.КалендарьПредприятия.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Дата = ТекДата;
    Если ДеньНедели(ТекДата) > 5 Тогда
        МенеджерЗаписи.ВидДня = Перечисления.ВидыДней.Выходной;
    Иначе
        МенеджерЗаписи.ВидДня = Перечисления.ВидыДней.Рабочий;
    КонецЕсли;
    МенеджерЗаписи.Записать();
КонецЦикла;

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

Заполняйте самописный календарь с запасом — минимум на год вперёд, и добавьте регламентное задание или напоминание о продлении. Самая частая причина сбоев в собственных механизмах расчёта дат — регистр просто закончился.
ПЗ
Практическое замечание

Частые ошибки при создании календаря

Большинство проблем возникает не на этапе создания, а из-за мелочей, которые всплывают при расчётах. Ниже — типичные ошибки и их последствия.

Типичные ошибки
01
Не заполнен календарь на следующий год — в январе зарплата и табель считаются с нулевой нормой
02
Забыты переносы выходных по постановлениям — норма часов не совпадает с официальной
03
График ссылается не на тот производственный календарь — у региональных сотрудников неверные праздники
04
Изменение календаря задним числом после расчётов — расхождения в уже начисленных суммах
05
В сменном графике неверно задана дата отсчёта цикла — смены съезжают относительно реального расписания

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

FAQ: частые вопросы о календарях в 1С

Нужно ли создавать производственный календарь с нуля каждый год?

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

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

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

Что делать, если табель показывает нулевую норму?

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

Как учесть сокращённый предпраздничный день?

В типовом производственном календаре предпраздничный день помечается специальным видом, и программа автоматически уменьшает норму на один час. В собственном регистре добавьте отдельный вид дня «Предпраздничный» и учитывайте его при расчёте часов.

Можно ли скопировать календарь из другой базы?

Да, через стандартную обработку выгрузки-загрузки данных в формате XML или через перенос данных, если конфигурации совместимы. После переноса обязательно сверьте нормы часов и переносы праздников с официальными данными.

Чем график работы отличается от производственного календаря?

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

Итог

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

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