Очистить только отдельную пустую учебную панель

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

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

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

Полный модуль собственной обычной формы. Только толстый клиент с обычными формами. Действие кнопки — экспортная процедура с первым параметром Элемент.

Подготовка

  1. Создайте отдельную внешнюю обработку с обычной формой. Запускайте толстым клиентом в режиме обычных форм, не в рабочей конфигурации.

  2. Создайте отдельную ПУСТУЮ вложенную панель УчебнаяПанель без любых элементов внутри неё. Не используйте панель с надписями из остальных уроков.

  3. Кнопку УчебнаяКоманда разместите ВНЕ этой пустой панели. В редакторе включите распределение по страницам.

  4. Событие ПриОткрытии формы свяжите с процедурой ПриОткрытии. Нажатие кнопки вручную не назначайте: оно связывается с процедурой ВыполнитьУчебнуюКоманду через Действие.

  5. Каждый урок заменяет полный модуль отдельной копии формы. Страницы принадлежат только этой форме; документы и настройки базы не изменяются.

Процедура ПриОткрытии()
    Панель = ЭтаФорма.ЭлементыФормы.УчебнаяПанель;
    Панель.Страницы.Добавить("УчебнаяДляОчистки", "Удалится при очистке");
    Сообщить(Панель.Страницы.Количество());
    Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
    Кнопка.Заголовок = "Выполнить учебную проверку";
    Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебнуюКоманду"));
КонецПроцедуры

Процедура ВыполнитьУчебнуюКоманду(Элемент) Экспорт
    Панель = ЭтаФорма.ЭлементыФормы.УчебнаяПанель;
    Страницы = Панель.Страницы;
    Страницы.Очистить();
    Сообщить(Страницы.Количество() = 1);
    НоваяСтраница = Страницы.Получить(0);
    НоваяСтраница.Имя = "УчебнаяПослеОчистки";
    НоваяСтраница.Заголовок = "Новая пустая страница";
    НоваяСтраница.Видимость = Истина;
    НоваяСтраница.Доступность = Истина;
    Панель.ТекущаяСтраница = НоваяСтраница;
    Сообщить(Страницы.Найти("УчебнаяДляОчистки") = Неопределено);
    Сообщить(Страницы.Найти("УчебнаяПослеОчистки") = НоваяСтраница);
КонецПроцедуры

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

  1. Урок использует другую пустую вложенную панель, а не панель с надписями из первых пяти уроков.

  2. До очистки добавляется своя пустая страница. После очистки остаётся одна новая страница, что прямо проверяется.

  3. Получить(0) вызывается уже после очистки. Старые страницы не сохраняются в переменных и не используются.

  4. Новая страница получает собственное имя, заголовок и становится текущей. Кнопка вне очищаемой панели остаётся.

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

  1. При открытии выводится исходное количество плюс 1; после нажатия три Истина.

  2. Повторное нажатие также оставляет одну новую пустую страницу и работающую внешнюю кнопку.

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

Показано особое поведение Очистить: одна новая пустая страница, а не пустая коллекция.

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

  1. Очистка панели с элементами управления удалит их; этот код предназначен только пустой учебной панели.

  2. Не очищайте главную панель или рабочую форму.

  3. Операция меняет интерфейс текущей копии, а не метаданные сохранённой обработки.

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

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

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

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

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