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

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

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

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

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

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

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

Определяем, откуда колонка берёт данные

Прежде чем открывать конфигуратор, ответьте на вопрос: что должна показывать колонка? От этого зависит весь дальнейший путь. Возможны три ситуации.

Первая — колонка показывает существующий реквизит объекта, который просто не выведен на форму. Например, у справочника «Номенклатура» есть реквизит «Артикул», но в списке он не отображается. Это самый простой случай.

Вторая — реквизита в объекте нет, его нужно сначала создать, а потом вывести. Это уже изменение структуры метаданных, что требует обновления конфигурации базы данных и, при наличии данных, реструктуризации.

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

Маршрут решения

Как выбрать способ

Реквизит уже есть в объекте, но не выведен в списокДобавьте элемент формы и свяжите его с реквизитом — хватит 5 минут в конфигураторе
Нужно видеть данные без изменения конфигурацииИспользуйте «Ещё → Изменить форму» в режиме предприятия или расширение конфигурации
Нужна вычисляемая колонка (остатки, долги, суммы)Добавьте поле в запрос динамического списка через произвольный запрос или событие ПриПолученииДанныхНаСервере
Конфигурация типовая и обновляется автоматическиРаботайте только через расширение, иначе изменения будут потеряны при обновлении

Добавление колонки через конфигуратор

Базовый сценарий: конфигурация доступна для изменения, реквизит в объекте уже существует. Откройте конфигуратор, найдите нужный объект (справочник, документ, журнал документов) и разверните ветку «Формы». Обычно форма списка называется «ФормаСписка» — откройте её двойным щелчком.

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

Дополнительно настройте свойства: «Заголовок» (текст шапки колонки), «Ширина», «ПоложениеЗаголовка». Если колонка должна стоять в определённом месте, перетащите элемент в дереве на нужную позицию — порядок элементов в дереве определяет порядок колонок на форме.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и найдите объект: Справочники / Документы → нужный объект → Формы → ФормаСписка
  2. 2
    В дереве элементов формы найдите таблицу «Список»
  3. 3
    Правой кнопкой → Добавить → Поле
  4. 4
    В свойствах поля укажите ПутьКДанным = Список.<ИмяРеквизита>
  5. 5
    Задайте заголовок колонки и при необходимости ширину
  6. 6
    Перетащите элемент на нужную позицию в дереве
  7. 7
    Обновите конфигурацию базы данных (F7), если менялись метаданные, и проверьте результат в режиме предприятия

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

Добавление колонки через расширение конфигурации

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

В конфигураторе откройте меню «Конфигурация → Расширения конфигурации», создайте новое расширение с понятным именем (например, «ДоработкиСписков») и префиксом. Затем в основной конфигурации найдите нужную форму списка, правой кнопкой → «Добавить в расширение». Форма появится в дереве расширения.

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

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

Вычисляемая колонка через запрос динамического списка

Когда колонка должна показывать данные, которых нет в самом объекте — например, остаток товара на складе в списке номенклатуры — потребуется изменить запрос, на котором построен динамический список.

Откройте форму списка, найдите в реквизитах формы «Список» и в его свойствах установите «ПроизвольныйЗапрос» = Истина. Затем откройте «Настройка запроса» и допишите левое соединение с нужной таблицей — например, с виртуальной таблицей регистра накопления «ТоварыНаСкладах.Остатки».

bsl
ВЫБРАТЬ
	Номенклатура.Ссылка КАК Ссылка,
	Номенклатура.Наименование,
	ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Остаток
ИЗ
	Справочник.Номенклатура КАК Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
		ПО Номенклатура.Ссылка = Остатки.Номенклатура

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

Добавление колонки без конфигуратора

Часто задачу можно решить вообще без разработки. В управляемых формах пользователь с достаточными правами может изменить состав колонок прямо в режиме предприятия: в форме списка «Ещё → Изменить форму» (в некоторых конфигурациях — «Настройка формы»).

В открывшемся окне настройки разверните элемент «Список» и отметьте галочками поля, которые нужно показать. Платформа предложит все реквизиты, доступные в динамическом списке, включая реквизиты через точку (например, «Контрагент.ИНН» в списке документов). Порядок колонок меняется кнопками «Вверх»/«Вниз» или перетаскиванием.

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

Сравнение способов

Настройка формы пользователем

Быстро и безопасно, не требует прав разработчика. Только существующие поля, настройка индивидуальна или требует административного распространения

Изменение формы в конфигураторе

Полный контроль, доступны вычисляемые колонки. Требует снятия с поддержки и мешает автоматическому обновлению

Расширение конфигурации

Те же возможности, что и у конфигуратора, но обновления сохраняются. Требует аккуратности при совместимости с новыми релизами

Проверка результата и типичные ошибки

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

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

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

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

Колонка отображается с заголовком и данными

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

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

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

Значения соответствуют реквизитам объектов

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

Пустые значения при заполненных реквизитах — проверьте ПутьКДанным и права на реквизит

Стандартные команды списка
Норма

Открытие, создание, копирование работают

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

Ошибки при открытии объекта — нарушен основной запрос динамического списка

Скорость открытия
Норма

Список открывается с той же скоростью

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

Заметная задержка — оптимизируйте запрос или уберите соединение

Типичные ошибки
01
Элемент добавлен в корень формы, а не в таблицу «Список» — колонка появляется отдельным полем над списком или не появляется вовсе
02
Неверный ПутьКДанным (например, просто «Артикул» вместо «Список.Артикул») — колонка пустая или форма не открывается
03
Изменена типовая форма без расширения — доработка теряется при первом же обновлении конфигурации
04
В произвольном запросе потеряно ключевое поле Ссылка — перестают работать открытие и удаление объектов из списка
05
Колонка добавлена, но у пользователя включены собственные настройки формы — он не видит новую колонку до сброса настроек

Отдельная частая ситуация: колонку добавили, всё работает, но после обновления конфигурации она исчезла. Причина почти всегда в том, что доработка сделана в основной конфигурации, а не в расширении. Второй вариант — расширение отключилось из-за несовместимости с новым релизом: проверьте список расширений и исправьте ошибки применения.

Итог

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

Простую колонку из существующего реквизита добавляют элементом формы с путём к данным «Список.<Реквизит>». Типовую конфигурацию изменяют только через расширение. Вычисляемые колонки требуют произвольного запроса динамического списка и влияют на производительность. Если разработка недоступна, используйте «Ещё → Изменить форму» в режиме предприятия.

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

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

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

Почему новая колонка видна мне, но не видна другим пользователям?

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

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

Установите у реквизита формы «Список» признак произвольного запроса и допишите в текст запроса левое соединение с виртуальной таблицей РегистрНакопления.ТоварыНаСкладах.Остатки по полю Номенклатура. Затем добавьте элемент формы с путём к данным «Список.Остаток». Учтите, что на больших списках это замедлит открытие формы.

Что делать, если после обновления конфигурации колонка пропала?

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

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

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

Колонка добавлена, но в ней пусто, хотя реквизит заполнен. В чём причина?

Чаще всего неверно указан путь к данным — должно быть «Список.ИмяРеквизита», а не просто имя реквизита. Вторая причина — у текущего пользователя нет права просмотра этого реквизита. Третья — реквизит не входит в выборку произвольного запроса динамического списка: тогда поле нужно добавить в текст запроса.