К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как добавить столбец в форму списка 1С

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

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

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

Ниже разобраны оба сценария, настройка видимости, программное добавление колонок и типичные ошибки, из-за которых столбец либо не появляется, либо остаётся пустым.

Определите тип формы списка перед началом работы

Первый шаг — выяснить, как устроена конкретная форма. Откройте конфигуратор, найдите нужный объект (справочник, документ, регистр), перейдите на вкладку «Формы» и откройте форму списка. В редакторе формы посмотрите на дерево реквизитов в правой части окна.

Если главный реквизит формы называется «Список» и имеет тип «ДинамическийСписок» — перед вами стандартный вариант управляемой формы. Это самый частый случай в типовых конфигурациях на управляемом приложении. Если основной реквизит — «ТаблицаЗначений» или «ДеревоЗначений», данные заполняются программно, и порядок добавления колонки будет другим.

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

Главный реквизит — ДинамическийСписокСтандартная форма списка

Смотрите, установлен ли флаг «Произвольный запрос»

Главный реквизит — ТаблицаЗначенийПрограммное заполнение

Ищите процедуру, которая заполняет таблицу, — колонку нужно добавить и туда

Произвольный запрос включёнПоля ограничены текстом запроса

Новый реквизит нужно добавить в SELECT-часть запроса

Нужного реквизита нет в объектеПотребуется доработка конфигурации

Сначала добавьте реквизит в метаданные объекта

Добавьте столбец в динамический список через конфигуратор

Это базовый сценарий для типовых и самописных конфигураций на управляемых формах. Откройте форму списка в конфигураторе и действуйте в следующем порядке.

Если список использует произвольный запрос, сначала выделите реквизит «Список», откройте его свойства и нажмите «Открыть» у свойства «Запрос». Добавьте нужное поле в выборку, например: Список.Комментарий КАК Комментарий. Сохраните запрос. Без этого шага поле не появится в данных формы.

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

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

После перетаскивания задайте свойства нового элемента: заголовок колонки, ширину, положение заголовка, отображение пустых значений. Если колонка должна быть только для чтения, убедитесь, что у элемента установлено свойство «ТолькоПросмотр» или что сама таблица списка работает в режиме просмотра — для форм списка это стандартное поведение.

Настройте видимость и условное оформление колонки

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

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

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

Добавьте колонку программно для произвольных данных

Иногда нужного поля нет в объекте вообще — например, требуется расчётная колонка «Остаток на складе» в списке номенклатуры или «Сумма долга» в списке контрагентов. Такие данные нельзя просто перетащить из реквизитов, их добавляют программально в обработчике «ПриСозданииНаСервере».

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

bsl
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Добавляем реквизит формы
    ДобавляемыеРеквизиты = Новый Массив;
    НовыйРеквизит = Новый РеквизитФормы("Примечание", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)), "Список", "Примечание");
    ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    // Создаём элемент формы
    НовыйЭлемент = Элементы.Добавить("СписокПримечание", Тип("ПолеФормы"), Элементы.Список);
    НовыйЭлемент.ПутьКДанным = "Список.Примечание";
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
КонецПроцедуры

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

Добавьте колонку в форму на таблице значений

Если форма списка построена на таблице значений (часто встречается в старых самописных решениях и обработках), порядок другой. Сначала добавьте колонку в саму таблицу значений — либо в конфигураторе через редактирование реквизита формы, либо программно методом ТаблицаРезультата.Колонки.Добавить().

Затем добавьте элемент формы, связанный с новой колонкой: перетащите колонку из панели реквизитов в таблицу на форме. Наконец, найдите процедуру заполнения таблицы (обычно это запрос к базе с последующей загрузкой результата) и убедитесь, что новое поле выбирается в запросе и попадает в таблицу. Пропуск любого из трёх шагов — самая частая причина пустой колонки.

Проверьте результат и права доступа

После обновления конфигурации базы данных откройте список в режиме предприятия и проверьте: колонка отображается, содержит данные, сортировка по ней работает. Если колонка есть, но пустая, — проблема в данных или запросе, а не в элементе формы.

Отдельная ситуация — права. Если у пользователя нет права «Просмотр» на реквизит объекта (настройка ролей на уровне полей), колонка будет пустой или недоступной, хотя в конфигураторе всё настроено верно. Проверяйте результат под учётной записью с теми же правами, что у конечных пользователей.

Контрольные точки

Как проверить результат

Колонка видна в списке
Норма

Столбец отображается в нужной позиции с корректным заголовком

Тревожный признак

Колонки нет — проверьте настройки формы пользователя и видимость элемента

Данные в колонке
Норма

Значения заполнены и соответствуют данным объектов

Тревожный признак

Колонка пустая — поле отсутствует в запросе динамического списка или нет прав на реквизит

Сортировка и отбор
Норма

Сортировка по новой колонке работает

Тревожный признак

Сортировка недоступна — поле добавлено только как элемент формы, без данных в списке

Работа у пользователей
Норма

У всех ролей колонка отображается одинаково корректно

Тревожный признак

У части пользователей колонка пустая — проверьте RLS и права на поля

Типичные ошибки при добавлении столбца

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

Типичные ошибки
01
Перетащили поле в форму, но не добавили его в произвольный запрос — колонка пустая или форма не открывается с ошибкой
02
Добавили элемент формы, но забыли обновить конфигурацию базы данных (F7) — в режиме предприятия изменений не видно
03
Не учли сохранённые пользовательские настройки формы — у пользователей колонка не появилась, хотя у разработчика всё работает
04
Добавили расчётную колонку только как элемент формы без данных — сортировка и отбор по ней не работают
05
Изменили типовую форму на полной поддержке вместо расширения — сложности при обновлении конфигурации
06
Добавили колонку в таблицу значений, но не изменили запрос заполнения — колонка остаётся пустой
Итог

Что важно запомнить

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

Частые вопросы

Можно ли добавить столбец в список без конфигуратора?

Да, если нужное поле уже существует в объекте. В режиме предприятия откройте список, нажмите «Ещё — Изменить форму» и перетащите доступные поля в таблицу. Это изменит форму только для текущего пользователя и не требует доработки конфигурации. Для полей, которых нет в объекте, без конфигуратора не обойтись.

Почему колонка отображается, но остаётся пустой?

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

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

Установите у динамического списка произвольный запрос и добавьте соединение с нужной таблицей (например, с регистром остатков) с выборкой требуемого поля. После этого перетащите новое поле в таблицу формы. Учитывайте, что соединения в запросе списка могут заметно замедлить его открытие на больших объёмах данных.

Колонка появилась у меня, но не появилась у пользователей. Что делать?

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

Что лучше для доработки типовой формы: изменение в конфигураторе или расширение?

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

Можно ли программно менять порядок и видимость колонок в зависимости от роли пользователя?

Да. В обработчике «ПриСозданииНаСервере» проверьте роль или функциональную опцию и установите свойство «Видимость» нужных элементов формы. Порядок колонок меняется методом «Переместить» у коллекции подчинённых элементов таблицы формы.