Разработка и Конфигурация · 12 мин
Как добавить колонку в форму списка 1С
Как добавить колонку в форму списка 1С через конфигуратор, расширение и динамический список. Пошаговые инструкции, типичные ошибки и проверка результата.
Колонка в форме списка 1С добавляется двумя принципиально разными способами: через изменение конфигурации в конфигураторе или через расширение, когда типовую конфигурацию нельзя трогать. Выбор зависит от того, стоит ли конфигурация на поддержке, есть ли права на изменение и нужно ли сохранить возможность автоматического обновления.
Если речь идёт об обычной колонке, которая просто показывает реквизит объекта (например, «ИНН» в списке контрагентов), задача решается за несколько минут: достаточно добавить элемент формы и связать его с данными. Сложнее, когда нужна вычисляемая колонка — тогда придётся работать с запросом динамического списка или с событием «ПриПолученииДанныхНаСервере».
Ниже разобраны оба сценария для управляемых форм (такси), а также вариант без изменения конфигурации вообще — через пользовательские настройки списка, которые доступны даже без прав разработчика.
Определяем, откуда колонка берёт данные
Прежде чем открывать конфигуратор, ответьте на вопрос: что должна показывать колонка? От этого зависит весь дальнейший путь. Возможны три ситуации.
Первая — колонка показывает существующий реквизит объекта, который просто не выведен на форму. Например, у справочника «Номенклатура» есть реквизит «Артикул», но в списке он не отображается. Это самый простой случай.
Вторая — реквизита в объекте нет, его нужно сначала создать, а потом вывести. Это уже изменение структуры метаданных, что требует обновления конфигурации базы данных и, при наличии данных, реструктуризации.
Третья — колонка должна показывать вычисляемое значение: остаток товара, задолженность контрагента, количество документов. Здесь одним элементом формы не обойтись — понадобится изменить запрос динамического списка или программно заполнять значения.
Как выбрать способ
Добавление колонки через конфигуратор
Базовый сценарий: конфигурация доступна для изменения, реквизит в объекте уже существует. Откройте конфигуратор, найдите нужный объект (справочник, документ, журнал документов) и разверните ветку «Формы». Обычно форма списка называется «ФормаСписка» — откройте её двойным щелчком.
В редакторе формы слева находится дерево элементов, справа — список реквизитов формы. Найдите в дереве элементов таблицу списка — чаще всего она называется «Список». Правой кнопкой по ней → «Добавить» → «Поле». В свойствах нового элемента задайте «ПутьКДанным»: выберите нужный реквизит из реквизита формы «Список» (например, «Список.Артикул»).
Дополнительно настройте свойства: «Заголовок» (текст шапки колонки), «Ширина», «ПоложениеЗаголовка». Если колонка должна стоять в определённом месте, перетащите элемент в дереве на нужную позицию — порядок элементов в дереве определяет порядок колонок на форме.
- 1Откройте конфигуратор и найдите объект: Справочники / Документы → нужный объект → Формы → ФормаСписка
- 2В дереве элементов формы найдите таблицу «Список»
- 3Правой кнопкой → Добавить → Поле
- 4В свойствах поля укажите ПутьКДанным = Список.<ИмяРеквизита>
- 5Задайте заголовок колонки и при необходимости ширину
- 6Перетащите элемент на нужную позицию в дереве
- 7Обновите конфигурацию базы данных (F7), если менялись метаданные, и проверьте результат в режиме предприятия
После сохранения формы обновите конфигурацию базы данных (клавиша F7) и запустите режим предприятия. Откройте список — новая колонка должна появиться. Если пользователь ранее менял настройки формы под себя, его персональные настройки могут скрывать новую колонку: тогда поможет «Ещё → Установить стандартные настройки» в форме списка.
Добавление колонки через расширение конфигурации
Если конфигурация типовая и стоит на полной поддержке, прямое изменение формы чревато проблемами при обновлении: платформа либо откажется обновляться автоматически, либо затрёт ваши доработки. Правильный инструмент здесь — расширение конфигурации.
В конфигураторе откройте меню «Конфигурация → Расширения конфигурации», создайте новое расширение с понятным именем (например, «ДоработкиСписков») и префиксом. Затем в основной конфигурации найдите нужную форму списка, правой кнопкой → «Добавить в расширение». Форма появится в дереве расширения.
Дальше действия те же: откройте заимствованную форму в расширении, добавьте поле в таблицу списка, укажите путь к данным. Важный нюанс: если нужного реквизита нет в объекте, реквизит тоже можно добавить через расширение — расширения поддерживают собственные реквизиты объектов.
После сохранения расширения обновите конфигурацию базы данных. Проверьте, что расширение активно: в режиме предприятия «Все функции → Стандартные → Управление расширениями конфигурации» — расширение должно быть подключено и не иметь ошибок применения.
Вычисляемая колонка через запрос динамического списка
Когда колонка должна показывать данные, которых нет в самом объекте — например, остаток товара на складе в списке номенклатуры — потребуется изменить запрос, на котором построен динамический список.
Откройте форму списка, найдите в реквизитах формы «Список» и в его свойствах установите «ПроизвольныйЗапрос» = Истина. Затем откройте «Настройка запроса» и допишите левое соединение с нужной таблицей — например, с виртуальной таблицей регистра накопления «ТоварыНаСкладах.Остатки».
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование,
ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Остаток
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
ПО Номенклатура.Ссылка = Остатки.НоменклатураПосле этого поле «Остаток» станет доступно как колонка: добавьте элемент формы с путём к данным «Список.Остаток». Учтите два ограничения. Во-первых, основная таблица и ключевое поле (Ссылка) должны быть указаны корректно, иначе сломаются стандартные команды — открытие объекта, удаление, проведение. Во-вторых, соединение с виртуальными таблицами увеличивает нагрузку: на больших списках список может открываться заметно медленнее.
Добавление колонки без конфигуратора
Часто задачу можно решить вообще без разработки. В управляемых формах пользователь с достаточными правами может изменить состав колонок прямо в режиме предприятия: в форме списка «Ещё → Изменить форму» (в некоторых конфигурациях — «Настройка формы»).
В открывшемся окне настройки разверните элемент «Список» и отметьте галочками поля, которые нужно показать. Платформа предложит все реквизиты, доступные в динамическом списке, включая реквизиты через точку (например, «Контрагент.ИНН» в списке документов). Порядок колонок меняется кнопками «Вверх»/«Вниз» или перетаскиванием.
Ограничение способа: такая настройка сохраняется для конкретного пользователя (или требует роли администратора для распространения на всех), и она не позволяет добавить вычисляемые колонки. Но для задачи «покажите мне ещё и артикул» этого достаточно, и это единственный вариант, полностью безопасный для обновления конфигурации.
Сравнение способов
Быстро и безопасно, не требует прав разработчика. Только существующие поля, настройка индивидуальна или требует административного распространения
Полный контроль, доступны вычисляемые колонки. Требует снятия с поддержки и мешает автоматическому обновлению
Те же возможности, что и у конфигуратора, но обновления сохраняются. Требует аккуратности при совместимости с новыми релизами
Проверка результата и типичные ошибки
После добавления колонки проверьте список в режиме предприятия под обычным пользователем, а не только под разработчиком: у полных прав и ограниченных прав картина может отличаться. Если реквизит недоступен пользователю по правам (RLS или права на реквизит), колонка будет пустой или список выдаст ошибку.
Как проверить результат
Колонка отображается с заголовком и данными
Колонки нет — проверьте пользовательские настройки формы и свойство «Видимость» элемента
Значения соответствуют реквизитам объектов
Пустые значения при заполненных реквизитах — проверьте ПутьКДанным и права на реквизит
Открытие, создание, копирование работают
Ошибки при открытии объекта — нарушен основной запрос динамического списка
Список открывается с той же скоростью
Заметная задержка — оптимизируйте запрос или уберите соединение
Отдельная частая ситуация: колонку добавили, всё работает, но после обновления конфигурации она исчезла. Причина почти всегда в том, что доработка сделана в основной конфигурации, а не в расширении. Второй вариант — расширение отключилось из-за несовместимости с новым релизом: проверьте список расширений и исправьте ошибки применения.
Что важно запомнить
Простую колонку из существующего реквизита добавляют элементом формы с путём к данным «Список.<Реквизит>». Типовую конфигурацию изменяют только через расширение. Вычисляемые колонки требуют произвольного запроса динамического списка и влияют на производительность. Если разработка недоступна, используйте «Ещё → Изменить форму» в режиме предприятия.
Частые вопросы
Можно ли добавить колонку в форму списка без прав разработчика?
Да, если у вас есть право изменения настроек формы. Откройте список, выберите «Ещё → Изменить форму» и отметьте нужные поля в элементе «Список». Доступны только поля, которые уже присутствуют в динамическом списке, включая реквизиты связанных объектов через точку. Вычисляемые колонки так добавить нельзя.
Почему новая колонка видна мне, но не видна другим пользователям?
Настройки формы в 1С персональные. Если колонка добавлена через «Изменить форму», она сохранилась только для вас. Решения: добавить колонку в конфигураторе или расширении (тогда она появится у всех), либо администратором скопировать настройки формы другим пользователям через механизм копирования настроек.
Как добавить колонку с остатком товара в список номенклатуры?
Установите у реквизита формы «Список» признак произвольного запроса и допишите в текст запроса левое соединение с виртуальной таблицей РегистрНакопления.ТоварыНаСкладах.Остатки по полю Номенклатура. Затем добавьте элемент формы с путём к данным «Список.Остаток». Учтите, что на больших списках это замедлит открытие формы.
Что делать, если после обновления конфигурации колонка пропала?
Проверьте, была ли доработка сделана в расширении. Если изменения вносились в основную конфигурацию, обновление их заменило типовой версией — доработку придётся повторить, уже через расширение. Если расширение было, откройте список расширений и убедитесь, что оно подключено и применяется без ошибок.
Можно ли добавить колонку в динамический список программно, без изменения формы?
Да, в модуле формы или через расширение формы можно программно создать элемент: Элементы.Добавить() с типом ПолеФормы, указать родителя — таблицу списка и ПутьКДанным. Это удобно, когда состав колонок зависит от условий (роль пользователя, настройки учёта). Код размещают в обработчике ПриСозданииНаСервере.
Колонка добавлена, но в ней пусто, хотя реквизит заполнен. В чём причина?
Чаще всего неверно указан путь к данным — должно быть «Список.ИмяРеквизита», а не просто имя реквизита. Вторая причина — у текущего пользователя нет права просмотра этого реквизита. Третья — реквизит не входит в выборку произвольного запроса динамического списка: тогда поле нужно добавить в текст запроса.