Тип дата в 1с относится к примитивным типам данных. Он используется постоянно, например как реквизит даты Документа.
Другими словами типа дата в 1с содержит точную (с точностью до 0,1 миллисекунды) дату григорианского календаря.
Типовой порядок частей даты принятый в 1С — год, месяц, день, час, минута, секунда.
Самый простой способ задания даты представлен ниже:
ДатаРождения='20220102145555';//1 февраля 2022 года 14 часов 55 минут 55 секунд
Дата приравнивается к переменной строки цифр в одинарных кавычках.
В данной записи вида ‘ГГГГММДДччммсс’ где:
- ГГГГ — четыре цифры года (включая тысячелетие и век);
- ММ — две цифры месяца;
- ДД — две цифры даты;
- чч — две цифры часа (в 24-х часовом формате);
- мм — две цифры минут;
- сс — две цифры секунд.
Часы, минуты и секунды можно не указывать, при этом они приравниваются к нулю.
Также перечень всех функций работы с датами можно посмотреть в синтакс-помощнике:
Увеличение даты на 1 день
Значение типа данных дата определено с точностью до секунды. При прибавлении к дате числа 1 увеличивается время на 1 секунду. Поэтому увеличить дату на 1 день можно так:
ДатаВременная=Дата+60*60*24;
пустая дата в 1с
Для того чтобы проверить дату на “пустое” значение, нужно сравнить имеющееся значение со значением типа “Дата” по умолчанию. Например:
Функция ДатаНеЗаполнена(ПереданноеЗначение)
Если ПереданноеЗначение = Дата('00010101') Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Функция ДеньНедели()
Пример подсчета рабочих и выходных дней
раб=0;вых=0;
ДатаТ=Объект.ДатаНач;
пока ДатаТ<=объект.ДатаКон цикл
если ДеньНедели(ДатаТ)=7 или ДеньНедели(ДатаТ)=6 тогда
вых=вых+1;
иначе
раб=раб+1;
конецесли;
ДатаТ=ДатаТ+60*60*24;
конеццикла;
Объект.Дней=Число(раб);
объект.Подробности="вых="+строка(вых)+" раб="+Строка(раб);
Функция ТекущаяДата()
Выводит текущую дату.
Перем Дата;
Дата=ТекущаяДата();
Сообщить(Дата);
Функция ДобавитьМесяц ()
Функция добавляет указанное количество месяцев к заданной дате. Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Добавляет (или вычитает) к указанной дате заданное число месяцев.
ТекущаяУниверсальнаяДатаВМиллисекундах
Функция ТекущаяУниверсальнаяДатаВМиллисекундах() позволяет узнать дату в миллисекундах. Она доступна начиная с версии платформы 8.2.17.
&НаКлиенте
Процедура ТестДата(Команда)
Сообщить(ТекущаяУниверсальнаяДатаВМиллисекундах()); //63 628 364 816 246
КонецПроцедуры
Дата
Функция Дата() служит для создания значения типа “Дата”. Использовать ее можно двумя способами:
- Дата(x) — где параметр “x” это строка вида “ГГГГММДДччммсс”, часы, минуты и секунды можно опустить, т.е. преобразуем строку в дату;
- Дата(x, y, z, w, v, c) — в этом случае параметры “x”, “y”, “z”, “w”, “v” и “c” являются числами и означают год, месяц, день, час, минуту и секунду соответственно. Как и в предыдущем случае час, минуту и секунду можно опустить.
МоментВремени
МоментВремени это объект который является совокупностью даты и ссылки на какой-либо объект информационной базы. Он используется в качестве значения свойств или параметров методов других объектов, имеющих тип МоментВремени. Применяться этот объект может при программном создании документов. Разные документы создаются в разные моменты времени. МоментВремени необходим для того, чтобы различать моменты времени для объектов имеющих одинаковую дату создания.
Количество дней в месяце в 1с: Предприятие
Пример нахождения Количество дней в месяце в 1с: Предприятие
&НаКлиенте
Процедура Команда4(Команда)
Дата=Объект.Период;
КоличествоДней=День(КонецМесяца(Дата));
Сообщить("КоличествоДней="+КоличествоДней);
КонецПроцедуры
Функция преобразования Даты из числового формата Excel
Функция преобзавованиеДаты(Строка.ДатаРождения)
СтрокаДата=Сред(строка.ДатаРождения,7,4)+сред(строка.ДатаРождения,4,2)+лев(строка.ДатаРождения,2);
ДатаРождения=Дата(СтрокаДата);
Возврат ДатаРождения;
Конецфункции
Функция 1с Получить Дату из Строки
Получение Даты из строки популярная операция в программировании на 1с. Пример такой функции представлен ниже. При написании функции использовались только стандартные функции работы со строками и с Датой.
&НаСервере
функция ПолучитьДатуИзСтроки(Стр)
ДТ = Дата("00010101000000");
Если ПустаяСтрока(Стр) Тогда
Возврат ДТ;
КонецЕсли;
Если Найти(Стр,".") > 0 Тогда
М = СтрРазделить(Стр,".");
ИначеЕсли Найти(Стр,"/")>0 Тогда
М = СтрРазделить(Стр,"/");
ИначеЕсли Найти(Стр,",")>0 Тогда
М = СтрРазделить(Стр,",");
ИначеЕсли Найти(Стр,"-")>0 Тогда
М = СтрРазделить(Стр,"-");
КонецЕсли;
Попытка
Если М.Количество() = 3 Тогда //"01.02.13" или "01.02.2013"
Год = ?(СтрДлина(М[2]) = 2,2000 + М[2],М[2]);
ДТ = Дата(Год,М[1],М[0]);
ИначеЕсли М.Количество() = 2 Тогда //"02.13" или "02.2013";
Год = ?(СтрДлина(М[1]) = 2,2000 + М[1],М[1]);
ДТ = Дата(Год,М[0],1);
КонецЕсли;
Исключение
КонецПопытки;
Возврат ДТ;
КонецФункции
Функция перевода данных типа даты при экспорте из файла электронной таблицы Excel.
Изучен тип дата в 1с и его основные функции.