Функции работы с датами в 1С

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

Здесь я их выкладываю, чтобы не потерять (т.к. они настолько примитивны, что гордиться тут особо нечем).
А заодно, может еще кому пригодятся.

Надеюсь, что разработчики 1С обратят внимание на эту заметку и в следующих версиях добавят эти две простые функции.

Функции можно поместить в общий модуль с любым расположением:

// Назаренко_СВ 2020-02-03
//
// Объединяет в одно значение ДатаВремя отдельно переданную дату и отдельно переданное время.
//
//Параметры:
// ОбъединяемаяДата – Дата(Дата) – Дата, в которую нужно добавить значение времени.
// ОбъединяемоеВремя - Дата(Время) - Время, которое нужно добавить в указанную дату.
//
//Возвращаемое значение:
// Дата(ДатаВремя) – Указанная дата с указанным временем в виде одного значения.
//
Функция ДатаВремяОбъединить(ОбъединяемаяДата, ОбъединяемоеВремя) Экспорт
	Результат = ОбъединяемаяДата + (ОбъединяемоеВремя - '00010101');
	Возврат Результат;
КонецФункции

// Назаренко_СВ 2020-02-03
//
// Разделяет значение с датой и временем на дату отдельно и время отдельно.
//
//Параметры:
// РазделяемаяДата – Дата(ДатаВремя) – Значение даты со временем, которое нужно разделить.
//
//Возвращаемое значение:
// Структура – Структура со значениями отдельно даты и отдельно времени, указанного в аргументах значения.
//             Поля:
//               Дата - Дата(Дата) - Указанная в аргументе дата.
//               Время - Дата(Время) - Указанное в аргументе время.
//
Функция ДатаВремяРазделить(РазделяемаяДата) Экспорт
	Результат = Новый Структура("Дата, Время");
	Результат.Дата  = НачалоДня(РазделяемаяДата);
	Результат.Время = '00010101' + (РазделяемаяДата - Результат.Дата);
	Возврат Результат;
КонецФункции
		

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