Как включить произвольный запрос в динамическом списке, если галка недоступна?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

В процессе доработки типовых конфигураций, таких как КА 2.4, разработчики часто сталкиваются с ситуацией, когда стандартные инструменты настройки формы оказываются заблокированы. Одной из самых частых проблем является невозможность установить флаг Произвольный запрос у Динамического списка. Давайте разберем, почему это происходит и как правильно решить данную задачу.

Анализ причин недоступности настройки

Когда вы открываете форму в конфигураторе и пытаетесь изменить настройки Динамического списка, вы можете обнаружить, что флаг Произвольный запрос и поле с текстом запроса недоступны для редактирования. Основные причины такого поведения системы:

  1. Ограничения поддержки: Если объект находится на поддержке без возможности внесения изменений, вы не можете менять его свойства напрямую.
  2. Контекст основной конфигурации: Прямое редактирование элементов основной конфигурации ограничено правилами разработки для типовых решений.
  3. Привязка к функциональным опциям: В некоторых случаях система жестко ограничивает свойства списка, чтобы сохранить целостность данных и производительность работы.

Решение проблемы через механизм расширений

Наиболее эффективным и «чистым» способом решения данной проблемы в современных типовых конфигурациях является использование Расширений конфигурации. Рассмотрим этот процесс пошагово.

Шаг 1: Добавление реквизита в расширение

Чтобы получить полный контроль над списком, нам необходимо «переопределить» его в рамках расширения. Для этого:

  1. Откройте ваше расширение конфигурации.
  2. Перейдите в дерево метаданных расширения и найдите нужную форму документа или справочника.
  3. Нажмите правой кнопкой мыши на форму и выберите Добавить в расширение.
  4. После того как форма появится в дереве расширения, найдите в ней реквизит Список (тип данных ДинамическийСписок).
  5. Нажмите правой кнопкой на реквизит и выберите Добавить в расширение.

Шаг 2: Настройка произвольного запроса

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

  1. Выделить реквизит Список в форме расширения.
  2. В палитре свойств найти и установить флаг Произвольный запрос.
  3. После установки флага у вас появится возможность редактировать текст запроса в свойстве Запрос.

Альтернативные подходы: Программная настройка

Если по каким-то причинам вы не хотите переводить список в режим произвольного запроса (например, чтобы сохранить стандартные механизмы RLS и иерархии), вы можете прибегнуть к программному изменению настроек. Это делается в модуле формы в обработчике ПриСозданииНаСервере.

Рассмотрим, как можно программно добавить отбор или изменить текст запроса с помощью КомпоновщикаНастроек:


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

Важные рекомендации при переходе на произвольный запрос

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

Используя вышеописанные методы, вы сможете успешно модифицировать поведение списков в КА 2.4, сохраняя при этом архитектурную чистоту решения за счет использования механизмов расширений.

← На главную