В качестве значения даты будет использована установленная дата.
Полное описание, параметры и ограничения
ВариантСтандартнойДатыНачала.ПроизвольнаяДата (StandardBeginningDateVariant.Custom)
ВариантСтандартнойДатыНачала (StandardBeginningDateVariant)
ПроизвольнаяДата (Custom)
Доступен, начиная с версии 8.1.
Описание:
В качестве значения даты будет использована установленная дата.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Выбрать стандартную дату начала и явно перейти к конкретной дате
СтандартнаяДатаНачала задаёт одну границу, не полный период. Присваивание Дата переключает Вариант в ПроизвольнаяДата; это проверяется в коде.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Выполняйте в серверном общем модуле новой учебной базы. Стандартные периоды здесь создаются в памяти и не читают бизнес-данные.
Дата в этих упражнениях имеет точность до секунды. Пустая дата не означает текущий день. Часовые пояса и часовой пояс внешнего API — отдельная часть контракта.
Пустая = Новый СтандартнаяДатаНачала;
Сообщить(Пустая.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата);
Сообщить(Не ЗначениеЗаполнено(Пустая.Дата));
Относительная = Новый СтандартнаяДатаНачала(ВариантСтандартнойДатыНачала.НачалоЭтогоМесяца);
Вычисленная = Относительная.Дата;
Сообщить(Вычисленная = НачалоМесяца(Вычисленная));
Сообщить(Относительная.Вариант = ВариантСтандартнойДатыНачала.НачалоЭтогоМесяца);
Относительная.Дата = Дата(2024, 2, 5, 10, 30, 0);
Сообщить(Относительная.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата);
Сообщить(Относительная.Дата = Дата(2024, 2, 5, 10, 30, 0));
Фиксированная = Новый СтандартнаяДатаНачала(Дата(2024, 2, 1));
Сообщить(Фиксированная.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата);
Сообщить(Фиксированная.Дата = Дата(2024, 2, 1));
Фиксированная.Вариант = ВариантСтандартнойДатыНачала.НачалоЭтогоМесяца;
Сообщить(Фиксированная.Дата = НачалоМесяца(Фиксированная.Дата));Разбор по шагам
Конструктор без параметров даёт пустую произвольную дату. Конструктор по варианту даёт вычисляемое начало текущего месяца.
Сохраняем прочитанную относительную дату в переменную для проверки формы границы, не подменяя текущую дату фиксированным месяцем.
Присваиваем 5 февраля 10:30. Вариант автоматически становится ПроизвольнаяДата; время сохраняется, не округляется самовольно до полуночи.
Другой объект создаём сразу по дате 1 февраля. Затем Вариант переключаем обратно на относительное начало месяца.
Как проверить результат
Девять логических сообщений дают Истина.
После присваивания Дата прежний относительный вариант сменился на ПроизвольнаяДата; сохранилось время 10:30.
Пустая дата не превращается в текущую сама собой.
Ожидаемый результат
Разобраны все три конструктора стандартной даты начала и переключение режима.
На что обратить внимание
СтандартнаяДатаНачала не имеет ДатаОкончания; для интервала нужен СтандартныйПериод или отдельно согласованная конечная граница.
Не пытайтесь сохранить относительный вариант и одновременно присвоить Дата: присваивание намеренно меняет Вариант.
Дата начала может содержать время. Если нужен целый календарный день, явно применяйте НачалоДня по требованиям задачи.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.