Как назначить региональный производственный календарь в 1С:Бухгалтерия предприятия 3.0

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При работе в регионах с собственными праздничными днями (например, Республика Крым, Татарстан, Башкортостан) пользователи 1С:Бухгалтерия предприятия 3.0 часто сталкиваются с проблемой: региональный календарь в справочнике создан и заполнен, но программа упорно продолжает использовать общероссийский календарь («РФ») при расчете зарплаты и отпусков. Ситуация осложняется тем, что в «Бухгалтерии», в отличие от «Зарплаты и управления персоналом», отсутствует справочник Графики работы, где можно было бы явно указать календарь для сотрудников.

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

Метод 1. Настройка через регистр сведений в типовой конфигурации

В актуальных версиях (начиная с релиза 3.0.70.39 и выше) разработчики 1С добавили штатный механизм для решения этой задачи. Проблема большинства пользователей заключается в том, что этот функционал не всегда выведен на видное место в интерфейсе. Рассмотрим, как найти и использовать этот регистр.

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

  1. Перейдем в раздел Администрирование — Обслуживание — Регистры сведений (или воспользуемся командой «Все функции» / «Функции для технического специалиста»).
  2. Найдем в списке регистр Производственные календари организаций.
  3. Создадим новую запись, где укажем нашу Организацию и соответствующий Производственный календарь (например, «Республика Крым»).
  4. Запишем изменения.

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


Функция ПроизводственныйКалендарьОрганизации(Организация) Экспорт
    УстановитьПривилегированныйРежим(Истина);
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.Текст = 
        "ВЫБРАТЬ
        | ПроизводственныеКалендариОрганизаций.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь
        |ИЗ
        | РегистрСведений.ПроизводственныеКалендариОрганизаций КАК ПроизводственныеКалендариОрганизаций
        |ГДЕ
        | ПроизводственныеКалендариОрганизаций.Организация = &Организация";
    
    Выборка = Запрос.Выполнить.Выбрать();
    Если Выборка.Следующий() И ЗначениеЗаполнено(Выборка.ПроизводственныйКалендарь) Тогда
        ПроизводственныйКалендарь = Выборка.ПроизводственныйКалендарь;
    Иначе
        ПроизводственныйКалендарь = КалендарныеГрафики.ОсновнойПроизводственныйКалендарь();
    КонецЕсли;
    Возврат ПроизводственныйКалендарь;
КонецФункции

Метод 2. Правильное заполнение справочника и использование классификатора

Часто пользователи совершают ошибку, внося изменения вручную в календарь «РФ». Рассмотрим, почему этого делать нельзя: при обновлении конфигурации или классификаторов 1С перезаписывает данные календаря «РФ», и все ваши региональные праздники исчезают. Правильный алгоритм действий выглядит следующим образом:

  1. Откроем справочник Производственные календари.
  2. Нажмем кнопку Создать и выберем пункт По классификатору.
  3. В появившемся списке выберем нужный регион (например, код 91 для Крыма). Это ГАРАНТИРУЕТ, что код календаря в базе будет совпадать с ожидаемым программой кодом региона.
  4. Нажмем Заполнить по умолчанию. Теперь у вас есть отдельный объект, который не будет затерт обновлением общероссийского календаря.

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

Метод 3. Программная корректировка для старых релизов или специфических случаев

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

Проанализируем типовую функцию в общем модуле КалендарныеГрафики. По умолчанию она выглядит так:


Функция ОсновнойПроизводственныйКалендарь() Экспорт
    ПроизводственныйКалендарь = Справочники.ПроизводственныеКалендари.НайтиПоКоду("РФ");
    Если ПроизводственныйКалендарь.Пустая() Тогда
        Возврат Неопределено;
    КонецЕсли;
    Возврат ПроизводственныйКалендарь;
КонецФункции

Чтобы заставить программу использовать ваш календарь во всех расчетах, где вызывается «основной» календарь, заменим код поиска. Например, если код вашего регионального календаря «91», код примет следующий вид:


Функция ОсновнойПроизводственныйКалендарь() Экспорт
    // Заменяем поиск РФ на региональный код
    ПроизводственныйКалендарь = Справочники.ПроизводственныеКалендари.НайтиПоКоду("91"); 
    Если ПроизводственныйКалендарь.Пустая() Тогда
        // Резервный вариант, если региональный не найден
        ПроизводственныйКалендарь = Справочники.ПроизводственныеКалендари.НайтиПоКоду("РФ");
    КонецЕсли;
    Возврат ПроизводственныйКалендарь;
КонецФункции

Разберем, почему это решение эффективно: многие механизмы (особенно расчет среднего заработка и количество дней отпуска) используют именно эту функцию. Однако помните, что после обновления конфигурации эти правки могут быть затерты, если вы не используете механизм расширений.

Особенности расчета зарплаты vs Расчет отпусков

Проанализируем поведение системы в разных документах. Часто возникает ситуация: в Начислении зарплаты норма дней проставляется правильно (например, 19 дней из-за регионального праздника), а в расчете Отпуска праздничный день не исключается из периода. Это происходит из-за того, что разработчики 1С могли использовать разные методы получения календаря в разных модулях.

Для исправления этой несогласованности рекомендуется:

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

← На главную