1с статьи | Курс-репетитор программиста 1С

Установка даты

// Инициализировать дату можно с помощью одинарных кавычек
// Формат 'ГодМесяцДеньЧасМинутаСекунда'
Сообщить('20231230210102');

// Игнорируются все значения, отличные от цифр. 
// Разделители используются для упрощения  
Сообщить('2023.12.30 21:01:03');
Сообщить('2023\12\30-21~01~04');

// Обязательно должно задаваться значение года, месяца и дня. 
// Допускается опускать либо время целиком, либо только секунды.	
Сообщить('2023.12.30');
Сообщить('2023\12\30-21~01');

Показать решение

Установка даты из другого типа

// Преобразование Типа Строка в Тип Дата
// Формат строки "ГодМесяцДеньЧасМинутаСекунда"
ДатаИзСтроки = Дата("20231230210105");
Сообщить(ДатаИзСтроки);

// Или
ГодСтрока     = "2023";
МесяцСтрока   = "12";
ДеньСтрока    = "30";
ЧасСтрока     = "21";
МинутаСтрока  = "01";
СекундаСтрока = "06";

ДатаИзСтроки  = Дата(ГодСтрока + МесяцСтрока + ДеньСтрока + 
	ЧасСтрока + МинутаСтрока + СекундаСтрока); 
Сообщить(ДатаИзСтроки);

// Преобразование Типа Число в Тип Дата
ГодЧисло     = 2023;
МесяцЧисло   = 12;
ДеньЧисло    = 30;
ЧасЧисло     = 21;
МинутаЧисло  = 01;
СекундаЧисло = 07;
ДатаИзЧисла  = Дата(ГодЧисло, МесяцЧисло, ДеньЧисло, 
	ЧасЧисло, МинутаЧисло, СекундаЧисло);

Сообщить(ДатаИзЧисла);

Показать решение

Методы работы с типом Дата


// Инициализируем Дату для дальнейшей работы
НашаДата = '20230920210102'; //20.09.2023 21:01:02

НачалоГода      = НачалоГода(НашаДата);		// 01.01.2023 00:00:00
НачалоКвартала 	= НачалоКвартала(НашаДата);	// 01.07.2023 00:00:00
НачалоМесяца 	= НачалоМесяца(НашаДата);	// 01.09.2023 00:00:00
НачалоНедели 	= НачалоНедели(НашаДата);	// 18.09.2023 00:00:00
НачалоДня       = НачалоДня(НашаДата);		// 20.09.2023 00:00:00
НачалоЧаса      = НачалоЧаса(НашаДата);		// 20.09.2023 21:00:00
НачалоМинуты 	= НачалоМинуты(НашаДата);	// 20.09.2023 21:01:00	

КонецГода       = КонецГода(НашаДата);		// 31.12.2023 23:59:59
КонецКвартала 	= КонецКвартала(НашаДата);	// 30.09.2023 23:59:59
КонецМесяца 	= КонецМесяца(НашаДата);	// 30.09.2023 23:59:59
КонецНедели 	= КонецНедели(НашаДата);	// 30.09.2023 23:59:59
КонецДня        = КонецДня(НашаДата);		// 20.09.2023 23:59:59
КонецЧаса       = КонецЧаса(НашаДата);		// 20.09.2023 21:59:59
КонецМинуты 	= КонецМинуты(НашаДата);	// 20.09.2023 21:01:59
	
// Получение частей даты. На выходе тип Число

Год 	= Год(НашаДата); 	//2023
Месяц 	= Месяц(НашаДата); 	//12
День 	= День(НашаДата);	//30
Час 	= Час(НашаДата);	//21
Минута 	= Минута(НашаДата);	//1
Секунда = Секунда(НашаДата);//2

// Получение порядкового номера дня в году
НомерДняВГоду = ДеньГода(НашаДата);	//263 
Сообщить(НомерДняВГоду); 

// Получение порядкового номера дня в неделе (1 - понедельник)
НомерДняВНеделе = ДеньНедели(НашаДата);	//3 
Сообщить(НомерДняВНеделе);

// Получение порядкового номера недели в году
НомерНеделиВГоду = НеделяГода(НашаДата); //39
Сообщить(НомерНеделиВГоду);

Показать решение

Операции с типом Дата

// Инициализируем Дату для дальнейшей работы
НашаДата = '20230920210102'; //20.09.2023 21:01:02

// Сложение и вычитание Даты с Числом. 
// Число всегда будет неявно преобразовано в секунды 
НаСорокСекундБольше    = НашаДата + 40; //20.09.2023 21:01:42
НаТридцатьСекундБольше = НашаДата + 30; //20.09.2023 21:01:32
НаДвадцатьСекундМеньше = НашаДата - 20; //20.09.2023 21:00:42

// Операции с месяцем
НаМесяцБольше       = ДобавитьМесяц(НашаДата, 1);	// 20.10.2023 21:01:32
НаТриМесяцаБольше   = ДобавитьМесяц(НашаДата, 3);	// 20.12.2023 21:01:32
ДваМесяцаНазад      = ДобавитьМесяц(НашаДата, -2);	// 20.07.2023 21:01:32

// Арифметические операции с датами

// Складывать даты можно только с числами, которые преобразовуются в секунды
// Ошибка: преобразование к типу Число не может быть выполнено
СуммаДат = НашаДата + Дата(2023, 12, 09, 12, 21, 01);

// Если вычесть даты, ответ будет в секундах
РазностьДат = НашаДата - Дата("20230820210102");//2 678 400

// Что с миллисекундами?
ДатаС_Миллисекундами = НашаДата + 0.1;	
МиллисекундВДате     = ДатаС_Миллисекундами - НашаДата;

Если ЗначениеЗаполнено(МиллисекундВДате) Тогда
	Сообщить(СтрШаблон("Даты разные. Разница дат: %1", МиллисекундВДате));
Иначе
	Сообщить("Даты совпадают. Миллисекунды не учитываются.");
КонецЕсли;

Показать решение

Дата (Date)

Значения данного типа содержат дату григорианского календаря (с 01 января 0001 года) и время с точностью до 0,1 миллисекунды.

Строка цифр, заключенная в одинарные кавычки вида: 'ГГГГММДДччммсс', где:

  • ГГГГ - четыре цифры года (включая тысячелетие и век);
  • ММ - две цифры месяца;
  • ДД - две цифры даты;
  • чч - две цифры часа (в 24-х часовом формате);
  • мм - две цифры минут;
  • сс - две цифры секунд;

Во встроенном языке в литерале типа Дата обязательно должно задаваться значение года, месяца и дня. Допускается опускать либо время целиком, либо только секунды. Если значение секунд не указано, используется значение "0". Для задания даты, соответствующей началу отсчета, достаточно указать '00010101'. В литерале даты игнорируются все значения, отличные от цифр. Разделители в литерале можно указывать для упрощения ввода даты.

Год (Year)

Синтаксис: Год(<Дата>)

Параметры:

<Дата> (обязательный) Тип: Дата. Исходная дата.

Возвращаемое значение: Тип: Число. Год в указанной дате.

Описание: Определяет год в указанной дате.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Слишком маленькое разрешение экрана.