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