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

Справочники и Данные · 10 мин

Как получить календарь в 1С

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

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

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

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

Где находится производственный календарь в типовых конфигурациях

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

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

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

Как заполнить и обновить календарь

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

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

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

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

Как вывести календарь в форму документа или обработки

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

Для выбора периода (диапазона дат) удобнее стандартный диалог выбора периода либо поле типа «СтандартныйПериод» с кнопкой выбора. В отчётах на СКД период добавляется как параметр, и пользователь получает готовый календарный выбор без программирования.

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

Сравнение вариантов вывода календаря

Поле календаря

Выбор одной даты в форме. Простая настройка, но без выделения выходных и без диапазонов.

Стандартный период

Выбор диапазона дат в отчётах и обработках. Не показывает праздники, зато работает из коробки.

Планировщик

Календарь с событиями и занятостью. Требует программной привязки данных, сложнее в настройке.

Как получить данные календаря программно

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

bsl
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Данные.Дата КАК Дата
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК Данные
|ГДЕ
| Данные.ПроизводственныйКалендарь = &Календарь
| И Данные.Дата МЕЖДУ &Начало И &Конец
| И Данные.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)";

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

Для простых задач без привязки к производственному календарю достаточно стандартных функций работы с датами: НачалоМесяца(), КонецМесяца(), ДеньНедели(), ДобавитьМесяц(). Они позволяют, например, построить таблицу дней месяца в отчёте без обращения к справочникам.

Проверка результата и типичные ошибки

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

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

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

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

Рабочие дни января
Норма

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

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

Праздничная неделя посчитана рабочими днями

Графики работы после правки календаря
Норма

Программа предложила обновление, графики пересчитаны

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

Графики показывают старые дни, расхождения в табеле

Расчёт отпуска/больничного
Норма

Даты и оплачиваемые дни соответствуют календарю

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

Ошибка «не заполнен график» или неверное число дней

Ограничения и когда нужен специалист

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

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

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

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

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

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

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

Почему после обновления конфигурации календарь изменился сам?

Некоторые обновления содержат актуальные данные производственного календаря и перезаполняют его при установке. Если вы вносили ручные изменения (например, региональные праздники в общероссийский календарь), они могут затереться. Региональные особенности правильнее хранить в отдельном календаре.

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

Откройте график работы сотрудников (справочник «Графики работы сотрудников» в ЗУП) — в его шапке указана ссылка на производственный календарь, по которому он построен. Именно этот календарь влияет на норму времени и расчёт оклада.

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

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

Итог

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

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