УсловноеОформлениеКомпоновкиДанных.РежимОтображения

Свойства · ViewMode

Тип: РежимОтображенияЭлементаНастройкиКомпоновкиДанных. Определяет режим отображения. Используется при отображении списка в зависимости от режима отображения табличного поля (см. соответствующие свойства у расширений табличного поля отбора и пользовательских настроек).

Полное описание, параметры и ограничения

УсловноеОформлениеКомпоновкиДанных.РежимОтображения (DataCompositionConditionalAppearance.ViewMode)

УсловноеОформлениеКомпоновкиДанных (DataCompositionConditionalAppearance)

РежимОтображения (ViewMode)

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

Использование:
Чтение и запись.
Описание:
Тип: РежимОтображенияЭлементаНастройкиКомпоновкиДанных.
Определяет режим отображения.
Используется при отображении списка в зависимости от режима отображения табличного поля (см. соответствующие свойства у расширений табличного поля отбора и пользовательских настроек).
Доступность:

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

См. также:
ОтборКомпоновкиДанных, свойство ИдентификаторПользовательскойНастройки

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

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

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

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

Пользовательское условное оформление: включить и выключить подсветку суммы

Правило Сумма>100 оформляет только ячейку Сумма. Проверяем числовые строки настоящего табличного документа и его ЦветФона: Книга подсвечена, Ручка нет; пользовательское выключение/включение должно изменить реальный фон.

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

Полный серверный общий модуль нового собственного стенда УчебныеПользовательскиеРазделы85; каждый урок запускается отдельно.

Подготовка

  1. Создать НОВУЮ отдельную пустую учебную базу, не рабочую и не ее копию: точно8.5.1.1343, конфигурация УчебныеПользовательскиеРазделы85, совместимость Не использовать. Без бизнес-объектов, регистров, подписок, заданий и расширений.

  2. Конфигуратор → Общие → Общие модули → УчебныеПользовательскиеРазделы85: Сервер=Да, Вызов сервера=Да, Клиент=Нет, Глобальный=Нет, Привилегированный=Нет. Вставить ВЕСЬ код одного выбранного урока; одноименные ВыполнитьПример из разных уроков не смешивать.

  3. Конфигуратор → Обработки → УчебныеПользовательскиеРазделы85 → Формы → Пульт: управляемая форма; команда Выполнить, кнопка с этой командой и действие команды Выполнить. Реквизиты не нужны; полный модуль формы дан отдельно ниже.

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

  5. Схема и данные целиком создаются кодом: Local-запрос Книга3×250=750 / Ручка1×50=50, четыре выбранных поля и одна группа деталей. Документы и регистры не нужны.

  6. Редактор обязательно связывается с настоящим источником доступных настроек и загружает подготовленные основные настройки. Пользовательский объект действительно ищется по своему ID и проверяется по точному типу.

  7. Проверки используют свежий настоящий вывод для каждого состояния. XML-снимки только в памяти сохраняют целиком схему и основные настройки; файлов, архивов и резервных копий нет.

  8. runtimeVerifiedScenarios=0. Сверка установленной справки и статические проверки не равны запуску1С. Настоящий UI редактора, долговременное сохранение, сеть, печать и production здесь не выполнялись.

Функция ВыполнитьПример() Экспорт
    ПроверитьСвойПустойСтенд();
    Схема = Новый СхемаКомпоновкиДанных;
    ЗаполнитьСвоиДанные(Схема);
    ЗаполнитьСвоиНачальныеНастройки(Схема.НастройкиПоУмолчанию);
    Основные = Схема.НастройкиПоУмолчанию.УсловноеОформление;
    Основные.ИдентификаторПользовательскойНастройки = "ПодсветкаТоваров85";
    Основные.ПредставлениеПользовательскойНастройки = "Подсветка крупных сумм";
    Основные.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
    Правило = Основные.Элементы.Добавить();
    Правило.Использование = Истина;
    Правило.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто;
    Правило.ИдентификаторПользовательскойНастройки = "";
    Условие = Правило.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сумма");
    Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    Условие.ПравоеЗначение = 100;
    Условие.Использование = Истина;
    Оформляемое = Правило.Поля.Элементы.Добавить();
    Оформляемое.Поле = Новый ПолеКомпоновкиДанных("Сумма");
    Оформляемое.Использование = Истина;
    Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(16, 180, 220));
    ТекстСхемы = СвойОбъектРасшифровкиВСтроку(Схема);
    Редактор = СоздатьСвойРедактор(Схема);
    ТекущееОформление = Редактор.Настройки.УсловноеОформление;
    Если ТекущееОформление.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Сумма")) = Неопределено
        Или ТекущееОформление.ДоступныеПоляПолей.НайтиПоле(Новый ПолеКомпоновкиДанных("Сумма")) = Неопределено Тогда
        ВызватьИсключение "Своя сумма должна быть доступна и для условия, и для оформляемого поля";
    КонецЕсли;
    Если ТекущееОформление.Элементы.Количество() <> 1 Тогда
        ВызватьИсключение "В своем основном оформлении только одно реальное правило";
    КонецЕсли;
    ТекущееПравило = ТекущееОформление.Элементы.Получить(0);
    Если ТекущееПравило.Поля.ДоступныеПоляОформляемыхПолей.НайтиПоле(Новый ПолеКомпоновкиДанных("Сумма")) = Неопределено Тогда
        ВызватьИсключение "Источник должен разрешить Сумма именно в собственном наборе оформляемых полей правила";
    КонецЕсли;
    Пользовательский = ПолучитьСвойПользовательскийРаздел(Редактор, "ПодсветкаТоваров85", Тип("УсловноеОформлениеКомпоновкиДанных"));
    Если Пользовательский.Элементы.Количество() <> 1 Тогда
        ВызватьИсключение "В своем пользовательском оформлении одно действительное правило";
    КонецЕсли;
    ПользовательскоеПравило = Пользовательский.Элементы.Получить(0);
    Если ТипЗнч(ПользовательскоеПравило) <> Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
        ВызватьИсключение "Пользователь должен получить настоящее собственное правило";
    КонецЕсли;
    ТекстОсновных = СвойОбъектРасшифровкиВСтроку(Редактор.Настройки);
    ПроверитьСвоюПодсветку(Схема, Редактор.ПолучитьНастройки(), Истина);
    ПользовательскоеПравило.Использование = Ложь;
    ПроверитьСвоюПодсветку(Схема, Редактор.ПолучитьНастройки(), Ложь);
    ПользовательскоеПравило.Использование = Истина;
    ПроверитьСвоюПодсветку(Схема, Редактор.ПолучитьНастройки(), Истина);
    Если СвойОбъектРасшифровкиВСтроку(Редактор.Настройки) <> ТекстОсновных
        Или СвойОбъектРасшифровкиВСтроку(Схема) <> ТекстСхемы
        Или ТекущееОформление.ПредставлениеПользовательскойНастройки <> "Подсветка крупных сумм"
        Или ТекущееОформление.РежимОтображения <> РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный Тогда
        ВызватьИсключение "Пользователь выключает только свое правило, сохраняя основные настройки и схему";
    КонецЕсли;
    Возврат ТекущееОформление.ПредставлениеПользовательскойНастройки + ": фон Книги16/180/220 → выключен → восстановлен; Ручка не подсвечена";
КонецФункции

Процедура ПроверитьСвойПустойСтенд()
    Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
    КонецЕсли;
    Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
        ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
    КонецЕсли;
    Источники = Новый Массив;
    Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
    Для Каждого Источник Из Источники Цикл
        Расширения = РасширенияКонфигурации.Получить(, Источник);
        Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
            ВызватьИсключение "Native список расширений должен иметь тип Массив";
        КонецЕсли;
        Если Расширения.Количество() <> 0 Тогда
            ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
        КонецЕсли;
    КонецЦикла;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
    КонецЕсли;
КонецПроцедуры

Процедура ЗаполнитьСвоиДанные(Схема)
    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "УчебныйИсточник";
    Источник.ТипИсточникаДанных = "Local";
    Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    Набор.Имя = "УчебныеТовары";
    Набор.ИсточникДанных = Источник.Имя;
    Набор.АвтоЗаполнениеДоступныхПолей = Истина;
    Набор.Запрос = "ВЫБРАТЬ
    |    ""Книга"" КАК Наименование,
    |    3 КАК Количество,
    |    250 КАК Цена,
    |    750 КАК Сумма
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ ""Ручка"", 1, 50, 50";
КонецПроцедуры

Процедура ЗаполнитьСвоиНачальныеНастройки(Настройки)
    Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
        Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
        Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
        Выбранное.Использование = Истина;
    КонецЦикла;
    Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Детали.Использование = Истина;
    АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоВыбор.Использование = Истина;
КонецПроцедуры

Функция СоздатьСвойРедактор(Схема)
    Редактор = Новый КомпоновщикНастроекКомпоновкиДанных;
    Редактор.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
    Редактор.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
    Возврат Редактор;
КонецФункции

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

Функция СвойОбъектРасшифровкиВСтроку(Объект)
    Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(Запись, Объект);
    Возврат Запись.Закрыть();
КонецФункции

Процедура ПроверитьСвоюПодсветку(Схема, Настройки, Включена)
    Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = Компоновщик.Выполнить(Схема, Настройки);
    Документ = ПолучитьСвойПроверенныйДокумент(Макет, "");
    КолонкаСуммы = 0;
    КолонкаТовара = 0;
    Для НомерСтроки = 1 По Документ.ВысотаТаблицы Цикл
        Для НомерКолонки = 1 По Документ.ШиринаТаблицы Цикл
            Текст = СокрЛП(Документ.Область(НомерСтроки, НомерКолонки).Текст);
            Если Текст = "Сумма" Тогда
                КолонкаСуммы = НомерКолонки;
            ИначеЕсли Текст = "Наименование" Тогда
                КолонкаТовара = НомерКолонки;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    Если КолонкаСуммы = 0 Или КолонкаТовара = 0 Тогда
        ВызватьИсключение "Нужны реальные колонки собственного проверенного отчета";
    КонецЕсли;
    Для НомерСтроки = 1 По Документ.ВысотаТаблицы Цикл
        Товар = СокрЛП(Документ.Область(НомерСтроки, КолонкаТовара).Текст);
        Если Товар = "Книга" Или Товар = "Ручка" Тогда
            Фон = Документ.Область(НомерСтроки, КолонкаСуммы).ЦветФона;
            ЕстьПодсветка = Фон.Красный = 16 И Фон.Зеленый = 180 И Фон.Синий = 220;
            Если Товар = "Книга" И ЕстьПодсветка <> Включена Тогда
                ВызватьИсключение "Реальная ячейка Сумма Книги должна следовать пользовательскому флагу правила";
            ИначеЕсли Товар = "Ручка" И ЕстьПодсветка Тогда
                ВызватьИсключение "Сумма50 не проходит условие больше100: Ручка не должна подсвечиваться";
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Функция ПолучитьСвойПроверенныйДокумент(Макет, Заголовок)
    Копия = СвойОбъектРасшифровкиИзСтроки(СвойОбъектРасшифровкиВСтроку(Макет), Тип("МакетКомпоновкиДанных"));
    Документ = СформироватьСвойДокумент(Копия);
    Если Документ.ВысотаТаблицы = 0 Или Документ.ВысотаТаблицы > 200
        Или Документ.ШиринаТаблицы = 0 Или Документ.ШиринаТаблицы > 100 Тогда
        ВызватьИсключение "Ожидается только собственный небольшой табличный отчет";
    КонецЕсли;
    Колонки = Новый Соответствие;
    СтрокаЗаголовков = 0;
    ЗаголовокНайден = Заголовок = "";
    Для НомерСтроки = 1 По Документ.ВысотаТаблицы Цикл
        Кандидат = Новый Соответствие;
        Для НомерКолонки = 1 По Документ.ШиринаТаблицы Цикл
            Текст = СокрЛП(Документ.Область(НомерСтроки, НомерКолонки).Текст);
            Если Заголовок <> "" И Текст = Заголовок Тогда
                ЗаголовокНайден = Истина;
            КонецЕсли;
            Если Текст = "Наименование" Или Текст = "Количество" Или Текст = "Цена" Или Текст = "Сумма" Тогда
                Если Кандидат.Получить(Текст) <> Неопределено Тогда
                    ВызватьИсключение "В собственной строке заголовков не должно быть дублей поля";
                КонецЕсли;
                Кандидат.Вставить(Текст, НомерКолонки);
            КонецЕсли;
        КонецЦикла;
        Если Кандидат.Количество() = 4 Тогда
            Если СтрокаЗаголовков <> 0 Тогда
                ВызватьИсключение "В этом собственном опыте только одна четырехпольная таблица";
            КонецЕсли;
            СтрокаЗаголовков = НомерСтроки;
            Колонки = Кандидат;
        КонецЕсли;
    КонецЦикла;
    Если СтрокаЗаголовков = 0 Или Не ЗаголовокНайден Тогда
        ВызватьИсключение "Не найдены настоящий заголовок и все четыре заголовка полей";
    КонецЕсли;
    Книга = Ложь;
    Ручка = Ложь;
    ИтогКоличество = 0;
    ИтогСумма = 0;
    Для НомерСтроки = СтрокаЗаголовков + 1 По Документ.ВысотаТаблицы Цикл
        Наименование = СокрЛП(Документ.Область(НомерСтроки, Колонки.Получить("Наименование")).Текст);
        Количество = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, Колонки.Получить("Количество")));
        Цена = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, Колонки.Получить("Цена")));
        Сумма = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, Колонки.Получить("Сумма")));
        Если Наименование <> "Книга" И Наименование <> "Ручка"
            И (Количество <> Неопределено Или Цена <> Неопределено Или Сумма <> Неопределено) Тогда
            ВызватьИсключение "В собственном отчете без итоговых строк не должно быть посторонних числовых строк";
        КонецЕсли;
        Если Наименование = "Книга" Или Наименование = "Ручка" Тогда
            Если Количество = Неопределено Или Цена = Неопределено Или Сумма = Неопределено Тогда
                ВызватьИсключение "В реальной строке товара должны находиться три настоящих числа";
            КонецЕсли;
            Если Наименование = "Книга" Тогда
                Если Книга Или Количество <> 3 Или Цена <> 250 Или Сумма <> 750 Тогда
                    ВызватьИсключение "Книга должна выводиться ровно один раз: 3, 250, 750";
                КонецЕсли;
                Книга = Истина;
            Иначе
                Если Ручка Или Количество <> 1 Или Цена <> 50 Или Сумма <> 50 Тогда
                    ВызватьИсключение "Ручка должна выводиться ровно один раз: 1, 50, 50";
                КонецЕсли;
                Ручка = Истина;
            КонецЕсли;
            ИтогКоличество = ИтогКоличество + Количество;
            ИтогСумма = ИтогСумма + Сумма;
        КонецЕсли;
    КонецЦикла;
    Если Не Книга Или Не Ручка Или ИтогКоличество <> 4 Или ИтогСумма <> 800 Тогда
        ВызватьИсключение "Настоящие строки должны сохранить количество4 и сумму800";
    КонецЕсли;
    Возврат Документ;
КонецФункции

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


Функция ПрочитатьСвоеЧисло(Ячейка)
    Если Ячейка.СодержитЗначение Тогда
        Значение = Ячейка.Значение;
        Если ТипЗнч(Значение) = Тип("Число") Тогда
            Возврат Значение;
        КонецЕсли;
        Возврат Неопределено;
    КонецЕсли;
    Текст = СтрЗаменить(СтрЗаменить(СокрЛП(Ячейка.Текст), Символ(160), ""), " ", "");
    Если Текст = "" Тогда
        Возврат Неопределено;
    КонецЕсли;
    ЕстьЦифра = Ложь;
    Для Позиция = 1 По СтрДлина(Текст) Цикл
        Знак = Сред(Текст, Позиция, 1);
        Если СтрНайти("0123456789", Знак) > 0 Тогда
            ЕстьЦифра = Истина;
        ИначеЕсли СтрНайти(",.-", Знак) = 0 Тогда
            Возврат Неопределено;
        КонецЕсли;
    КонецЦикла;
    Если Не ЕстьЦифра Тогда
        Возврат Неопределено;
    КонецЕсли;
    Возврат Число(Текст);
КонецФункции

Функция СвойОбъектРасшифровкиИзСтроки(СтрокаXML, ТребуемыйТип)
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(СтрокаXML);
    Попытка
        Объект = СериализаторXDTO.ПрочитатьXML(Чтение, ТребуемыйТип);
    Исключение
        Чтение.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
    Чтение.Закрыть();
    Если ТипЗнч(Объект) <> ТребуемыйТип Тогда
        ВызватьИсключение "Нужен полный собственный типизированный объект, не кусок ссылок";
    КонецЕсли;
    Возврат Объект;
КонецФункции
УчебныеПользовательскиеРазделы85.Пульт

УчебныеПользовательскиеРазделы85 → Обработки → УчебныеПользовательскиеРазделы85 → Формы → Пульт → Модуль

Полный модуль собственной управляемой формы; здесь не выполнялся.

&НаКлиенте
Процедура Выполнить(Команда)
    Сообщить(ВыполнитьНаСервере());
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВыполнитьНаСервере()
    Возврат УчебныеПользовательскиеРазделы85.ВыполнитьПример();
КонецФункции

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

  1. В свой основной УсловноеОформление добавить действительное правило: условие Сумма>100, одно оформляемое поле Сумма, абсолютный ЦветФона16/180/220. Нет правил для всей строки или чужих областей.

  2. У всего раздела назначить пользовательский ID, представление и Обычный режим; у правила отдельный ID пустой, режим Авто, Использование=Истина.

  3. После source-инициализации проверить Сумма через оба набора доступных полей раздела — для отбора и для оформления. Дополнительно найти ее в ТекущееПравило.Поля.ДоступныеПоляОформляемыхПолей.

  4. Найти действительный пользовательский раздел УсловноеОформлениеКомпоновкиДанных и его правило. У user-правила менять только разрешенный Использование; недоступные Поля, Отбор и Представление не читать.

  5. Сформировать настоящий табличный документ. Найти колонки по реальным заголовкам, проверить все шесть числовых ячеек и прочитать ЦветФона суммы каждой строки.

  6. При включенном правиле Книга750 имеет RGB16/180/220, Ручка50 не имеет этого цвета. Выключить пользовательское правило: цвет Книги должен исчезнуть. Включить: цвет восстановится.

  7. Полный XML основных настроек и исходной схемы сохраняется. Цвет читается из результата, не присваивается ячейке контрольным кодом. Это будущая BSL-проверка, а не выполненный визуальный тест1С.

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

  1. Будущий результат должен пройти все встроенные проверки реальных строк/чисел и конкретного пользовательского изменения. Каталог настроек, строковый ID и флаг сами по себе не доказывают изменение отчета.

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

  3. Полный XML исходной схемы и основных настроек должен совпасть с первоначальным. Пользовательское изменение действует в эффективной копии ПолучитьНастройки, не заменяет исходный основной раздел.

  4. Отрицательный контроль будущего отдельного опыта: изменить в буквальном запросе только количество Книги3→30 при прежней сумме750. Проверка реальной ячейки должна отказать, несмотря на прежние названия и сумму.

  5. runtimeVerifiedScenarios=0. Все проверки в BSL — будущие условия приемки собственного учебного запуска; реальный запуск здесь не выполнялся.

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

Полный код проверяет три состояния собственного пользовательского раздела, действительный результат и сохранность исходной схемы. Здесь в1С не запускался.

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

  1. ПредставлениеПользовательскойНастройки недоступно у user-объекта: читается только у основных настроек. РежимОтображения описывает поведение редактора, но настоящий интерфейс здесь не проверялся.

  2. Строковый пользовательский ID и ИдентификаторКомпоновкиДанных для обратного поиска элемента — разные типы и разные задачи. ID берется у фактического владельца, не создается числом или строкой вручную.

  3. ДоступныеПоля — readonly набор текущего источника. Проверяется настоящий путь через НайтиПоле; нельзя заменить набор новой коллекцией или молча продолжить при Неопределено.

  4. После повторной ЗагрузитьНастройки пользовательский состав пересоздается. Эти уроки загружают его один раз и не держат ссылки через последующие перезагрузки.

  5. Поля и Отбор user-правила условного оформления недоступны: в своем пользовательском правиле меняется только разрешенный флаг Использование. Исходное правило целиком сохраняется в основных настройках.

  6. Сложные подгруппы, разные наборы, фиксированные настройки и спорные native-примечания требуют самостоятельной задачи. Здесь опыт ограничен собственной двухстрочной схемой и проверяемым действием, без универсальных обещаний.

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

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

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

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

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