Контекст работы с календарями
Доступ к атрибутам и методам календарей осуществляется, например, через объект, созданный системной функцией СоздатьОбъект с ключевым словом
"Календарь".
Англоязычный синоним ключевого слова "Календарь" — "Calendar".
Пример:
// Рассчитать продолжительность месяца в часах по календарю "Служащие"
Календ = СоздатьОбъект("Календарь.Служащие");
Час = Календ.Часов('01.01.96', '31.01.96');
// Рассчитать продолжительность текущего расчетного
// периода журнала расчетов Зарплата по календарю Служащие
Календ = СоздатьОбъект("Календарь.Служащие");
ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");
Час = Календ.Часов(ЖР.НачалоТекущегоПериода(), ЖР.КонецТекущегоПериода());
Кроме того, объекты типа «календарь» являются сохраняемыми, т. е. реквизиты справочников, документов, журналов расчета могут иметь тип «календарь» и хранить ссылки на объекты этого типа.
Пример:
Процедура ПровестиРасчет()
// ВнСовместитель — реквизит журнала расчетов
// Категории — периодический реквизит справочника ВнутренниеСовместители
// Календарь — реквизит справочника Категории
Календ = ВнСовместитель.Категория.Получить(ДатаОкончания).Календарь;
// размер оклада
Оклад = ВнСовместитель.Оклад.Получить(ДатаОкончания) *
ВнСовместитель.Ставка.Получить(ДатаОкончания);
Дней = Календ.Дней(ДатаНачала, ДатаОкончания);
ВсегоДней = Календ.Дней(НачалоПериодаПоДате(ДатаНачала),
КонецПериодаПоДате(ДатаНачала));
Если ВсегоДней > 0 Тогда
Если Документ.Вид() = "НачалоМесяца" Тогда
Результат = Окр(Оклад * Дней / ВсегоДней);
Иначе
Результат = -Окр(Оклад*Дней/ВсегоДней);
КонецЕсли;
Иначе
Результат = 0;
Сообщить("Неправильно указан календарь (" + Объект.Наименование + ")");
Сообщить("Возможно, не задана категория работника");
КонецЕсли;
КонецПроцедуры