При разработке и доработке управляемых форм в 1С разработчики часто сталкиваются с неочевидным поведением платформы: на форме расположены два динамических списка, но у одного из них доступна кнопка «Настроить список» (через меню «Еще»), а у другого — нет. Кроме того, в одних списках пользователи могут свободно вытягивать связанные реквизиты через настройку формы, а в других эта возможность заблокирована. Рассмотрим подробнее, почему так происходит и как мы можем управлять этим поведением.
Проанализируем ситуацию, когда команда настройки списка исчезает из командной панели или меню. В платформе 1С видимость стандартных команд динамического списка регулируется настройками элементов формы. Выясним причину по шагам:
КомпоновщикНастроек. Из-за этого пользователь лишается части возможностей по настройке списка.Теперь разберем вторую проблему: почему в некоторых списках невозможно добавить колонку с данными из связанного справочника или документа. Это ограничение продиктовано жесткой оптимизацией производительности в платформе 1С. Платформа не обращается к базе данных за значениями тех колонок, которые невидимы для пользователя. Это экономит оперативную память сервера и ускоряет отрисовку интерфейса.
Посмотрим на пример решения. Чтобы у пользователя или разработчика появилась возможность вытягивать поля через точку (связанные реквизиты), мы должны выполнить следующие действия при разработке формы:
Ссылка.Ссылка, чтобы она не перегружала интерфейс.Эта настройка тесно связана с механизмами Библиотеки стандартных подсистем (БСП). Поле Ссылка с включенным свойством «Использовать всегда» является обязательным требованием для работы многих типовых механизмов. Без него не будут работать команды печати (системе просто не передается ссылка на распечатываемый объект) и механизм дополнительных реквизитов и сведений.
Если в стандартном (основном) списке не получается вытянуть нужный реквизит, мы можем изменить способ формирования данных:
ЛЕВОЕ СОЕДИНЕНИЕ свяжем основную таблицу с нужными регистрами или справочниками и выберем любые необходимые поля.СхемаЗапроса. Посмотрим на небольшой пример программного добавления поля при открытии формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Схема = Новый СхемаЗапроса;
Схема.УстановитьТекстЗапроса(Список.ПроизвольныйЗапрос);
// Добавляем новое поле из связанной таблицы
Схема.ПакетЗапросов[0].Колонки.Добавить("Контрагент.ОсновнойМенеджер", "Менеджер");
Список.ПроизвольныйЗапрос = Схема.ПолучитьТекстЗапроса();
КонецПроцедуры
Резюмируя: управление доступностью настроек и составом полей динамического списка требует понимания того, как платформа работает с памятью и элементами формы. Обязательно проверяйте флаг «Использовать всегда» для ключевых полей и корректно настраивайте состав команд элемента таблицы, чтобы интерфейс был удобным и предсказуемым для пользователей.