gifts2017

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

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

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

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

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

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

Добавлен специальный формат "Д^" - выводиться полное количество дней от Рождества Христова.

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

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

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

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

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

Добавлен специальный формат "^^" - выдает количество секунд от Рождества Христова.

  • функция глДВ_РазницаДатаВремя(Дата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 первых символа)...(Год)... (Час)...(Минута)...(Секунда)

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

 



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

Наименование Файл Версия Размер Кол. Скачив.
ДатаВремя_Демо.zip
.zip 30,20Kb
31.05.12
15
.zip 30,20Kb 15 Скачать

См. также

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

Комментарии

1. Альтаир (Altair777) 22.05.12 17:01
(0) Автор, как-то отформатируйте описание, а то читать тяжело - все сливается. Попробуйте абзацы сделать, текст раскрасить.
Да и текст на скриншотах какой-то неразборчивый.
2. Альтаир (Altair777) 25.05.12 15:38
3. Алексей Сафонов (newold2) 28.05.12 10:22
(2) Altair777, (2) Altair777,
М...нет, слегка помог.
Поправил описание функций, добавил пример "календарных" форматов.
Извиняюсь, надо было использовать раздел "Программирование".
Формы, да и сама обработка используются здесь только для проверки работы функций.
Скриншоты даны только для представления о внешнем виде обработки-проверке.
Конечно, право на отрицательное мнение есть у каждого, но хотелось-бы
чтобы при этом глубже рассматривалась суть.
Кстати, выбор даты из Календаря и печать Календаря сделаны мимоходом,
именно для данной "демонстрашки", чтобы показать возможности функций.
4. Альтаир (Altair777) 28.05.12 13:06
(3) newold2, скажите Алексей. Вот Вам самому приятно смотреть на свое "творение"?
Я имею в виду оформление публикации, а не саму обработку.
5. Алексей Сафонов (newold2) 30.05.12 16:46
(4) Altair777,я не смотрю. А по теме? Например, распознавание форматированных Даты-Времени на входе функций,
"календарные" форматы для разницы Даты-Времени. Скажите, Вы еще не сделали этого для восьмерки? Берите,
алгоритмы простые. Форматы Даты можно расширить до всяких применяемых (по моему их всего 4 из 6 возможных
перестановок. Естественно придется указывать тип международного формата). В некотором роде "интеллектуализация" 1с.
6. Егор Ерхов (Erhov_egor) 30.05.12 16:54
да конечно все размазано но почитав хорошая разработка вроде,ранее не встречал
7. Альтаир (Altair777) 31.05.12 14:06
(5) newold2, своих собственных 7-ых функций с датой у меня хватает.
Небольшой примерчик есть тут Альтернативный способ выбора интервала дат.

А для 8-ки не вижу смысла писать собственные. Есть задачи намного более важные :)
8. Алексей Сафонов (newold2) 31.05.12 18:42
(7) Altair777, я смотрел. Никаких Ваших функций Даты_Времени там нет.
9. Алексей Сафонов (newold2) 31.05.12 18:45
Выкладываю последнее исправление. Устранены некоторые ошибки. Введено распознование на любых входах
функций Даты_Времени в обобщенном формате. Улучшены алгоритмы.
10. Альтаир (Altair777) 01.06.12 11:53
(8) newold2, плохо смотрели :)
Функций (процедур) работой с датой там много. Они ориентированы на визуализацию формы.
Например, Процедура ВывСтр() - замена стандартного ПериодСтр()
11. Алексей Сафонов (newold2) 01.06.12 13:04
(10) Altair777, нашел в гл.модуле.Извиняюсь. Построены на основе стандартных функций Даты 1с7, с их главным недостатком-половина столетия. Мои как раз стандартные и заменяют. Не говоря уже о распознавании форматов, дополнительных форматах,функций и форматах Времени, объединенном формате, "календарном" формате и т.д.
12. qweasd qweasdzc (serega3333) 04.06.12 13:43
для тренировки мозгов отлично пойдет
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа