Редактировать представление своего именованного отбора отдельной колонкой

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

Расширения возникают у таблиц по настоящему пути к данным. Их не создают вымышленным конструктором.

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

Своя общая управляемая форма: серверное создание и отдельные серверные процедуры.

Подготовка

  1. В своей учебной конфигурации создайте Отчеты → УчебныеКнигиСКД. У отчёта откройте ОсновнаяСхемаКомпоновкиДанных и сохраните её макетом ОсновнаяСхемаКомпоновкиДанных.

  2. В конструкторе СКД создайте источник Local и набор-запрос Книги. Вставьте приведённый запрос двух константных строк; это не чтение рабочих справочников. Доступные поля Наименование, Количество, Сумма заполните автоматически.

  3. В настройках схемы создайте вариант Подробно: выбраны Наименование, Количество, Сумма; структура — группировка Детальные записи. Второй вариант Кратко: Наименование и Сумма, также Детальные записи. Первым оставьте Подробно; у обоих задайте понятное представление.

  4. Для этой самостоятельной копии своей схемы замените запрос набора Книги приведённым запросом с &МинимумКоличества. Автоматически заполните три поля и параметр МинимумКоличества Число 10.0, значение по умолчанию 0. Первым вариантом оставьте Подробно с детальными записями.

  5. Создайте собственную общую управляемую форму УчебныеРедакторыСКД. Не используйте основную форму отчёта: здесь обычная общая форма и НЕосновной реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных. Дополнительно Результат ТабличныйДокумент и связанное поле результата.

  6. Перетащите из дерева реквизита Компоновщик на форму таблицы: ДоступныеПоля → Компоновщик.Настройки.Выбор.ДоступныеПоляВыбора; ПараметрыДанных → Компоновщик.Настройки.ПараметрыДанных; ОтборКниг → Компоновщик.Настройки.Отбор; ОформлениеКниг → Компоновщик.Настройки.УсловноеОформление; СтруктураКниг → Компоновщик.Настройки.Структура; ПользовательскиеНастройки → Компоновщик.ПользовательскиеНастройки. Автозаполнение колонок включено.

  7. Основной блок назначьте ПриСозданииНаСервере именно этой формы. Дополнительные процедуры разместите отдельно в том же модуле. В каждой карточке свой самостоятельный основной обработчик; не создавайте несколько одноимённых обработчиков.

  8. Ограничения редактора — удобство интерфейса, не ограничение прав пользователя и не защита запроса. Все примеры используют только две собственные константные строки, не рабочие справочники. BSL и формы при сборке справочника не запускались.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПодготовитьУчебныеРедакторы();
    Элементы.ОтборКниг.ПодробноеОтображениеИменованныхЭлементовНастройки = Истина;
    Элементы.ОтборКниг.РежимОтображения = РежимОтображенияНастроекКомпоновкиДанных.Все;
    ВывестиСвоиКнигиНаСервере();
    Сообщить("Собственных группировок: " + Строка(Компоновщик.Настройки.Структура.Количество()));
КонецПроцедуры
Конструктор своей СКД: запрос двух строк с настоящим параметром
ВЫБРАТЬ Книги.Наименование, Книги.Количество, Книги.Сумма
ИЗ
    (ВЫБРАТЬ "Учебная книга" КАК Наименование, 3 КАК Количество, 750 КАК Сумма
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ "Учебная тетрадь", 5, 200) КАК Книги
ГДЕ Книги.Количество >= &МинимумКоличества
Тот же модуль: инициализировать реальный реквизит компоновщика
&НаСервере
Процедура ПодготовитьУчебныеРедакторы()
    Схема = Отчеты.УчебныеКнигиСКД.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Источник = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
    Компоновщик.Инициализировать(Источник);
    Настройки = Схема.НастройкиПоУмолчанию;
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("МинимумКоличества", 0);
    Настройки.Отбор.Элементы.Очистить();
    Условие = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Количество");
    Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    Условие.ПравоеЗначение = 0;
    Условие.Использование = Истина;
    Условие.Представление = "Книги с положительным количеством";
    Настройки.Отбор.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
    Настройки.Отбор.ПредставлениеПользовательскойНастройки = "Отбор своих книг";
    ДобавитьСвоеОформление(Настройки);
    Компоновщик.ЗагрузитьНастройки(Настройки);
КонецПроцедуры
Тот же модуль: собственное именованное правило оформления
&НаСервере
Процедура ДобавитьСвоеОформление(Настройки)
    Настройки.УсловноеОформление.Элементы.Очистить();
    Правило = Настройки.УсловноеОформление.Элементы.Добавить();
    Правило.Использование = Истина;
    Правило.Представление = "Выделить собственные названия";
    Поле = Правило.Поля.Элементы.Добавить();
    Поле.Поле = Новый ПолеКомпоновкиДанных("Наименование");
    Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЖелтый);
КонецПроцедуры
Тот же модуль: вывести настоящие настройки в поле результата
&НаСервере
Процедура ВывестиСвоиКнигиНаСервере()
    Схема = Отчеты.УчебныеКнигиСКД.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = Компоновщик.ПолучитьНастройки();
    ПостроительМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = ПостроительМакета.Выполнить(Схема, Настройки);
    Процессор = Новый ПроцессорКомпоновкиДанных;
    Процессор.Инициализировать(Макет);
    Результат = Новый ТабличныйДокумент;
    Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    Вывод.УстановитьДокумент(Результат);
    Вывод.Вывести(Процессор);
КонецПроцедуры

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

  1. Подготовьте собственную схему и точные связи таблиц.

  2. Откройте свою общую форму с указанным обработчиком.

  3. Сравните редактор и фактический результат компоновки.

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

  1. Условие действительно именованное: его Представление задано в подготовке. При Ложь оно показывается одной ячейкой, при Истина представление редактируется отдельно.

  2. Локальное ограничение редактора не заменяет роли / RLS. Макет конфигурации и пользовательские настройки базы этим опытом не сохраняются.

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

Есть реальный компоновщик, непустые собственные настройки, редакторы и вывод двух строк.

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

  1. Не заменяйте путь таблицы похожим по имени реквизитом другого типа; от него зависит доступность расширения.

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

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

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

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

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