Универсальные функции Даты-Времени в 1Cv7



Представлены 4 основные функции  и 2 вспомогательные.
Входом функций являются Дата и Время как в стандартном, так и форматированном представлении.
На закладке "Функции" дана возможность проверить работу функций. Представлен альтернативный выбор Даты с помощью Календаря (кн. "Выбор").;
На закладке "Календарь" показано, как просто можно создать и  распечатать календарь на любой(!) год.    

Краткое описание. 

  • функция глДВ_Дата(ВхДата,ДобавитьДни,…)

       В ней реализованы все самые важные функции Даты в 1с7 (ДатаМесяц(), ДатаДень() и т.п). Что необходимо — можно добавить.  Входом может быть как переменная типа «Дата» так и ее строковое выражение в русском стандарте ((день)…(месяц)…(год)) разделенные любыми символами). Год может быть любым, от 1 до 9999999…. (до Наше эры не рассматривались, если нужно — можно сделать).  Типы форматов взяты из в 1с7 (ДДД..ММ..ГГ..), но дни месяцы и год могут располагаться в произвольном порядке.

Добавлен специальный формат «Д#k8SjZc9Dxk» — выводиться полное количество дней от Рождества Христова.

  • функция глДВ_Время(ВхВрем,ДобавитьВремя,…)

      В ней реализованы все необходимые функции Времени (в 1с7 отсутствуют). 
Входом (ВхВремя,ДобавитьВремя) может быть как переменная типа ТекущееВремя(), так  и любая строка, включающая в  себя 4 или 3 группы цифр, разделенных любыми символами ((сутки)…(часы)…(минуты)…(секунды)  или (часы)…(минуты)…(секунды))
Форматы сделаны по аналогии с Датой — ВД…Ч…М…С…, но порядок следования должен быть именно таким.
Есть специальный формат «Д#k8SjZc9Dxk» — выводиться количество секунд

       Пример: время=»42/23:52:12″,  формат=»ВДДДЧЧЧЧММСС»,  выход=»42 дня 23 часа 52 мин. 12 сек.».

  • функция глДВ_ДатаВремя(ВхДата,ВхВрем,…)

       В ней реализованы объединенные функцииДаты- Времени (в 1с7 отсутствуют).
Входом (ВхДата,ДобавитьВремя) может быть любые (стандартные или форматированные Дата и Время — см.выше)
Выход — Дата-Время форматированное согласно объединенному формату.  Строка объединенного формата состоит из строк форматов Даты и Времени в любой последовательности и разделенных любыми символами (не задействованными в форматах)

Добавлен специальный формат «#k8SjZc9Dxk#k8SjZc9Dxk» — выдает количество секунд от Рождества Христова.

  • функция глДВ_РазницаДатаВремя(Дата1,Время1,Дата2,Время2…)

       Выдает форматированную разницу между начальным и конечным Датой_Временем (в 1с7 отсутствует).
Входом могут быть Дата и Время в любом «полном»  формате (3 или 2 группы цифр для Даты, 4 или 3 группы цифр для Времени)

Применение для отчетов: задаем Дату-Время начала и конца Отчета — получаем форматированное время работы.

Возможные форматы:       
«ВЛ…Р…Д…Ч…М…С…» — разница Даты-Времени в календарных годах, календарных месяца, днях, часах, минутах, секундах ;
«ВР…Д…Ч…М…С…»  — разница в календарных месяцах (годы пересчитываются в месяцы),  днях, часах, минутах, секундах;
«ВД…Ч…М…С…» —  разница в днях (годы и месяцы пересчитываются в дни), часах, минутах, секундах;
«ВЧ…М…С…» — разница в часах (годы, месяцы и дни пересчитываются в часы), минутах, секундах;
«ВМ…С…» — разница в минутах (годы, месяцы, дни и часы пересчитываются в минуты), секундах;
«ВС…».- разница в секундах  
               
Для данной функции добавлены форматы календарных лет (Л…) и календарных («Реальных») месяцев (Р…).

Пример:

         Дат1=»22 июня 1941 г.»;    Врем1=»4 часа 0:0″;  Дат2=»9 мая 1945″;   Врем2=»0:0:0″;
         Формат=»ВЛЛЛЛРРРРДДДДЧЧЧЧММММСССС»;   Вых=»3 года 10 месяцев 17 дней 20 часов 0 минут 1 секунда «;
         Формат=»ВРРРДДДДЧЧЧЧ»;   Вых=»46 мес. 17 дней 20 часов «;
         Формат=»ВДДД»;   Вых=»1416 дн. «.

 

Примечание:

На любых входах функций реализовано распознавания обобщенного формат Даты-Времени, а именно:

         (День месяца)…(Номер или наименование месяца — 3 первых символа)…(Год)… (Час)…(Минута)…(Секунда)

Троеточием обозначены любые нецифровые символы.

 

11 Comments

  1. Altair777

    (0) Автор, как-то отформатируйте описание, а то читать тяжело — все сливается. Попробуйте абзацы сделать, текст раскрасить.

    Да и текст на скриншотах какой-то неразборчивый.

    Reply
  2. Altair777

    мда, совет не помог

    Reply
  3. newold2

    (2) Altair777, (2) Altair777,

    М…нет, слегка помог.

    Поправил описание функций, добавил пример «календарных» форматов.

    Извиняюсь, надо было использовать раздел «Программирование».

    Формы, да и сама обработка используются здесь только для проверки работы функций.

    Скриншоты даны только для представления о внешнем виде обработки-проверке.

    Конечно, право на отрицательное мнение есть у каждого, но хотелось-бы

    чтобы при этом глубже рассматривалась суть.

    Кстати, выбор даты из Календаря и печать Календаря сделаны мимоходом,

    именно для данной «демонстрашки», чтобы показать возможности функций.

    Reply
  4. Altair777

    (3) скажите Алексей. Вот Вам самому приятно смотреть на свое «творение»?

    Я имею в виду оформление публикации, а не саму обработку.

    Reply
  5. newold2

    (4) Altair777,я не смотрю. А по теме? Например, распознавание форматированных Даты-Времени на входе функций,

    «календарные» форматы для разницы Даты-Времени. Скажите, Вы еще не сделали этого для восьмерки? Берите,

    алгоритмы простые. Форматы Даты можно расширить до всяких применяемых (по моему их всего 4 из 6 возможных

    перестановок. Естественно придется указывать тип международного формата). В некотором роде «интеллектуализация» 1с.

    Reply
  6. Erhov_egor

    да конечно все размазано но почитав хорошая разработка вроде,ранее не встречал

    Reply
  7. Altair777

    (5) своих собственных 7-ых функций с датой у меня хватает.

    Небольшой примерчик есть тут Альтернативный способ выбора интервала дат.

    А для 8-ки не вижу смысла писать собственные. Есть задачи намного более важные 🙂

    Reply
  8. newold2

    Выкладываю последнее исправление. Устранены некоторые ошибки. Введено распознование на любых входах

    функций Даты_Времени в обобщенном формате. Улучшены алгоритмы.

    Reply
  9. Altair777

    (8) плохо смотрели 🙂

    Функций (процедур) работой с датой там много. Они ориентированы на визуализацию формы.

    Например, Процедура ВывСтр() — замена стандартного ПериодСтр()

    Reply
  10. newold2

    (10) Altair777, нашел в гл.модуле.Извиняюсь. Построены на основе стандартных функций Даты 1с7, с их главным недостатком-половина столетия. Мои как раз стандартные и заменяют. Не говоря уже о распознавании форматов, дополнительных форматах,функций и форматах Времени, объединенном формате, «календарном» формате и т.д.

    Reply
  11. serega3333

    для тренировки мозгов отлично пойдет

    Reply

Leave a Comment

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