Универсальные функции Даты-Времени в 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 не будет опубликован. Обязательные поля помечены *