ГруппаВыбранныхПолейКомпоновкиДанных.Расположение

Свойства · Placement

Тип: РасположениеПоляКомпоновкиДанных. Указывает, каким образом располагать поля группы.

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

ГруппаВыбранныхПолейКомпоновкиДанных.Расположение (DataCompositionSelectedFieldGroup.Placement)

ГруппаВыбранныхПолейКомпоновкиДанных (DataCompositionSelectedFieldGroup)

Расположение (Placement)

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

Использование:
Чтение и запись.
Описание:
Тип: РасположениеПоляКомпоновкиДанных.
Указывает, каким образом располагать поля группы.
Доступность:

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

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

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

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

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

Группа выбранных полей: заголовок по полю и расположение реальных ячеек

Создаем папку Цена/Сумма, связанную с доступным полем Количество. Его default-заголовок отличаем от отдельно переименованной колонки Штук. Пользователь меняет горизонтальное расположение на вертикальное и возвращает назад; проверяем фактические координаты250/750 и числа обеих записей.

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

Полный серверный общий модуль собственного нового стенда УчебныеГруппыНастроек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. В опыте выбранных полей используется стандартный генератор табличного документа. Проверка координат рассчитана только на эту собственную маленькую таблицу без ресурсов, итоговых строк, других групп и макетов оформления.

  8. runtimeVerifiedScenarios=0. Выполнены только статические проверки установленной справки и HTML. XML хранится строками памяти: файлов, архивов, резервных копий, сети, печати и production здесь нет.

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

Процедура ПроверитьСвойПустойСтенд()
    Если Метаданные.Справочники.Количество() <> 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(Запись, Объект);
    Возврат Запись.Закрыть();
КонецФункции

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

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

Процедура ПроверитьСвоиЧислаПапки(Документ, ПерваяСтрока, ПоследняяСтрока, ЭтоКнига, Вертикально)
    ЕстьКоличество = Ложь;
    СтрокаЦены = 0;
    КолонкаЦены = 0;
    СтрокаСуммы = 0;
    КолонкаСуммы = 0;
    ЧиселПятьдесят = 0;
    Для НомерСтроки = ПерваяСтрока По ПоследняяСтрока Цикл
        Для НомерКолонки = 1 По Документ.ШиринаТаблицы Цикл
            ЧислоЯчейки = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, НомерКолонки));
            Если ЧислоЯчейки = Неопределено Тогда
                Продолжить;
            КонецЕсли;
            Если ЭтоКнига Тогда
                Если ЧислоЯчейки = 3 Тогда
                    ЕстьКоличество = Истина;
                ИначеЕсли ЧислоЯчейки = 250 Тогда
                    Если СтрокаЦены <> 0 Тогда
                        ВызватьИсключение "В собственной записи Книги цена250 должна выводиться одной реальной ячейкой";
                    КонецЕсли;
                    СтрокаЦены = НомерСтроки;
                    КолонкаЦены = НомерКолонки;
                ИначеЕсли ЧислоЯчейки = 750 Тогда
                    Если СтрокаСуммы <> 0 Тогда
                        ВызватьИсключение "В собственной записи Книги сумма750 должна выводиться одной реальной ячейкой";
                    КонецЕсли;
                    СтрокаСуммы = НомерСтроки;
                    КолонкаСуммы = НомерКолонки;
                Иначе
                    ВызватьИсключение "В своей записи Книги только реальные числа3/250/750";
                КонецЕсли;
            Иначе
                Если ЧислоЯчейки = 1 Тогда
                    ЕстьКоличество = Истина;
                ИначеЕсли ЧислоЯчейки = 50 Тогда
                    ЧиселПятьдесят = ЧиселПятьдесят + 1;
                Иначе
                    ВызватьИсключение "В своей записи Ручки только реальные числа1/50/50";
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    Если Не ЕстьКоличество Тогда
        ВызватьИсключение "В каждой реальной записи нужно ее собственное количество";
    КонецЕсли;
    Если ЭтоКнига Тогда
        Если СтрокаЦены = 0 Или СтрокаСуммы = 0 Тогда
            ВызватьИсключение "Нужны обе настоящие ячейки250 и750";
        КонецЕсли;
        Если Вертикально Тогда
            Если СтрокаЦены = СтрокаСуммы Или КолонкаЦены <> КолонкаСуммы Тогда
                ВызватьИсключение "Вертикальная папка должна расположить свои цену и сумму в разных строках одной колонки";
            КонецЕсли;
        ИначеЕсли СтрокаЦены <> СтрокаСуммы Или КолонкаЦены = КолонкаСуммы Тогда
            ВызватьИсключение "Горизонтальная папка должна расположить свои цену и сумму в разных колонках одной строки";
        КонецЕсли;
    ИначеЕсли ЧиселПятьдесят <> 2 Тогда
        ВызватьИсключение "В записи Ручки должны быть две разные реальные ячейки50: цена и сумма";
    КонецЕсли;
КонецПроцедуры

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


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

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

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

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

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

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

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

  1. Очистить только свой исходный выбор в еще не связанной схеме. Добавить Наименование и Количество; у количественного поля явно задать заголовок Штук. Затем создать одну настоящую ГруппаВыбранныхПолейКомпоновкиДанных с двумя дочерними полями Цена и Сумма.

  2. У папки Поле=ПолеКомпоновкиДанных("Количество"), Заголовок="", Использование=Истина, горизонтальное расположение и режим Авто. Поле папки связано с реальным доступным полем, чтобы получить заголовок по умолчанию; оно не добавляет еще одну колонку значений количества.

  3. После source-инициализации проверить доступность Количество и реальные свойства основной папки. У родительского Выбор непустой пользовательский ID: фактическую папку найти в настоящем user-выборе по типу, не по случайному числовому индексу.

  4. Режим Авто user-папки устанавливается и читается как разрешенное свойство. Не утверждается, что в этом опыте был открыт визуальный редактор. Само серверное Поле папки задается/читается только в основном серверном коде.

  5. Настоящий первый табличный документ должен содержать default-заголовок папки Количество и отдельный заголовок Штук. Проверить собственные записи3/250/750 и1/50/50; для Книги цена и сумма находятся в одной строке, разных колонках.

  6. В user-папке задать Вертикально. Новый реальный документ должен сохранить все числа; две фактические ячейки250/750 теперь находятся в разных строках одной колонки. Координаты извлекаются из результата, не назначаются проверяющим кодом.

  7. Вернуть Горизонтально и повторить числовой/координатный контроль. Полный XML основных настроек и исходной схемы сохраняется. Интерактивное переименование, которое очищает Поле по native-контракту, не вызывается и не приписывается этому опыту.

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

  1. Будущий запуск должен пройти три реальные компоновки и все проверки числовых данных. Флаг группы или enum расположения сам по себе не заменяет проверку результата.

  2. В папке проверяются реальный default-заголовок и отдельный Штук, числовые ячейки двух записей. Горизонталь/вертикаль определяется координатами реальных ячеек250/750 Книги; Ручка должна иметь свое количество1 и две разные ячейки50.

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

  4. Полный XML собственных основных настроек и всей схемы сохраняется. Пользовательский слой влияет на эффективную копию, а не переписывает исходную схему.

  5. runtimeVerifiedScenarios=0. Числовые и координатные проверки — будущие BSL-условия приемки, а не полученные здесь результаты выполнения1С.

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

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

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

  1. Группа отбора и группа выбранных полей — разные типы с разными свойствами. У user-группы отбора недоступны Родитель, Элементы, ТипГруппы и Представление: не обращаться к ним по аналогии с основным деревом.

  2. Поле папки выбранных полей серверное и используется для получения заголовка по умолчанию. Интерактивное изменение заголовка по native-контракту очищает Поле, но этот UI-процесс здесь не запускался.

  3. РежимОтображения подготовлен и проверен как значение модели; внешний вид настоящего редактора не подтвержден. Пользовательский ID задается конкретному основному объекту и ищется в соответствующем редакторе.

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

  5. После новой ЗагрузитьНастройки пользовательские объекты следует искать заново. В этих опытах пользовательский состав создается один раз; старые ссылки через перезагрузку не удерживаются.

  6. Выключение своей вложенной группы не означает универсальный сброс всего отбора: независимое условие Сумма>0 продолжает действовать. В опыте нет записи пользовательских настроек между сеансами или изменения рабочих конфигураций.

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

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

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

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

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