Как изменить состав колонок в списке 1С и почему кнопка «Добавить поля» может быть неактивна?

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

В процессе работы с платформой «1С:Предприятие 8.3» пользователи и разработчики часто сталкиваются с ситуацией, когда стандартный состав колонок в форме списка документа или справочника оказывается недостаточным — для этого подойдёт расширение формы списка номенклатуры остатками и цеными. Платформа предоставляет мощный инструмент «Изменить форму», который позволяет настраивать интерфейс без внесения изменений в конфигурацию. Однако иногда этот механизм ведет себя неочевидно: нужные поля отсутствуют в списке, а кнопка добавления заблокирована. Рассмотрим подробно, как работает этот механизм, разберем причины ограничений и найдем способы решения проблемы.

Разграничение понятий: Видимость и Пользовательская видимость

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

  1. Видимость — это «жесткое» свойство. Если снять эту галочку в конфигураторе, элемент вообще не будет передан на сторону клиента. Пользователь не сможет найти это поле в окне «Изменить форму», так как для него этого поля физически не существует в текущем сеансе.
  2. Пользовательская видимость — это более гибкая настройка. Если основная «Видимость» включена, а «Пользовательская видимость» для конкретной роли или пользователя выключена, то поле по умолчанию не отображается на экране. Однако оно остается доступным в списке настройки формы. Пользователь может самостоятельно зайти в «Изменить форму», поставить галочку напротив этого поля, и оно появится.

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

Почему поля нет в списке выбора, хотя оно есть в запросе?

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

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

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

Работа с кнопкой «Добавить поля» и ссылочными данными

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

Посмотрим на алгоритм действий пользователя:

  1. Открыть форму списка и нажать Еще — Изменить форму.
  2. Выбрать в дереве элементов поле, имеющее тип «Ссылка» (например, «Ссылка» самого документа или поле «Контрагент»).
  3. Если у выбранного поля есть доступные дочерние реквизиты, кнопка «Добавить поля» станет активной.
  4. В открывшемся окне можно отметить галочками нужные реквизиты «через точку».

Обратите внимание: добавление большого количества полей через точку (разыменование ссылок) может замедлить работу списка. Для каждой такой колонки платформа выполняет левое соединение (LEFT JOIN) в SQL-запросе. Если у вас в списке 20 колонок из разных справочников, время открытия формы может существенно возрасти.

Программное управление пользовательской видимостью

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

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


// Получаем настройки компоновщика
Настройки = Список.КомпоновщикНастроек.Настройки;

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

// Если поля нет, добавляем его
Если Не ПолеУжеЕсть Тогда
    НовоеПоле = Настройки.ВыбранныеПоля.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Склад");
    НовоеПоле.Использование = Истина;
КонецЕсли;

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

Влияние функциональных опций и прав доступа

Если вышеперечисленные методы не помогают, выясним, не ограничивают ли видимость другие механизмы платформы:

Функциональные опции

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

Права доступа (RLS)

Система прав 1С работает на уровне метаданных. Если у пользователя нет прав на чтение конкретного реквизита (например, «Закупочная цена»), он не сможет вывести его в список — решить эту проблему поможет отчет для анализа прав доступа и RLS. Более того, если настроены ограничения на уровне записей (RLS), поле может отображаться, но содержать пустые значения или вызывать ошибку доступа при попытке его добавить (проверьте просмотр ролей для объекта).

Сброс к стандартным настройкам

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

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

← На главную