Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1C_pr77_Lang2.doc
Скачиваний:
7
Добавлен:
20.11.2019
Размер:
2.52 Mб
Скачать

Глава 25 Работа с Календарями и Праздниками

Объект Календарь в системе 1С:Предприятие предназначен для вычисления временных интервалов на основании произвольных временных графиков. Этот объект может использоваться, например, для учета графика работы предпри­ятия, графика работы внешних организаций, графика учета рабочего времени тех или иных работников предприятия и пр.

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

В глобальном контексте программы 1С:Предприятие есть атрибут "Календари". Этот объект в качестве своих атрибутов имеет значения объек­тов конкретных видов календарей, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту календаря конкретного вида по его имени. Т.е. допустимы следующие синтаксические конструкции:

Календари.Служащие.Дней(ТекДата, ТекДата + 5);

Календари.ПолучитьАтрибут("Служащие").Дней(ТекДата, ТекДата + 5);

Праздники в системе 1С:Предприятие представляет собой объект похожий на календарь, но он заполняется выборочно (не все даты подряд) и в нем могут вводиться и удаляться строки для определенных дат. Данный объект исполь­зуются как набор исключений при заполнении календарей (см. метод календа­ря УчитыватьПраздники).

Контекст работы с календарями

Доступ к атрибутам и методам календарей осуществляется, например, через объект, созданный системной функцией СоздатьОбъект с ключевым словом

"Календарь".

Англоязычный синоним ключевого слова "Календарь" — "Calendar".

Пример:

// Рассчитать продолжительность месяца в часах по календарю "Служащие"

Календ = СоздатьОбъект("Календарь.Служащие");

Час = Календ.Часов('01.01.96', '31.01.96');

// Рассчитать продолжительность текущего расчетного

// периода журнала расчетов Зарплата по календарю Служащие

Календ = СоздатьОбъект("Календарь.Служащие");

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Час = Календ.Часов(ЖР.НачалоТекущегоПериода(), ЖР.КонецТекущегоПериода());

Кроме того, объекты типа «календарь» являются сохраняемыми, т. е. рекви­зиты справочников, документов, журналов расчета могут иметь тип «кален­дарь» и хранить ссылки на объекты этого типа.

Пример:

Процедура ПровестиРасчет()

// ВнСовместитель — реквизит журнала расчетов

// Категории — периодический реквизит справочника ВнутренниеСовместители

// Календарь — реквизит справочника Категории

Календ = ВнСовместитель.Категория.Получить(ДатаОкончания).Календарь;

// размер оклада

Оклад = ВнСовместитель.Оклад.Получить(ДатаОкончания) *

ВнСовместитель.Ставка.Получить(ДатаОкончания);

Дней = Календ.Дней(ДатаНачала, ДатаОкончания);

ВсегоДней = Календ.Дней(НачалоПериодаПоДате(ДатаНачала),

КонецПериодаПоДате(ДатаНачала));

Если ВсегоДней > 0 Тогда

Если Документ.Вид() = "НачалоМесяца" Тогда

Результат = Окр(Оклад * Дней / ВсегоДней);

Иначе

Результат = -Окр(Оклад*Дней/ВсегоДней);

КонецЕсли;

Иначе

Результат = 0;

Сообщить("Неправильно указан календарь (" + Объект.Наименование + ")");

Сообщить("Возможно, не задана категория работника");

КонецЕсли;

КонецПроцедуры

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]