НастройкиИнтерфейсаКлиентскогоПриложения.По умолчанию

Конструкторы

Синтаксис и применение НастройкиИнтерфейсаКлиентскогоПриложения.По умолчанию в платформе 1С:Предприятие. Описание и примеры кода.

Синтаксис

Новый НастройкиИнтерфейсаКлиентскогоПриложения
Полное описание, параметры и ограничения

НастройкиИнтерфейсаКлиентскогоПриложения.По умолчанию

НастройкиИнтерфейсаКлиентскогоПриложения (ClientApplicationInterfaceSettings)

По умолчанию

Синтаксис:
Новый НастройкиИнтерфейсаКлиентскогоПриложения
Методическая информация

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

Временно применить учебный состав и восстановить исходный

Только в собственной учебной конфигурации сохраняем снимок, применяем новое размещение и обязательно пытаемся восстановить прежний состав. Сбой восстановления не скрывается.

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

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

Подготовка

  1. Используйте собственную учебную базу и отдельного учебного пользователя, не рабочее приложение. Типы настроек доступны на сервере и в толстом клиенте, не непосредственно в обработчике тонкого клиента.

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

  3. Чтение и конструирование черновика не сохраняют пользовательские настройки. Только последний урок намеренно вызывает УстановитьСостав; для него нужна собственная конфигурация с именем УчебнаяКонфигурацияСинтаксиса и возможность восстановить настройки учебного пользователя вручную.

  4. Имя метаданных собственной конфигурации задайте УчебнаяКонфигурацияСинтаксиса. Перед экспериментом зафиксируйте расположение панелей учебного пользователя вручную. Не используйте рабочую КА2/УНФ/УТ и не меняйте имя рабочей конфигурации ради прохождения проверки.

  5. УстановитьСостав изменяет пользовательские настройки: это не чистый расчёт. Пример не гарантирует восстановление при завершении процесса, отключении сервера или нехватке прав. Проверка имени — защита от случайного запуска, не доказательство отсутствия рабочих данных.

Процедура ВыполнитьПример() Экспорт
    Настройки = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
    Исходный = Настройки.ПолучитьСостав();
    ИсходнаяПодпись = ПодписьУчебногоСостава(Исходный);
    Сообщить("Исходный: " + ИсходнаяПодпись);
    Учебный = Новый НастройкиСоставаИнтерфейсаКлиентскогоПриложения;
    Учебный.Верх.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельРазделов"));
    Учебный.Лево.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельФункцийТекущегоРаздела"));
    Учебный.Низ.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИстории"));
    Учебный.Право.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИзбранного"));
    Учебный.Право.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельОткрытых"));
    ОшибкаПрименения = "";
    Попытка
        Настройки.УстановитьСостав(Учебный);
        Полученный = Настройки.ПолучитьСостав();
        Сообщить("После установки: " + ПодписьУчебногоСостава(Полученный));
        Сообщить(ПодписьУчебногоСостава(Полученный) = ПодписьУчебногоСостава(Учебный));
    Исключение
        ОшибкаПрименения = ОписаниеОшибки();
    КонецПопытки;
    Попытка
        Настройки.УстановитьСостав(Исходный);
    Исключение
        ВызватьИсключение "Исходные настройки НЕ восстановлены. Восстановите учебному пользователю вручную. Исходный: "
            + ИсходнаяПодпись + ". Ошибка применения: " + ОшибкаПрименения
            + ". Ошибка восстановления: " + ОписаниеОшибки();
    КонецПопытки;
    Восстановленный = Настройки.ПолучитьСостав();
    Если ПодписьУчебногоСостава(Восстановленный) <> ИсходнаяПодпись Тогда
        ВызватьИсключение "Повторное чтение состава не совпало с исходным снимком: " + ИсходнаяПодпись;
    КонецЕсли;
    Сообщить("Повторно прочитанный состав совпадает с исходным");
    Если Не ПустаяСтрока(ОшибкаПрименения) Тогда
        ВызватьИсключение "Учебное применение завершилось ошибкой; исходный состав восстановлен: " + ОшибкаПрименения;
    КонецЕсли;
КонецПроцедуры

Функция ПодписьУчебнойГруппы(Группа)
    Результат = "[";
    Для Каждого Элемент Из Группа Цикл
        Если ТипЗнч(Элемент) = Тип("ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения") Тогда
            Результат = Результат + Элемент.Имя + ";";
        ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения") Тогда
            Результат = Результат + ПодписьУчебнойГруппы(Элемент) + ";";
        Иначе
            ВызватьИсключение "Неизвестный тип элемента состава интерфейса";
        КонецЕсли;
    КонецЦикла;
    Возврат Результат + "]";
КонецФункции

Функция ПодписьУчебногоСостава(Состав)
    Возврат "Верх=" + ПодписьУчебнойГруппы(Состав.Верх)
        + " Лево=" + ПодписьУчебнойГруппы(Состав.Лево)
        + " Низ=" + ПодписьУчебнойГруппы(Состав.Низ)
        + " Право=" + ПодписьУчебнойГруппы(Состав.Право);
КонецФункции

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

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

  2. УстановитьСостав проверяет имена панелей, уникальность размещения и отсутствие групп внутри групп. Неподдерживаемые настройки могут вызвать исключение.

  3. Сразу после эксперимента пытаемся установить исходный снимок — как при успехе, так и после ошибки применения. Восстановление не зависит от того, успешно ли прочитан новый состав.

  4. Если восстановление не удалось, выбрасываем явную ошибку с исходной подписью, а не сообщаем, что всё осталось прежним.

  5. После успешного восстановления повторно читаем состав и сравниваем структуру/порядок панелей. Совпадение описания ещё не доказывает отображение окна: визуально проверьте учебный клиент.

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

  1. В поддерживаемом режиме временно прочитанный состав должен совпасть с учебным; в конце повторно прочитанный состав совпадает с исходным.

  2. Если установка отклонена, код всё равно пытается восстановить исходный состав и сообщает исходную ошибку. При ошибке восстановления не продолжайте эксперимент; восстановите настройки учебного пользователя вручную.

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

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

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

  1. Не запускайте урок для рабочего пользователя. Это сохранение пользовательских настроек, а не изменение только переменной.

  2. Потеря процесса между установкой и восстановлением обходит обработчики BSL; исходная подпись и собственная учебная база обязательны.

  3. Не вызывайте УстановитьСостав без аргумента вместо восстановления сохранённого снимка: это другой смысл операции.

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

Прочитать текущий состав панелей без изменения интерфейса

Показываем четыре стороны и вложенные группы панелей, сохраняя их порядок в читаемой диагностической подписи.

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

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

Подготовка

  1. Используйте собственную учебную базу и отдельного учебного пользователя, не рабочее приложение. Типы настроек доступны на сервере и в толстом клиенте, не непосредственно в обработчике тонкого клиента.

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

  3. Чтение и конструирование черновика не сохраняют пользовательские настройки. Только последний урок намеренно вызывает УстановитьСостав; для него нужна собственная конфигурация с именем УчебнаяКонфигурацияСинтаксиса и возможность восстановить настройки учебного пользователя вручную.

Процедура ВыполнитьПример() Экспорт
    Настройки = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
    Состав = Настройки.ПолучитьСостав();
    Сообщить(ПодписьУчебногоСостава(Состав));
    Сообщить("Количество верхних элементов: " + Строка(Состав.Верх.Количество()));
    Сообщить("Количество левых элементов: " + Строка(Состав.Лево.Количество()));
    Сообщить("Количество нижних элементов: " + Строка(Состав.Низ.Количество()));
    Сообщить("Количество правых элементов: " + Строка(Состав.Право.Количество()));
КонецПроцедуры

Функция ПодписьУчебнойГруппы(Группа)
    Результат = "[";
    Для Каждого Элемент Из Группа Цикл
        Если ТипЗнч(Элемент) = Тип("ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения") Тогда
            Результат = Результат + Элемент.Имя + ";";
        ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения") Тогда
            Результат = Результат + ПодписьУчебнойГруппы(Элемент) + ";";
        Иначе
            ВызватьИсключение "Неизвестный тип элемента состава интерфейса";
        КонецЕсли;
    КонецЦикла;
    Возврат Результат + "]";
КонецФункции

Функция ПодписьУчебногоСостава(Состав)
    Возврат "Верх=" + ПодписьУчебнойГруппы(Состав.Верх)
        + " Лево=" + ПодписьУчебнойГруппы(Состав.Лево)
        + " Низ=" + ПодписьУчебнойГруппы(Состав.Низ)
        + " Право=" + ПодписьУчебнойГруппы(Состав.Право);
КонецФункции

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

  1. Новый НастройкиИнтерфейсаКлиентскогоПриложения даёт доступ к составу панелей приложения. ПолучитьСостав учитывает заданные в конфигураторе панели и пользовательские изменения.

  2. Верх, Лево, Низ, Право — доступные только для чтения ссылки на коллекции. Не присваиваем новое значение этим свойствам.

  3. Элемент коллекции может быть панелью либо группой. Проверка ТипЗнч позволяет прочитать Имя только у панели; у группы рекурсивно обходим её элементы.

  4. Квадратные скобки и точки с запятой — собственная диагностическая запись дерева, не формат хранения платформы. Число элементов стороны не всегда равно числу панелей: группа занимает один элемент.

  5. Получение состава на сервере не является визуальной проверкой окна каждого клиента. Фактическая поддержка панелей зависит от режима приложения и интерфейса.

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

  1. Сверьте четыре стороны и порядок панелей с настройками текущего учебного пользователя; пустая сторона нормально выводится как [].

  2. Состав пользовательских настроек остался прежним: УстановитьСостав не вызывается.

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

Получен читаемый снимок структуры панелей с корректным различением панели и группы.

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

  1. Не читайте Имя у группы: это свойство элемента-панели.

  2. Не приравнивайте Количество() группы к числу открытых форм или работающих пользователей.

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

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

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

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

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