Разработка и Конфигурация · 12 мин
Как редактировать динамический список в 1С
Как редактировать динамический список в 1С: изменение запроса, отборов и сортировки через конфигуратор и в пользовательском режиме. Пошаговая инструкция.
Динамический список в 1С — это реквизит формы, который отображает данные из базы через запрос и обновляется автоматически при изменении данных. Журналы документов, списки справочников и регистров в управляемых формах построены именно на нём. Редактировать динамический список можно двумя путями: в конфигураторе (изменение запроса, полей, отборов на уровне разработки) и в пользовательском режиме (настройка отбора, сортировки и оформления без изменения конфигурации).
Выбор способа зависит от задачи. Если нужно изменить состав выводимых данных, добавить поле из связанной таблицы или задать произвольный запрос — потребуется конфигуратор и права на изменение конфигурации. Если достаточно отфильтровать записи или поменять порядок сортировки — это делается штатными средствами формы через «Ещё → Настроить список».
Перед любыми изменениями в конфигураторе сделайте резервную копию информационной базы или выгрузку конфигурации. Ошибка в произвольном запросе динамического списка может привести к падению производительности формы или к невозможности её открытия у пользователей.
Где находятся настройки динамического списка
В управляемой форме динамический список — это реквизит формы с типом «ДинамическийСписок». Чтобы добраться до его настроек, откройте конфигуратор, найдите нужный объект (справочник, документ, журнал документов), откройте основную форму списка и в редакторе формы перейдите на вкладку «Реквизиты» в правой части окна.
Основной реквизит формы обычно называется «Список». Двойной щелчок по нему или вызов палитры свойств открывает окно с ключевыми параметрами: «Произвольный запрос», «Основная таблица», «Динамическое считывание данных», а также закладки «Настройки» с отборами, сортировкой, группировкой и условным оформлением.
Если форма типовая и вы не хотите менять конфигурацию поставщика, часть настроек можно переопределить программно в модуле формы — об этом ниже. Это важно для конфигураций на поддержке, где прямое изменение объектов усложняет обновление.
Как изменить запрос динамического списка в конфигураторе
Основной сценарий редактирования — замена стандартного запроса на произвольный. Это нужно, когда в список требуется вывести поля из связанных таблиц, добавить вычисляемые колонки или объединить данные нескольких источников.
Порядок действий: откройте свойства реквизита «Список», установите флаг «Произвольный запрос» и нажмите кнопку открытия конструктора запроса. В конструкторе выберите таблицы, поля, условия соединений и отборы. После сохранения запроса обязательно проверьте поле «Основная таблица» — оно должно указывать на таблицу, записи которой редактируются из списка, иначе команды «Создать», «Изменить» и «Скопировать» перестанут работать корректно.
- 1Откройте форму списка в конфигураторе и найдите реквизит «Список»
- 2В свойствах установите флаг «Произвольный запрос»
- 3Откройте конструктор запроса и сформируйте нужный запрос
- 4Укажите основную таблицу в свойстве «Основная таблица»
- 5Сохраните форму и проверьте открытие списка в режиме предприятия
После установки произвольного запроса платформа может потребовать настроить ключевые поля. Для списка справочника или документов ключевым полем обычно является «Ссылка» — оно должно присутствовать в выборке. Без ключевого поля список откроется, но интерактивные действия с записями будут недоступны.
Пример произвольного запроса
Типовая задача — вывести в списке документов дополнительное поле, например ответственного менеджера из связанного справочника. Запрос выглядит примерно так:
ВЫБРАТЬ
Реализация.Ссылка КАК Ссылка,
Реализация.Номер КАК Номер,
Реализация.Дата КАК Дата,
Реализация.Контрагент КАК Контрагент,
Реализация.Ответственный КАК Ответственный
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
Поля «Ссылка», «Номер», «Дата» обязательны для корректной работы журнала документов. Остальные поля добавляйте по необходимости, помня, что каждое соединение таблиц увеличивает нагрузку на СУБД при открытии списка.
Настройка отборов, сортировки и оформления
На закладке «Настройки» в свойствах динамического списка доступны стандартные возможности СКД: отбор, сортировка, группировка и условное оформление. Здесь задаются параметры по умолчанию — те, что увидит пользователь при первом открытии формы.
Отбор можно сделать фиксированным (пользователь не сможет его снять) или доступным для изменения. Для этого у элемента отбора есть свойство «Режим отображения»: «Недоступный» скрывает отбор от пользователя, «Обычный» разрешает редактирование. Фиксированные отборы применяют, например, чтобы скрыть помеченные на удаление объекты или ограничить список текущим периодом.
Условное оформление позволяет подсвечивать строки по условию — например, выделять цветом непроведённые документы или просроченные заказы. Условие строится на тех же полях запроса, поэтому поле для оформления должно присутствовать в выборке.
Как редактировать список в пользовательском режиме
Пользователь без доступа к конфигуратору может настроить динамический список через меню «Ещё → Настроить список». Откроется окно настроек с закладками «Отбор», «Сортировка», «Группировка» и «Условное оформление». Доступность этих настроек зависит от того, что разработчик разрешил в свойствах списка.
В отборе пользователь добавляет условия по любым доступным полям: равенство, вхождение в список, сравнение дат. Настройки сохраняются автоматически и применяются при следующем открытии формы. Чтобы вернуть стандартный вид, в окне настроек есть команда «Установить стандартные настройки».
Ограничение пользовательского режима: нельзя изменить сам запрос, добавить новые поля в список или изменить состав колонок, если разработчик не вывел их в настройки. Для таких задач всё равно потребуется доработка в конфигураторе или расширении.
Сравнение способов редактирования
Подходит для отборов, сортировки и оформления. Не требует прав разработчика, но не позволяет менять запрос и состав полей
Полный контроль: произвольный запрос, поля, параметры. Требует прав и снимает объект с полной поддержки, что усложняет обновление
Изменение формы без модификации основной конфигурации. Оптимально для типовых решений на поддержке, но требует навыков разработки
Программное изменение настроек списка
Когда настройки должны зависеть от контекста — например, от роли пользователя или параметров открытия формы, — их задают программно в модуле формы, обычно в обработчике «ПриСозданииНаСервере». Динамический список программно доступен через реквизит формы, а его отбор — через коллекцию элементов отбора компоновки данных.
Типовой приём — добавление элемента отбора: создаётся элемент в коллекции «Список.Отбор.Элементы», задаётся левое значение (поле), вид сравнения и правое значение. Аналогично программно меняются параметры запроса через «Список.Параметры.УстановитьЗначениеПараметра» — это основной способ передать в произвольный запрос период, организацию или другой контекст.
Программная настройка выполняется до первого отображения списка, поэтому изменения из «ПриСозданииНаСервере» не вызывают лишних обращений к базе. Если менять отбор позже, список перечитает данные — на больших таблицах это заметная пауза.
Если пользовательские настройки отбора «ломают» программно заданный отбор, добавляйте программные элементы отбора с идентификатором пользовательской настройки или используйте фиксированные настройки компоновки — тогда пользователь не сможет их отключить.
Типичные ошибки и проблемы производительности
Самая частая ошибка — произвольный запрос без указания основной таблицы. Форма открывается, данные видны, но кнопки создания и изменения записей не работают или открывают не тот объект. Второй типовой промах — отсутствие поля «Ссылка» в выборке, из-за чего список теряет интерактивность.
Проблемы производительности возникают из-за соединений с большими таблицами без отборов, использования виртуальных таблиц регистров без параметров периода и вывода в список неограниченного числа строк. Если список открывается дольше нескольких секунд, проверьте запрос в консоли: часто достаточно добавить параметр периода в виртуальную таблицу или убрать лишние соединения.
Отдельный риск — изменение типовой формы напрямую в конфигурации на поддержке. При очередном обновлении такие доработки конфликтуют с изменениями поставщика. Безопасный путь — расширение конфигурации, где форма заимствуется и дорабатывается отдельно.
Как проверить результат после редактирования
После изменения запроса или настроек откройте форму в режиме предприятия и пройдите базовый сценарий: список открывается, записи отображаются, двойной щелчок открывает объект, команды «Создать» и «Скопировать» работают. Затем проверьте отборы и сортировку — как заданные по умолчанию, так и пользовательские.
Для произвольного запроса дополнительно проверьте поведение при пустом результате и при большом объёме данных. Полезно открыть список под пользователем с ограниченными правами: RLS-ограничения и недоступные поля могут дать ошибку, которой не видно под администратором.
Как проверить результат
Список открывается без ошибок, данные видны
Ошибка запроса или пустой список при наличии данных
Открывается форма нужного объекта
Команды недоступны или открывают не тот объект
Применяется и виден пользователю в настройках
Отбор отсутствует или скрывает нужные записи
Список открывается за приемлемое время
Заметная пауза — проверяйте соединения и параметры запроса
Частые вопросы
Можно ли изменить запрос динамического списка без конфигуратора?
Нет. В пользовательском режиме доступны только отбор, сортировка, группировка и оформление через «Ещё → Настроить список». Изменение самого запроса и состава полей требует конфигуратора или расширения конфигурации.
Почему после установки произвольного запроса пропала кнопка «Создать»?
Почти всегда причина в том, что не заполнено свойство «Основная таблица» у динамического списка. Укажите таблицу, записи которой создаются из списка, и убедитесь, что поле «Ссылка» присутствует в выборке запроса.
Как скрыть помеченные на удаление объекты из списка?
Добавьте в настройки списка отбор по полю «ПометкаУдаления» с видом сравнения «Равно» и значением «Ложь». Если пользователи не должны отключать этот отбор, установите ему режим отображения «Недоступный» или задайте его в фиксированных настройках.
Пользовательские настройки списка сбились. Как вернуть исходные?
Откройте «Ещё → Настроить список» и выполните команду «Установить стандартные настройки». Форма вернётся к параметрам, заданным разработчиком в конфигураторе. Если проблема повторяется у всех пользователей, проверьте настройки по умолчанию в свойствах списка.
Можно ли передавать параметры в произвольный запрос списка?
Да. Параметры объявляются в тексте запроса через амперсанд (&Параметр) и устанавливаются программно: Список.Параметры.УстановитьЗначениеПараметра("Период", Значение). Так передают даты, организацию и другие ограничения контекста.
Что лучше для доработки типовой формы: изменение конфигурации или расширение?
Для типовых конфигураций на поддержке предпочтительно расширение: форма заимствуется, дорабатывается отдельно и не конфликтует с обновлениями поставщика. Прямое изменение оправдано только в собственных конфигурациях.
Что важно запомнить
Динамический список редактируется через свойства реквизита формы в конфигураторе: произвольный запрос требует указания основной таблицы и поля «Ссылка». Отборы, сортировка и оформление доступны и пользователю через «Настроить список». Для типовых конфигураций используйте расширения и всегда проверяйте изменения на копии базы.