Получить консультацию

Тип Дата в языке 1С 8 – примеры работы

Тип Дата широко используется при разработке в 1С Предприятие 8, и любому разработчику 1С так или иначе приходится сталкиваться с этим типом. Ниже рассмотрены основные примеры и приемы работы с датами в 1С средствами встроенного языка.

Инициализация переменной с типом Дата

Дату можно инициализировать при помощи литералов встроенного языка, а также при помощи функции-конструктора. Минимально необходимыми при указании даты являются год, месяц и день. Часы, минуты и секунды можно не указывать.

// Формат ‘ГГГГММДДччммсс’ Дата = ‘20210505121515’; // 05.05.2021 12:15:15 // Для удобства можно использовать любые нечисловые разделители, результат будет одинаковым // Все нечисловые символы в литерале игнорируются Дата = ‘2021.05.05:12:15:15’; // 05.05.2021 12:15:15 Дата = ‘2021+05/05*12%1515′; // 05.05.2021 12:15:15 Дата = ‘2021050512ё15&15’; // 05.05.2021 12:15:15 Дата = ‘Это литерал типа дата 2021 Я год 05 Я месяц 05 А я день!12час15минута15секунда!’; // 05.05.2021 12:15:15 // Допустимо не указывать часы, минуты и секунды НачалоДня = ‘2021.05.05’; // 05.05.2021 00:00:00 // Функция-конструктор даты // Также как для литерала, достаточно указать год, месяц и день // В отличие от литерала, использование нечисловых символов приведет к ошибке. Дата = Дата(“20210505”); // 05.05.2021 00:00:00 Дата = Дата(2021,05,05); // 05.05.2021 00:00:00 Дата = Дата(2021,05,05,12,15,15); // 05.05.2021 12:15:15

При работе средствами встроенного языка, дата поддерживает точность до 0,1 миллисекунды.
К сожалению, ни в запросах, ни при помещении в базу данных, эта точность не сохраняется.

Дата1 = Дата(2021,05,05); Дата2 = Дата1 + 0.05; РазницаВМиллисекундах = Дата2 Дата1; // 0.05

Функции для получения текущей даты

// Текущая системная дата на компьютере ТекДата = ТекущаяДата();  // Следующие функции доступны только на сервере или в толстом клиенте // Получить текущую дату по Гринвичу. ДатаПоГринвичу = ТекущаяУниверсальнаяДата(); // Получить текущую дату по Гринвичу в миллисекундах // Возвращает число, а не дату! ТекДатаВМиллисекундах = ТекущаяУниверсальнаяДатаВМиллисекундах(); // Текущая системная дата сервера, приведенная к часовому поясу сеанса ТекДата = ТекущаяДатаСеанса();

Получить часть даты в виде числа

Платформа 1С позволяет получить нужную часть даты – например, получить год, месяц или день. Это можно использовать для повторного конструирования новой даты из частей.

// Получить часть даты в виде числа Г = Год(‘20210505121515’); // 2021 М = Месяц(‘20210505121515’); // 5 Д = День(‘20210505121515’); // 5 ч = Час(‘20210505121515’); // 12 м = Минута(‘20210505121515’); // 15 с = Секунда(‘20210505121515’); // 15

Операции над датами в 1С 8

// Можно добавить или отнять нужное число секунд Дата = ТекущаяДата() + 1; // Прибавить секунду // Добавить или отнять нужное количество месяцев Дата = ДобавитьМесяц(ТекущаяДата(),1); // Прибавить к дате месяц Дата = ДобавитьМесяц(ТекущаяДата(),1); // Отнять от даты месяц

Получить начало и конец некоторого периода по дате

Функции имеют название вида [Начало/Конец][Года/Квартала/Месяца/Недели/Дня/Часа/Минуты]Например НачалоГода, КонецГода, НачалоЧаса, КонецЧаса и т.д.
Несмотря на то, что тип Дата в 1С не поддерживает периоды Неделя и Квартал, у них также есть возможность получить начало и конец периода, так как они имеют значимое прикладное значение (при автоматизации расчета зарплаты, начислении налогов и т.п.)

НачГода = НачалоГода(‘20210505121515’); // 01.01.2021 00:00:00 НачМинуты = НачалоМинуты(‘20210505121515’); // 05.05.2021 12:15:00 КонКвартала = КонецКвартала(‘20210505121515’); // Распространенный прием – получить начало следующего дня // Вариант 1 – прибавляем число секунд равное 1 суткам (24*60*60), приводим к началу дня СледующийДень = НачалоДня(ТекущаяДата() + 86400); // Вариант 2 – получаем конец текущих суток, прибавляем секунду, приводим к началу дня СледующийДень = НачалоДня(КонецДня(ТекущаяДата())+1); // Получить разность дат в секундах // Важно! Складывать даты нельзя. РазностьДат = ‘20210505121515’ ‘20210504121515’ // 86400

Проверить дату на заполненность (что дата пустая)

Дата = ‘00010101′; ДатаНеЗаполнена = Дата = ‘00010101’; ДатаНеЗаполнена = Не ЗначениеЗаполнено(Дата); ДатаНеЗаполнена = Дата = Дата(1 , 1 , 1); ДатаНеЗаполнена = Дата = Дата(“00010101”);

Оставьте комментарий

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

двадцать − 19 =

К НАЧАЛУ