Выбрать стандартную дату начала и явно перейти к конкретной дате

Учебные задачи

СтандартнаяДатаНачала задаёт одну границу, не полный период. Присваивание Дата переключает Вариант в ПроизвольнаяДата; это проверяется в коде.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Выполняйте в серверном общем модуле новой учебной базы. Стандартные периоды здесь создаются в памяти и не читают бизнес-данные.

  2. Дата в этих упражнениях имеет точность до секунды. Пустая дата не означает текущий день. Часовые пояса и часовой пояс внешнего API — отдельная часть контракта.

Пустая = Новый СтандартнаяДатаНачала;
Сообщить(Пустая.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата);
Сообщить(Не ЗначениеЗаполнено(Пустая.Дата));
Относительная = Новый СтандартнаяДатаНачала(ВариантСтандартнойДатыНачала.НачалоЭтогоМесяца);
Вычисленная = Относительная.Дата;
Сообщить(Вычисленная = НачалоМесяца(Вычисленная));
Сообщить(Относительная.Вариант = ВариантСтандартнойДатыНачала.НачалоЭтогоМесяца);
Относительная.Дата = Дата(2024, 2, 5, 10, 30, 0);
Сообщить(Относительная.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата);
Сообщить(Относительная.Дата = Дата(2024, 2, 5, 10, 30, 0));
Фиксированная = Новый СтандартнаяДатаНачала(Дата(2024, 2, 1));
Сообщить(Фиксированная.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата);
Сообщить(Фиксированная.Дата = Дата(2024, 2, 1));
Фиксированная.Вариант = ВариантСтандартнойДатыНачала.НачалоЭтогоМесяца;
Сообщить(Фиксированная.Дата = НачалоМесяца(Фиксированная.Дата));

Разбор по шагам

  1. Конструктор без параметров даёт пустую произвольную дату. Конструктор по варианту даёт вычисляемое начало текущего месяца.

  2. Сохраняем прочитанную относительную дату в переменную для проверки формы границы, не подменяя текущую дату фиксированным месяцем.

  3. Присваиваем 5 февраля 10:30. Вариант автоматически становится ПроизвольнаяДата; время сохраняется, не округляется самовольно до полуночи.

  4. Другой объект создаём сразу по дате 1 февраля. Затем Вариант переключаем обратно на относительное начало месяца.

Как проверить результат

  1. Девять логических сообщений дают Истина.

  2. После присваивания Дата прежний относительный вариант сменился на ПроизвольнаяДата; сохранилось время 10:30.

  3. Пустая дата не превращается в текущую сама собой.

Ожидаемый результат

Разобраны все три конструктора стандартной даты начала и переключение режима.

На что обратить внимание

  1. СтандартнаяДатаНачала не имеет ДатаОкончания; для интервала нужен СтандартныйПериод или отдельно согласованная конечная граница.

  2. Не пытайтесь сохранить относительный вариант и одновременно присвоить Дата: присваивание намеренно меняет Вариант.

  3. Дата начала может содержать время. Если нужен целый календарный день, явно применяйте НачалоДня по требованиям задачи.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.