Создаём утреннее и дневное окно; отдельная проверка показывает, почему добавление в полученную копию массива не меняет основное расписание.
Где и как запускать
Полный модуль собственной управляемой формы, расчёт на сервере.
Подготовка
Собственная пустая конфигурация УчебнаяКонфигурацияСинтаксиса 8.5.1.1343. Создайте внешнюю обработку с управляемой формой, командой Выполнить и её кнопкой; вставьте полный модуль урока в форму.
ТребуетсяВыполнение доступен серверу, толстому клиенту и внешнему соединению. Поэтому здесь тонкий клиент получает результат отдельной серверной функции.
Расписание создаётся только в памяти. Регламентное задание не создаётся, не записывается и не запускается; действующие расписания базы не читаются и не меняются.
Все даты проверки заданы явно. Вызов без даты зависит от текущего времени и для этих воспроизводимых проверок не используется.
&НаКлиенте
Процедура Выполнить(Команда)
Сообщить(ПроверитьУчебноеРасписание());
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьУчебноеРасписание()
Отчет = Новый Массив;
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ДатаНачала = Дата(2026, 9, 1);
Расписание.ДатаКонца = Дата(2026, 9, 30);
Утро = Новый РасписаниеРегламентногоЗадания;
Утро.ВремяНачала = Дата(1, 1, 1, 9, 0, 0);
Утро.ВремяКонца = Дата(1, 1, 1, 10, 0, 0);
День = Новый РасписаниеРегламентногоЗадания;
День.ВремяНачала = Дата(1, 1, 1, 14, 0, 0);
День.ВремяКонца = Дата(1, 1, 1, 15, 0, 0);
Детали = Расписание.ДетальныеРасписанияДня;
Детали.Добавить(Утро);
Отчет.Добавить(Строка(Расписание.ДетальныеРасписанияДня.Количество() = 0));
Расписание.ДетальныеРасписанияДня = Детали;
Отчет.Добавить(Строка(Расписание.ДетальныеРасписанияДня.Количество() = 1));
Детали = Расписание.ДетальныеРасписанияДня;
Детали.Добавить(День);
Расписание.ДетальныеРасписанияДня = Детали;
Отчет.Добавить(Строка(Расписание.ДетальныеРасписанияДня.Количество() = 2));
Отчет.Добавить(Строка(Расписание.ТребуетсяВыполнение(Дата(2026, 9, 15, 9, 30, 0))));
Отчет.Добавить(Строка(НЕ Расписание.ТребуетсяВыполнение(Дата(2026, 9, 15, 12, 0, 0))));
Отчет.Добавить(Строка(Расписание.ТребуетсяВыполнение(Дата(2026, 9, 15, 14, 30, 0))));
Отчет.Добавить(Строка(НЕ Расписание.ТребуетсяВыполнение(Дата(2026, 9, 15, 15, 0, 1))));
Возврат СтрСоединить(Отчет, Символы.ПС);
КонецФункцииРазбор по шагам
Основное расписание ограничивает календарные даты. Суточные ограничения задаём только у объектов Утро/День.
ДетальныеРасписанияДня возвращает копию массива. После Детали.Добавить(Утро) свойство ещё содержит ноль элементов; присвоение возвращает изменённый массив.
Для второго добавления опять получаем копию и обязательно присваиваем её обратно.
Детальное расписание может содержать только ВремяНачала, ВремяКонца, ВремяЗавершения, ИнтервалЗавершения, ПериодПовтораВТечениеДня, ПаузаПовтора. Не добавляем туда календарные ограничения.
Основное расписание при наличии деталей не должно содержать перечисленные суточные свойства. Пример соблюдает это разделение.
Как проверить результат
Семь строк ожидаются Истина. В 09:30 и 14:30 расписание подходит, в полдень и после 15:00 — нет.
Уберите обратное присвоение после первого добавления: проверка количества 1 перестанет проходить. Верните строку перед продолжением опыта.
Ожидаемый результат
Показаны два независимых окна дня и реальная семантика возвращаемой копии массива.
На что обратить внимание
Расписание.ДетальныеРасписанияДня.Добавить(...) без обратного присвоения не сохраняет изменение.
Не задавать ВремяНачала основного расписания одновременно с детальными окнами.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.