Что такое дата в 1с?
Дата 1с – тип данных, значениями которого является дата григорианского календаря и время . В исходном коде строка это набор цифр заключенных в одинарные кавычки, вида: ‘ГГГГММДДччммсс’, где:
- ГГГГ – четыре цифры года (включая тысячелетие и век);
- ММ – две цифры месяца;
- ДД – две цифры даты;
- чч – две цифры часа (в 24-х часовом формате);
- мм – две цифры минут;
- сс – две цифры секунд;
Например ‘20191119’ соответствует 19.11.2019 0:00:00, а ‘20200101093000’ соответствует 01.01.2020 9:30:00
Функции работы с датами в 1c
Список и описание с основных функций работы с типом дата можно найти в синтакс-помощнике 1с. Его можно вызвать в режиме 1с Конфигуратора через пункт меню “Справка” или нажатием клавиш CTRL+SHIFT+F1. Ниже рассмотрим решение практических задач связанных с обработкой типа Дата.
Как в 1с узнать через сколько дней Новый год?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // ПЕРВЫЙ ВАРИАНТ С ВЫЧИСЛЕНИЯМИ Сегодня=ТекущаяДата(); Сообщить("Сегодня:"+Сегодня); Новыйгод=КонецГода(Сегодня); ВсегоСекундДоНовогоГода=Новыйгод-Сегодня; // всего секунд осталось до Нового Года ДнейДоНовогоГода= Цел(ВсегоСекундДоНовогоГода/60/60/24); //делим на 60 сек 60 мин и 24 час // получаем целое количество дней ЧасовДоНовогоГода=цел((ВсегоСекундДоНовогоГода-ДнейДоНовогоГода*60*60*24)/60/60); // получаем целое количество часов МинутДоНовогоГода=Цел(((ВсегоСекундДоНовогоГода-ДнейДоНовогоГода*60*60*24)-(ЧасовДоНовогоГода*60*60))/60); // получаем целое количество минут СекундДоНовогоГода=(ВсегоСекундДоНовогоГода-ДнейДоНовогоГода*60*60*24)-(ЧасовДоНовогоГода*60*60)-(МинутДоНовогоГода*60);// получаем оставшееся колво секунд Сообщить("До Нового Года осталось "+ДнейДоНовогоГода+" дн. "+ЧасовДоНовогоГода+" ч. "+МинутДоНовогоГода+" мин. "+ СекундДоНовогоГода+" сек." ); //Результат: //Сегодня:15.11.2019 10:19:53 //До Нового Года осталось 46 дн. 13 ч. 40 мин. 6 сек. //ВТОРОЙ ВАРИАНТ с расчетом от начала времени Сегодня=ТекущаяДата(); Сообщить("Сегодня:"+Сегодня); Новыйгод=КонецГода(Сегодня); ВсегоСекундДоНовогоГода=Новыйгод-Сегодня; // всего секунд осталось до Нового Года //добавляем кол-во секунд к нулевой дате ДатаОтНачала='00010101'+ВсегоСекундДоНовогоГода; ДнейДоНовогоГода=ДеньГода(ДатаОтНачала)-1; ЧасовДоНовогоГода=Час(ДатаОтНачала); МинутДоНовогоГода=Минута(ДатаОтНачала); СекундДоНовогоГода=Секунда(ДатаОтНачала); Сообщить("До Нового Года осталось "+ДнейДоНовогоГода+" дн. "+ЧасовДоНовогоГода+" ч. "+МинутДоНовогоГода+" мин. "+ СекундДоНовогоГода+" сек." ); |
Сколько дней, часов, минут прожито?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ДеньРождения='19820710164200'; //' Сообщить("День рождения:"+ДеньРождения); Сегодня=ТекущаяДата(); ВсегоСекунд=Сегодня-ДеньРождения; ВсегоМинут=Цел(ВсегоСекунд/60); ВсегоЧасов=Цел(ВсегоСекунд/60/60); ВсегоДней=Цел(ВсегоСекунд/60/60/24); // так как бывают високосные года делить на 365 нельзя пойдем от начала времен ДатаОтНачала='00010101'+ВсегоСекунд; ВсегоЛет=Год(ДатаОтНачала)-1; Сообщить("Всего секунд от рождения:"+ВсегоСекунд); Сообщить("Всего минут от рождения:"+ВсегоМинут); Сообщить("Всего часов от рождения:"+ВсегоЧасов); Сообщить("Всего дней от рождения:"+ВсегоДней); Сообщить("Всего лет от рождения:"+ВсегоЛет); //Результат //День рождения:10.07.1982 16:42:00 //Всего секунд от рождения:1 178 650 125 //Всего минут от рождения:19 644 168 //Всего часов от рождения:327 402 //Всего дней от рождения:13 641 //Всего лет от рождения:37 |
Сколько понедельников в году?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | Сегодня=ТекущаяДата(); ДеньГода=НачалоГода(Сегодня); Пн=0; Вт=0; Ср=0; Чт=0; Пт=0; Сб=0; Вс=0; //обходим весь год по дням и суммируем дни недели пока ДеньГода<КонецГода(Сегодня) цикл Если ДеньНедели(ДеньГода) =1 тогда // Понедельник пн=пн+1; КонецЕсли; Если ДеньНедели(ДеньГода) =2 тогда // Вторник вт=вт+1; КонецЕсли; Если ДеньНедели(ДеньГода) =3 тогда // Среда ср=ср+1; КонецЕсли; Если ДеньНедели(ДеньГода) =4 тогда // Четверг чт=чт+1; КонецЕсли; Если ДеньНедели(ДеньГода) =5 тогда // Пятница пт=пт+1; КонецЕсли; Если ДеньНедели(ДеньГода) =6 тогда // Суббота сб=сб+1; КонецЕсли; Если ДеньНедели(ДеньГода) =7 тогда // Воскресенье вс=вс+1; КонецЕсли; ДеньГода=ДеньГода+60*60*24; // прибавляем день день ОбработкаПрерыванияПользователя(); КонецЦикла; Сообщить("В "+Год(Сегодня)+" году:"); Сообщить("Понедельников:"+пн); Сообщить("Вторников:"+вт); Сообщить("Сред:"+ср); Сообщить("Четвергов:"+чт); Сообщить("Пятниц:"+пт); Сообщить("Суббот:"+сб); Сообщить("Воскресений:"+вс); //Результат: //В 2 019 году: //Понедельников:52 //Вторников:53 //Сред:52 //Четвергов:52 //Пятниц:52 //Суббот:52 //Воскресений:52 |
Как при помощи 1с найти следующую черную пятницу (13 число)?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | //ПОИСК ЧЕРЕЗ 13 ЧИСЛО Сегодня=ТекущаяДата(); Сообщить("Сегодня:"+Формат(Сегодня,"ДЛФ=DD")); //Ищем ближайшее 13 число Если День(Сегодня)>13 тогда ДатаПлюсМесяц=ДобавитьМесяц(сегодня,1); тринадцатое=Дата(год(ДатаПлюсМесяц),месяц(ДатаПлюсМесяц),13) иначе тринадцатое=Дата(год(Сегодня),месяц(Сегодня),13) КонецЕсли; //проверка на пятницу Пока ДеньНедели(тринадцатое)<>5 Цикл тринадцатое=ДобавитьМесяц(тринадцатое,1); ОбработкаПрерыванияПользователя(); КонецЦикла; Сообщить("Следующая черная пятница:"+Формат(тринадцатое,"ДЛФ=DD")); //Результат: //Сегодня:15 ноября 2019 г. //ПОИСК ЧЕРЕЗ ПЯТНИЦУ Сегодня=ТекущаяДата(); Сообщить("Сегодня:"+Формат(Сегодня,"ДЛФ=DD")); //Находим ближайшую пятницу ПрибавитьДнейДоПт=Макс(5-ДеньНедели(Сегодня),(5-ДеньНедели(Сегодня))*-1); //сколько дней не хватает до пятницы Пятница=Сегодня+ПрибавитьДнейДоПт*60*60*24; // проверяем на 13 число Пока День(Пятница)<>13 Цикл Пятница=Пятница+7*60*60*24;// берем следующую пятницу, т.е прибавляем 7 дней ОбработкаПрерыванияПользователя(); КонецЦикла; Сообщить("Следующая черная пятница:"+Формат(Пятница,"ДЛФ=DD")); //Результат: //Сегодня:15 ноября 2019 г. //Следующая черная пятница:13 декабря 2019 г. |
Поделиться ссылкой:
Похожие записи
Работа с типом Дата в 1с