Можно использовать для любых форм и платформ.
«Демо» сделано на УФ, в модуле формы все 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,ДатаКон=»»)
ВХОД
ДатНач — Дата начала серии
Шаг — Структура с ключами: параметры для ф-ции «Дата_Добавить(…).
Период — Структура с ключами: параметры для ф-ции «Дата_Добавить(…).
КолШагов — количество шагов в серии (начиная с нулевого)
ДатаКон — Конечная Дата (граница) для серии
ВОЗВРАЩАЕТ Соответствие с датами начал и концов периодов:
ДатаНач — Дата начала периода (Ключ)
ДатаКон — Дата конца периода (Значение)
Добавил девятую функцию: Дата_СерияПериодов(…), описание к ней. Подчистил некоторые неточности, которые
могли приводить к ошибкам.