Таблицу задач размещаем слева, оба переключателя линий включаем. Кнопкой меняем один переключатель, чтобы вручную определить его эффект в установленном клиенте.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе создайте новую внешнюю обработку УчебнаяДиаграммаГанта с пустой управляемой основной формой.
Не добавляйте вручную реквизит УчебныйГрафик и поле ПолеГанта. В событиях формы свяжите ПриСозданииНаСервере с одноимённой процедурой.
Весь код вставьте на уровне модуля, сохраните EPF и откройте в тонком клиенте Windows. Каждый урок запускайте в отдельной копии формы.
Две вымышленные задачи 14–16 сентября 2026 года создаются только в памяти. Рабочие заказы, расписания и печать не используются.
Это полная управляемая форма, не код общего модуля. Вставьте один урок целиком и назначьте обработчик ПриСозданииНаСервере в событиях новой формы.
Данные создаются заново при открытии формы: подготовка в плане 09:00–12:00, в факте 09:00–13:00. Это 3 и 4 календарных часа, отклонение 1 час.
Размеры и начальные настройки элемента задаются на сервере при создании. Кнопка учебной команды проверяет состояние на клиенте; никакие рабочие расписания не изменяются.
График как значение и ПолеГанта как элемент формы — разные объекты. Масштаб данных настраивается у графика, размеры и текущее выделение — у поля.
Запуск и внешний вид в 1С не проверялись. Автоматические проверки исходников не заменяют открытие EPF и ручной осмотр в вашем клиенте.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
Новые.Добавить(Новый РеквизитФормы("УчебныйГрафик", Новый ОписаниеТипов("ДиаграммаГанта")));
ЭтаФорма.ИзменитьРеквизиты(Новые);
График = Новый ДиаграммаГанта;
График.Обновление = Ложь;
График.АвтоОпределениеПолногоИнтервала = Ложь;
График.УстановитьПолныйИнтервал(Дата(2026, 9, 14, 9), Дата(2026, 9, 16, 18));
График.АвтоУстановкаТекстаСерий = Ложь;
График.АвтоУстановкаТекстаТочек = Ложь;
График.ОтображатьПустыеЗначения = Ложь;
График.ОтображениеТекстаИнтервала = ОтображениеТекстаИнтервалаДиаграммыГанта.Отображать;
График.ПрозрачныйФон = Ложь;
График.ЦветФона = Новый Цвет(255, 255, 255);
График.Окантовка = Истина;
План = График.УстановитьСерию("plan");
План.Текст = "Учебный план";
План.Цвет = Новый Цвет(80, 145, 210);
План.ПриоритетЦвета = Истина;
Факт = График.УстановитьСерию("actual");
Факт.Текст = "Учебный факт";
Факт.Цвет = Новый Цвет(95, 165, 95);
Факт.ПриоритетЦвета = Истина;
Подготовка = График.УстановитьТочку("prepare");
Подготовка.Текст = "Подготовка учебного комплекта";
Сборка = График.УстановитьТочку("assemble");
Сборка.Текст = "Сборка учебного комплекта";
ПланПодготовки = График.ПолучитьЗначение(Подготовка, План);
ПланПодготовки.Текст = "План подготовки";
ПланПодготовки.Редактирование = Ложь;
Первый = ПланПодготовки.Добавить();
Первый.Начало = Дата(2026, 9, 14, 9);
Первый.Конец = Дата(2026, 9, 14, 12);
Первый.Текст = "Подготовка: 3 часа";
Первый.Расшифровка = "training-prepare-plan";
ПланСборки = График.ПолучитьЗначение(Сборка, План);
ПланСборки.Текст = "План сборки";
ПланСборки.Редактирование = Ложь;
Второй = ПланСборки.Добавить();
Второй.Начало = Дата(2026, 9, 14, 13);
Второй.Конец = Дата(2026, 9, 15, 11);
Второй.Текст = "Сборка учебного комплекта";
Второй.Расшифровка = "training-assemble-plan";
ФактПодготовки = График.ПолучитьЗначение(Подготовка, Факт);
ФактПодготовки.Редактирование = Ложь;
Фактический = ФактПодготовки.Добавить();
Фактический.Начало = Дата(2026, 9, 14, 9);
Фактический.Конец = Дата(2026, 9, 14, 13);
Фактический.Текст = "Учебный факт: 4 часа";
Заголовок = График.ОбластьЗаголовка;
Заголовок.Текст = "Учебный план и факт — 14–16.09.2026";
Область = График.ОбластьПостроения;
Область.Заголовок = "Учебные задачи";
Область.ОтображатьТекстТочек = ОтображениеВДиаграммеГанта.Отображать;
Шкала = Область.ШкалаВремени;
Пока Шкала.Элементы.Количество() > 0 Цикл
Шкала.Элементы.Удалить(Шкала.Элементы.Получить(0));
КонецЦикла;
Дни = Шкала.Элементы.Добавить();
Дни.Единица = ТипЕдиницыШкалыВремени.День;
Дни.Кратность = 1;
Дни.Формат = "ДФ=dd.MM";
График.Обновление = Истина;
ЭтаФорма.УчебныйГрафик = График;
Поле = Элементы.Добавить("ПолеГанта", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеДиаграммыГанта;
Поле.ПутьКДанным = "УчебныйГрафик";
Поле.РастягиватьПоГоризонтали = Истина;
Поле.РастягиватьПоВертикали = Истина;
Поле.ПоложениеТаблицы = ПоложениеТаблицыДиаграммыГанта.Лево;
Поле.ВертикальныеЛинии = Истина;
Поле.ГоризонтальныеЛинии = Истина;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить учебный график";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.ПолеГанта;
Сообщить(Поле.ПоложениеТаблицы = ПоложениеТаблицыДиаграммыГанта.Лево);
Сообщить(Поле.ГоризонтальныеЛинии = Истина);
Поле.ВертикальныеЛинии = Не Поле.ВертикальныеЛинии;
Сообщить("ВертикальныеЛинии после переключения: " + Строка(Поле.ВертикальныеЛинии));
КонецПроцедуры
Разбор по шагам
ПоложениеТаблицы задаём у элемента формы, а не у значения ДиаграммаГанта.
Оба свойства линий принимают Булево либо Неопределено. Начальное значение здесь Истина, поэтому операция Не безопасно получает Булево.
В установленной справке описания ВертикальныеЛинии и ГоризонтальныеЛинии говорят о противоположных направлениях. Не выдаём догадку по имени свойства за проверенное поведение.
По нажатию кнопки меняем только ВертикальныеЛинии, оставляя второе свойство включённым. Осматриваем, какие линии реально изменились.
Повторное нажатие возвращает исходный флаг. Сторона таблицы и даты полос не меняются.
Как проверить результат
При каждом нажатии ожидаются два Истина. Первое нажатие выводит флаг Ложь, второе — Истина.
Осмотрите таблицу слева и изменение сетки между нажатиями. Для сравнения стороны смените Лево на Право в серверном коде и заново откройте EPF.
Ожидаемый результат
Получен безопасный интерактивный опыт с явным разделением проверенного значения и непроверенного направления линий.
На что обратить внимание
Имена свойств не заменяют проверку направления линий в вашем клиенте; установленное описание содержит неоднозначность.
Неопределено — отдельный режим по умолчанию, а не автоматически Ложь.
Включение линий не добавляет интервалы и не изменяет таблицу данных.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.