Почему в 1С пропадает кнопка «Настроить список» и как вытянуть связанные реквизиты?

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

При разработке и доработке управляемых форм в 1С разработчики часто сталкиваются с неочевидным поведением платформы: на форме расположены два динамических списка, но у одного из них доступна кнопка «Настроить список» (через меню «Еще»), а у другого — нет. Кроме того, в одних списках пользователи могут свободно вытягивать связанные реквизиты через настройку формы, а в других эта возможность заблокирована. Рассмотрим подробнее, почему так происходит и как мы можем управлять этим поведением.

Разберем причину отсутствия кнопки «Настроить список»

Проанализируем ситуацию, когда команда настройки списка исчезает из командной панели или меню. В платформе 1С видимость стандартных команд динамического списка регулируется настройками элементов формы. Выясним причину по шагам:

  1. Состав команд элемента: Чаще всего кнопка пропадает из-за того, что в свойствах таблицы (элемента формы, связанного с динамическим списком) в разделе «Состав команд» снята соответствующая галочка. Важно понимать: команды привязаны именно к элементам формы, а не к реквизитам. На вкладке команд формы у вас будет столько таблиц, сколько элементов добавлено на форму.
  2. Группа пользовательских настроек: Чтобы платформа автоматически и корректно формировала быстрые отборы для пользователя, мы должны при создании формы привязать динамический список к элементу «Группа пользовательских настроек». Если этот элемент не выведен на форму или не связан со списком, часть функционала настройки может быть недоступна.
  3. Намеренное скрытие в типовых конфигурациях: Зачастую разработчики осознанно скрывают стандартную настройку списка или прячут её глубоко в подменю. Если на форму уже выведены специализированные поля для быстрых отборов, скрытие предотвращает конфликт ручных настроек пользователя с теми фильтрами, которые устанавливаются программно.
  4. Блокировка через Компоновщик настроек: Под капотом любого динамического списка работает встроенная система компоновки данных (СКД). Разработчик может программно заблокировать отборы или сортировки, обратившись к объекту КомпоновщикНастроек. Из-за этого пользователь лишается части возможностей по настройке списка.

Как вытянуть связанные реквизиты в динамическом списке?

Теперь разберем вторую проблему: почему в некоторых списках невозможно добавить колонку с данными из связанного справочника или документа. Это ограничение продиктовано жесткой оптимизацией производительности в платформе 1С. Платформа не обращается к базе данных за значениями тех колонок, которые невидимы для пользователя. Это экономит оперативную память сервера и ускоряет отрисовку интерфейса.

Посмотрим на пример решения. Чтобы у пользователя или разработчика появилась возможность вытягивать поля через точку (связанные реквизиты), мы должны выполнить следующие действия при разработке формы:

  1. Добавить в динамический список колонку Ссылка.
  2. В свойствах этого поля обязательно установить флаг «Использовать всегда». Это заставит сервер гарантированно получать данные ссылки при выполнении запроса, даже если само поле не выведено в таблицу.
  3. Отключить пользовательскую видимость для колонки Ссылка, чтобы она не перегружала интерфейс.

Эта настройка тесно связана с механизмами Библиотеки стандартных подсистем (БСП). Поле Ссылка с включенным свойством «Использовать всегда» является обязательным требованием для работы многих типовых механизмов. Без него не будут работать команды печати (системе просто не передается ссылка на распечатываемый объект) и механизм дополнительных реквизитов и сведений.

Альтернативные способы добавления связанных данных

Если в стандартном (основном) списке не получается вытянуть нужный реквизит, мы можем изменить способ формирования данных:

  1. Произвольный запрос: В свойствах динамического списка можно установить галочку «Произвольный запрос». Это позволит нам написать собственный SQL-подобный запрос, в котором мы через ЛЕВОЕ СОЕДИНЕНИЕ свяжем основную таблицу с нужными регистрами или справочниками и выберем любые необходимые поля.
  2. Программное расширение списка: В современных версиях платформы мы можем модифицировать текст запроса динамического списка «на лету» с помощью объекта СхемаЗапроса. Посмотрим на небольшой пример программного добавления поля при открытии формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Схема = Новый СхемаЗапроса;
    Схема.УстановитьТекстЗапроса(Список.ПроизвольныйЗапрос);
    
    // Добавляем новое поле из связанной таблицы
    Схема.ПакетЗапросов[0].Колонки.Добавить("Контрагент.ОсновнойМенеджер", "Менеджер");
    
    Список.ПроизвольныйЗапрос = Схема.ПолучитьТекстЗапроса();
    
КонецПроцедуры

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

← На главную