Дата. Расширение методов на языке 1С:8

Предлагается 9 функций, расширяющих возможности и упрощающих  работу с Периодом, Датой, Временем.
Можно использовать для любых форм и платформ.

«Демо» сделано на УФ, в модуле формы все 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,ДатаКон=»»)

ВХОД

     ДатНач     — Дата начала серии

     Шаг           —  Структура с ключами: параметры для  ф-ции «Дата_Добавить(…).

     Период     — Структура с ключами: параметры для ф-ции «Дата_Добавить(…).

     КолШагов — количество шагов в серии (начиная с нулевого)

     ДатаКон    — Конечная Дата (граница) для серии

ВОЗВРАЩАЕТ Соответствие с датами начал и концов периодов:

        ДатаНач — Дата начала периода (Ключ)

        ДатаКон — Дата конца периода  (Значение)

 

1 Comment

  1. newold2

    Добавил девятую функцию: Дата_СерияПериодов(…), описание к ней. Подчистил некоторые неточности, которые

    могли приводить к ошибкам.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *