"Демо" сделано на УФ, в модуле формы все 9 функций. Показана работа четырех функций (из 9 предложенных).
Описание функций.
1. Дата_Реквизиты(ДатаВх)
Возвращает Структуру с реквизитами даты:
Год, Месяц, Полугодие, Квартал, Месяц, Декада, Неделя, Сутки, Час, Минута, Секунда.
2. Дата_ЗначениеРеквизита(ДатВх="",КодИлиТипРеквизита="")
ВХОД
ДатВх - Входная дата
КодИлиТипРеквизита - КодР (цифра) или ТипР (символьный) реквизита Даты
КодР, ТипР, Знач:
0 - произвольный "."; Знач - (не определено)
1 - Год (Год); "Г(од)"; Знач - номер года (от Рожд.Христова)
2 - Полугодие (Плг); "П(олугодие)"; Знач - номер полугодия (в Годе)
3 - Квартал (Квт); "К(вартал)"; Знач - номер квартала (в Годе)
4 - Месяц (Мес); "М(есяц)"; Знач - номер месяца (в Годе)
5 - Декада (Дек); "Д(екада)"; Знач - номер декады (в Месяце)
6 - Неделя (Нед); "Н(еделя)"; Знач - номер недели (в Месяце)
7 - Сутки (Сут); "С(утки)"; Знач - день месяца (в Месяце)
8 - Час (Час); "Час"; Знач - номер часа (в Сутках)
9 - Минута (Мин); "Мин(ута)"; Знач - номер минуты (в Часе)
10 - Секунда (Сек); "Сек(унда)"; Знач - номер секунды (в Минуте)
ВОЗВРАЩАЕТ
ЗначениеРеквизита - относительный Номер
(относительно реквизита верхнего уровня. см "КодИлиТипРеквизита")
3.Дата_Изменить(ДатВх="",Год="",Мес="",Сут="",Час="",Мин="",Сек="")
Изменяет ДатВх на основе нескольких значений входных параметров
(Проверка корректности параметров не производится)
ВХОД
ДатВх - Входная дата
Год - устанавливаемый Год
Мес - устанавливаемый Месяц
Сут - устанавливаемый День
Час - устанавливаемый Час
Мин - устанавливаемая Минута
Сек - устанавливаемая Секунда
ВОЗВРАЩАЕТ полученную Дату
4. Дата_УстановитьРеквизит(ДатВх="",КодИлиТипРеквизита="",ЗначениеРеквизита="")
изменяет ДатВх на основе указанных Типа и Значения Реквизита
С проверкой: при превышении Мин. или Макс. допустимого значения Реквизита устанавливается соответственно его Мин. или Макс. допустимое значение.
ВХОД
ДатВх - Входная дата
КодИлиТипРекв - Код или Тип Реквизита
(См функцию "Дата_ЗначениеРеквизита(...)"
ЗначениеРеквизита - относительный номер реквизита
(относительно реквизита верхного уровня)
ВОЗВРАЩАЕТ полученную Дату
5. Дата_Разность(Дата1="",Дата2="",РеквизитРасчета=1)
Получаем разность любых дат: Дата2-Дата1 (в т.ч. и отрицательную разность)
ВХОД
Дата1 - первая дата
Дата2 - вторая дата
РеквизитРасчета - Код или Тип реквизита, с которого начнется расчет разности
(см. ф-ю "Дата_ЗначениеРеквизита(...)")
ВОЗВРАЩАЕТ Структуру с ключами:
Год - количество календарных лет
Мес - количество календарных месяцев
Сут - количество дней
Час - количество часов
Мин - количество минут
Сек - количество секунд
6. Дата_Период(ДатВх="",КодИлиТипПериода=0,НомерПериода="",КоличествоПериодов=1)
Возвращает даты начала и конца указанной серии периодов.
/ВХОД
ДатВх - Входная дата
КодИлиТипПериода - КодП (цифра) или ТипП (символьный) "стандартного" периода
КодП, ТипП, Номер:
0 - произвольный "."; Номер - (не используется)
1 - Год (Год); "Г(од)"; Номер - номер года (от Рожд.Христова)
2 - Полугодие (Плг); "П(олугодие)"; Номер - номер полугодия (в Годе)
3 - Квартал (Квт); "К(вартал)"; Номер - номер квартала (в Годе)
4 - Месяц (Мес); "М(есяц)"; Номер - номер месяца (в Годе)
5 - Декада (Дек); "Д(екада)"; Номер - номер декады (в Месяце)
6 - Неделя (Нед); "Н(еделя)"; Номер - номер недели (в Месяце)
7 - Сутки (Сут); "С(утки)"; Номер - день месяца (в Месяце)
8 - Час (Час); "Час"; Номер - номер часа (в Сутках)
9 - Минута (Мин); "Мин(ута)"; Номер - номер минуты (в Часе)
10 - Секунда (Сек); "Сек(унда)"; Номер - номер секунды (в Минуте)
НомерПериода - если не указан - вычисляется (см. КодИлиТипПериода)
КоличествоПериодов - количество в серии "стандартных" периодов
с кодом КодИлиТипПериода
ВОЗВРАЩАЕТ Структуру:
ДатаНач - Дата начала серии периодов
ДатаКон - Дата конца серии периодов
ДатаНачОтн - Дата начала серии периодов Относительная ("внутри" периода вышестоящего уровня),
например, для первой недели - начало месяца (см. КодИлиТипПериода)
ДатаКонОтн - Дата конца серии периодов Относительная ("внутри" периода вышестоящего уровня)
Номер - номер начального периода в серии ("внутри" периода вышестоящего уровня)
Количество - Количество периодов ("внутри" периода вышестоящего уровня)
КодПериода - (см. КодИлиТипПериода)
ТипПериода - (см. КодИлиТипПериода)
7. Дата_Добавить(ДатВх="",КодИлиТипПериода="",Количество=0,Годы=0, Месяцы=0,Сутки=0,Часы=0,Минуты=0,Секунды=0)
ВХОД
ДатВх - Входная дата
КодИлиТипПериода - Код или Тип "стандартного" периода:
(См. функцию "Дата_Период(...)"
Количество - количество добавляемых периодов с кодом КодИлиТипПериода
Годы - количество (дополнительно) добавляемых лет
Месяцы - количество (дополнительно) добавляемых месяцев
Сутки - количество (дополнительно) добавляемых суток
Часы - количество (дополнительно) добавляемых часов
Минуты - количество (дополнительно) добавляемых минут
Секунды - количество (дополнительно) добавляемых секунд
ВОЗВРАЩАЕТ полученную Дату
8. Дата_НайтиПериод(ДатВх1="",ДатВх2="")
Возвращает найденный Код Периода, Тип Периода,
Номер периода начала серии (периодов),
Количество периодов в серии.
9. Дата_СерияПериодов(ДатаНач="",Шаг="",Период="",КолШагов=0,ДатаКон="")
ВХОД
ДатНач - Дата начала серии
Шаг - Структура с ключами: параметры для ф-ции "Дата_Добавить(...).
Период - Структура с ключами: параметры для ф-ции "Дата_Добавить(...).
КолШагов - количество шагов в серии (начиная с нулевого)
ДатаКон - Конечная Дата (граница) для серии
ВОЗВРАЩАЕТ Соответствие с датами начал и концов периодов:
ДатаНач - Дата начала периода (Ключ)
ДатаКон - Дата конца периода (Значение)