gifts2017

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

Опубликовал Алексей Сафонов (newold2) в раздел Программирование - Универсальные функции

Предлагается 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,ДатаКон="")

ВХОД

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

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

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

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

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

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

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

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

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ДатаРасширениеМетодов_Демо
.epf 16,21Kb
30.04.15
8
.epf 16,21Kb 8 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Сафонов (newold2) 30.04.15 12:38
Добавил девятую функцию: Дата_СерияПериодов(...), описание к ней. Подчистил некоторые неточности, которые
могли приводить к ошибкам.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа