Быстрый старт · 9 мин
Как создать календарь в 1С: пошаговая инструкция
Как создать производственный и графический календарь в 1С: заполнение регистра, перенос праздников, настройка графиков работы и проверка результата.
Календарь в 1С — это не элемент интерфейса для просмотра дат, а прикладной объект, от которого зависят расчёт зарплаты, планирование отгрузок, сроки оплаты и графики работы сотрудников. Если календарь не заполнен или заполнен с ошибками, программа неверно посчитает норму рабочего времени, сдвинет сроки в документах и исказит отчёты.
Задача «создать календарь» встречается в двух формах. Первая — заполнить производственный календарь и графики работы в типовой конфигурации (1С:ЗУП, 1С:Бухгалтерия, 1С:ERP), для этого программировать не нужно. Вторая — разработать собственный календарь как объект метаданных в конфигураторе, когда типовых механизмов недостаточно. Ниже разобраны оба сценария.
Какие виды календарей есть в 1С и какой нужен вам
Прежде чем что-то создавать, определите, какой именно календарь требуется. Производственный календарь хранит общероссийское или региональное распределение дней на рабочие, выходные и праздничные. График работы сотрудников ссылается на производственный календарь и описывает конкретный режим: пятидневка, сменный график, гибкая неделя. Регламентированный календарь в конфигураторе — это разработческий объект для расчёта дат в собственных механизмах.
Если задача — чтобы правильно считалась зарплата и табель, достаточно производственного календаря и графиков в пользовательском режиме. Если нужно, например, рассчитывать сроки доставки с учётом нестандартных рабочих дней филиалов, потребуется собственный регистр сведений и программная логика.
Как выбрать действие
Создание производственного календаря в пользовательском режиме
В типовых конфигурациях на платформе 1С:Предприятие 8.3 производственный календарь обычно находится в разделе «Настройка» или «Администрирование». В 1С:ЗУП путь такой: «Настройка» → «Производственные календари». В 1С:Бухгалтерии календарь доступен через «Главное» → «Настройки» → «Производственные календари» либо заполняется автоматически при обновлении конфигурации.
Порядок создания нового календаря: откройте список производственных календарей, нажмите «Создать», укажите наименование и код (например, для регионального календаря с дополнительными праздниками). Затем откройте календарь и заполните его. Быстрее всего — кнопкой автоматического заполнения по шаблону пятидневной недели с последующей ручной корректировкой праздников.
- 1Откройте «Настройка» → «Производственные календари» и создайте новый элемент
- 2Укажите наименование и код календаря
- 3Заполните календарь автоматически по шаблону (пятидневка) или вручную
- 4Отметьте праздничные и предпраздничные дни, проверьте переносы выходных
- 5Сохраните и проверьте, что графики работы ссылаются на нужный календарь
Переносы праздничных дней
Автоматическое заполнение не учитывает постановления о переносе выходных — их вносят вручную. В форме календаря для переноса обычно предусмотрена команда «Перенести день»: выделяете праздничный день, выпавший на выходной, и указываете дату, на которую переносится нерабочий день. После переноса проверьте итоговую норму часов за месяц и год — она отображается внизу формы календаря.
Настройка графика работы сотрудников
График работы создаётся в разделе «Настройка» → «Графики работы сотрудников» (в ЗУП) или аналогичном справочнике других конфигураций. При создании укажите способ заполнения: по дням недели (для пятидневки и шестидневки) или по циклам произвольной длины (для сменных графиков вида «два через два», «сутки через трое»).
В параметрах графика задайте ссылку на производственный календарь, длительность рабочего дня, время обеденного перерыва и дату отсчёта для циклических графиков. Для сменных графиков дополнительно заполните таблицу смен с указанием часов работы в каждую смену. После сохранения график назначается сотрудникам кадровыми документами — приёмом на работу или кадровым переводом.
Проверка результата после настройки
Главный признак корректно созданного календаря — совпадение нормы рабочего времени с официальным производственным календарём. Откройте форму календаря и сравните помесячные и годовые нормы часов для 40-часовой недели с официальными данными. Расхождение даже на один день приведёт к ошибкам в расчёте оклада и среднего заработка.
Дополнительно проверьте на тестовом сотруднике: назначьте график, сформируйте табель за месяц и сверьте количество рабочих дней и часов. Если табель заполнился без пропусков и норма сошлась — настройка выполнена правильно.
Как проверить результат
Совпадает с официальным производственным календарём
Расхождение на один и более дней
Все рабочие дни заполнены, норма корректна
Пустые дни или нулевая норма
Праздники отмечены, предпраздничные сокращены на час
Праздник стоит рабочим днём или перенос не выполнен
Создание собственного календаря в конфигураторе
Когда типовых объектов недостаточно, календарь разрабатывают как регистр сведений. Стандартная структура: измерение «Дата» (тип «Дата») и ресурсы — например, «ВидДня» (перечисление: рабочий, выходной, праздничный) и «РабочихЧасов» (число). Такой регистр позволяет хранить произвольное расписание и обращаться к нему из запросов и кода.
Для заполнения регистра пишут процедуру, которая циклом проходит по датам периода и определяет вид дня по дню недели и списку праздников. Пример упрощённого кода:
Для ТекДата = НачалоГода По КонецГода Цикл
МенеджерЗаписи = РегистрыСведений.КалендарьПредприятия.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Дата = ТекДата;
Если ДеньНедели(ТекДата) > 5 Тогда
МенеджерЗаписи.ВидДня = Перечисления.ВидыДней.Выходной;
Иначе
МенеджерЗаписи.ВидДня = Перечисления.ВидыДней.Рабочий;
КонецЕсли;
МенеджерЗаписи.Записать();
КонецЦикла;При таком подходе список праздников хранят отдельно — в том же регистре или в справочнике — и проверяют внутри цикла. Для расчёта дат со сдвигом на рабочие дни пишут функцию, которая прибавляет дни, пропуская выходные и праздники по данным регистра.
Заполняйте самописный календарь с запасом — минимум на год вперёд, и добавьте регламентное задание или напоминание о продлении. Самая частая причина сбоев в собственных механизмах расчёта дат — регистр просто закончился.
Частые ошибки при создании календаря
Большинство проблем возникает не на этапе создания, а из-за мелочей, которые всплывают при расчётах. Ниже — типичные ошибки и их последствия.
Отдельная группа ошибок — разработческие: запись в регистр без проверки существующих записей (дубли), отсутствие индексации по дате на больших объёмах и расчёт дат без учёта того, что регистр может быть не заполнен на нужный период. Всегда добавляйте в код проверку: если данных нет — выдавать понятное сообщение, а не молча возвращать ноль.
FAQ: частые вопросы о календарях в 1С
Нужно ли создавать производственный календарь с нуля каждый год?
Нет. Календарь создаётся один раз, а на новый год его продлевают: открывают тот же элемент и заполняют следующий год. В типовых конфигурациях с включённым автоматическим обновлением календарь может заполняться сам при обновлении релиза.
Можно ли иметь несколько производственных календарей в одной базе?
Да. Это стандартная практика для организаций с филиалами в регионах, где есть дополнительные нерабочие дни. Создаётся отдельный календарь для региона, а графики сотрудников филиала ссылаются на него.
Что делать, если табель показывает нулевую норму?
Почти всегда причина в том, что производственный календарь не заполнен на нужный период или график ссылается на пустой календарь. Проверьте заполнение календаря за требуемый месяц и ссылку в настройках графика.
Как учесть сокращённый предпраздничный день?
В типовом производственном календаре предпраздничный день помечается специальным видом, и программа автоматически уменьшает норму на один час. В собственном регистре добавьте отдельный вид дня «Предпраздничный» и учитывайте его при расчёте часов.
Можно ли скопировать календарь из другой базы?
Да, через стандартную обработку выгрузки-загрузки данных в формате XML или через перенос данных, если конфигурации совместимы. После переноса обязательно сверьте нормы часов и переносы праздников с официальными данными.
Чем график работы отличается от производственного календаря?
Производственный календарь задаёт общее деление дней на рабочие и нерабочие. График работы описывает конкретный режим сотрудника — длительность дня, смены, цикл — и опирается на календарь как на основу. Один календарь может использоваться множеством графиков.
Что важно запомнить
В типовой конфигурации календарь создаётся без программирования: заполните производственный календарь, настройте графики и сверьте норму часов с официальными данными. Для своей логики используйте регистр сведений с измерением «Дата» и всегда заполняйте его с запасом по времени. Перед изменением уже используемого календаря делайте резервную копию.