ЭлементыШкалыВремени.Сдвинуть

Методы · Move

Сдвигает указанный элемент шкалы на указанное смещение.

Синтаксис

Сдвинуть(<Элемент>, <Смещение>)
Полное описание, параметры и ограничения

ЭлементыШкалыВремени.Сдвинуть (TimeScaleItems.Move)

ЭлементыШкалыВремени (TimeScaleItems)

Сдвинуть (Move)

Доступен, начиная с версии 8.0.

Синтаксис:
Сдвинуть(<Элемент>, <Смещение>)
Параметры:

<Элемент> (обязательный)
Тип: ЭлементШкалыВремени.
Сдвигаемый элемент.

<Смещение> (обязательный)
Тип: Число.
Количество элементов, на которое необходимо переместить элемент. Положительное значение означает, что элемент будет передвинут ближе к концу шкалы (вниз), отрицательное - ближе к началу (вверх).
Описание:

Сдвигает указанный элемент шкалы на указанное смещение.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

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

Шкала времени содержит уровни, не события. Создаём день и часы, перемещаем уровень и возвращаем понятный порядок.

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

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте новую внешнюю обработку УчебныйПланировщик с пустой управляемой основной формой в учебной базе 8.5.1.1343. Каждый урок — отдельная копия модуля.

  2. Не создавайте вручную реквизит УчебныйПлан и поле ПолеПлана: они создаются программно.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Весь приведённый код вставьте на уровне модуля.

  4. Сохраните собственную EPF и откройте через Файл → Открыть в тонком клиенте Windows. События относятся к фиксированной дате 15.09.2026, не к сегодняшнему дню.

  5. Данные существуют только в памяти формы. Записи календарей, документов, пользователей, оборудования и печать не используются.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебныйПлан", Новый ОписаниеТипов("Планировщик")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    План = Новый Планировщик;
    План.НачалоПериодаОтображения = Дата(2026, 9, 15, 9, 0, 0);
    План.КонецПериодаОтображения = Дата(2026, 9, 15, 17, 0, 0);
    План.ТекущиеПериодыОтображения.Очистить();
    План.ТекущиеПериодыОтображения.Добавить(
        План.НачалоПериодаОтображения, План.КонецПериодаОтображения);
    План.ОтображатьТекущуюДату = Ложь;
    План.ФиксироватьЗаголовокШкалыВремени = Истина;
    План.ФиксироватьЗаголовокИзмерений = Истина;
    План.ВыравниватьГраницыЭлементовПоШкалеВремени = Истина;
    План.ЦветФона = Новый Цвет(255, 255, 255);
    План.ЦветТекста = Новый Цвет(35, 45, 55);
    План.ЦветЛиний = Новый Цвет(220, 225, 230);
    План.Шрифт = Новый Шрифт("Arial", 10);
    Шкала = План.ШкалаВремени;
    Шкала.Положение = ПоложениеШкалыВремени.Верх;
    Шкала.ПрозрачныйФон = Ложь;
    Шкала.ЦветФона = Новый Цвет(240, 245, 250);
    Шкала.ЦветТекста = Новый Цвет(35, 45, 55);
    Пока Шкала.Элементы.Количество() > 0 Цикл
        Шкала.Элементы.Удалить(Шкала.Элементы.Получить(0));
    КонецЦикла;
    Часы = Шкала.Элементы.Добавить();
    Часы.Единица = ТипЕдиницыШкалыВремени.Час;
    Часы.Кратность = 1;
    Часы.Формат = "ДФ=HH:mm";
    Часы.Видимость = Истина;
    Часы.ОтображатьПериодическиеМетки = Истина;
    Часы.ЦветЛиний = Новый Цвет(220, 225, 230);
    Часы.ЦветТекста = Новый Цвет(35, 45, 55);
    Часы.ЦветФона = Новый Цвет(240, 245, 250);
    Прием = План.Элементы.Добавить(Дата(2026, 9, 15, 9, 0, 0), Дата(2026, 9, 15, 10, 0, 0));
    Прием.Значение = "training-receipt";
    Прием.Текст = "Учебный приём — 09:00–10:00";
    Прием.Подсказка = "Вымышленное событие. Только память формы.";
    Прием.ЦветФона = Новый Цвет(210, 235, 255);
    Прием.ЦветТекста = Новый Цвет(25, 70, 115);
    Прием.ЦветРамки = Новый Цвет(80, 140, 195);
    Прием.Шрифт = Новый Шрифт("Arial", 10);
    Прием.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
    Разбор = План.Элементы.Добавить(Дата(2026, 9, 15, 11, 0, 0), Дата(2026, 9, 15, 12, 0, 0));
    Разбор.Значение = "training-review";
    Разбор.Текст = "Учебный разбор — 11:00–12:00";
    Разбор.ЦветФона = Новый Цвет(225, 245, 220);
    Разбор.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;


    ЭтаФорма.УчебныйПлан = План;
    Поле = Элементы.Добавить("ПолеПлана", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеПланировщика;
    Поле.ПутьКДанным = "УчебныйПлан";
    Поле.Заголовок = "Учебный день 15.09.2026";
    Поле.РазрешитьНачалоПеретаскивания = Ложь;
    Поле.РазрешитьПеретаскивание = Ложь;
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить уровни шкалы";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Уровни = УчебныйПлан.ШкалаВремени.Элементы;
    Пока Уровни.Количество() > 1 Цикл
        Уровни.Удалить(Уровни.Получить(0));
    КонецЦикла;
    Часы = Уровни.Получить(0);
    День = Уровни.Вставить(0);
    День.Единица = ТипЕдиницыШкалыВремени.День;
    День.Кратность = 1;
    День.Формат = "ДФ=dd.MM.yyyy";
    День.Видимость = Истина;
    Сообщить(Уровни.Количество() = 2);
    Сообщить(Уровни.Индекс(Часы) = 1);
    Уровни.Сдвинуть(День, 1);
    Сообщить(Уровни.Получить(0) = Часы);
    Уровни.Сдвинуть(День, -1);
    Сообщить(Уровни.Получить(0).Единица = ТипЕдиницыШкалыВремени.День);
    Сообщить(УчебныйПлан.Элементы.Количество() = 2);
КонецПроцедуры

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

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

  2. Вставить(0) создаёт новый верхний уровень. Уровень задаётся единицей, кратностью и форматом.

  3. Часы автоматически получают индекс 1: это позиция шкалы, не число 1:00 и не индекс события.

  4. Сдвинуть для этой коллекции принимает сам ЭлементШкалыВремени, не индекс; возвращаем день над часами.

  5. События не меняются. Доступная ширина/масштаб могут влиять на фактическую видимость подписей.

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

  1. Все пять проверок Истина.

  2. Итоговая шкала содержит день и часы в таком порядке; событий два.

  3. Повторное нажатие снова даёт два уровня, без накопления дней.

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

Показаны семь методов коллекции уровней и отличие масштаба от данных событий.

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

  1. В этой коллекции нет Очистить: корректно удаляем элементы в цикле.

  2. Сдвинуть(0, 1) не соответствует её документированному типу первого аргумента.

  3. Маленькая ширина окна может скрыть подписи, даже если уровень существует.

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

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

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

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

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