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

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

Как добавить колонку в табличное поле в 1С

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

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

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

Определите, какая колонка нужна и где находятся данные

Главный вопрос перед началом работы: откуда колонка возьмёт значения. Возможны три ситуации. Первая — реквизит уже существует в объекте (документе, справочнике, табличной части), но просто не выведен на форму. Это самый простой случай: достаточно показать скрытую колонку или добавить существующий реквизит в табличное поле.

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

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

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

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

Добавление колонки в режиме предприятия без конфигуратора

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

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

Колонка через «Изменить форму»
  1. 1
    Откройте форму списка или документа в режиме предприятия
  2. 2
    В меню «Ещё» выберите «Изменить форму»
  3. 3
    Найдите нужный реквизит в дереве элементов и поставьте флажок
  4. 4
    При необходимости переместите колонку кнопками вверх/вниз
  5. 5
    Нажмите «ОК» и проверьте, что колонка отображается и заполнена

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

Добавление колонки в конфигураторе на управляемой форме

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

Чтобы добавить колонку, найдите в панели реквизитов нужный (например, реквизит табличной части «Товары») и перетащите его мышью в дерево элементов на табличное поле. Платформа сама создаст элемент «Поле ввода» или «Поле надписи» с привязкой к данным. У созданного элемента в палитре свойств можно задать заголовок колонки, ширину, режим редактирования и видимость.

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

Добавление колонки в обычной форме

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

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

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

Программное добавление колонки

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

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Добавляем реквизит формы

ДобавляемыеРеквизиты = Новый Массив;

ДобавляемыеРеквизиты.Добавить(

Новый РеквизитФормы("КомментарийКолонка",

Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)),

"Объект.Товары", "Комментарий", Ложь));

ИзменитьРеквизиты(ДобавляемыеРеквизиты);

// Добавляем элемент формы — колонку табличного поля

НовыйЭлемент = Элементы.Добавить("ТоварыКомментарий", Тип("ПолеФормы"), Элементы.Товары);

НовыйЭлемент.ПутьКДанным = "Объект.Товары.КомментарийКолонка";

НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

КонецПроцедуры

В обычных формах программное добавление выполняется через коллекцию колонок табличного поля: ЭлементыФормы.Товары.Колонки.Добавить("Имя", "Заголовок"), после чего задаются свойства «Данные» и «ЭлементУправления». Программный способ требует аккуратности: изменение реквизитов формы возможно только на сервере и до обращения к ним из других обработчиков.

Особый случай: колонка в динамическом списке

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

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

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

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

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

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

Отображение колонки
Норма

Колонка видна в табличном поле с заданным заголовком

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

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

Заполнение данными
Норма

В строках отображаются значения реквизита

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

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

Сохранение данных
Норма

Введённое значение сохраняется после записи объекта

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

Значение пропадает — реквизит не связан с данными объекта

Часто задаваемые вопросы

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

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

Почему добавленная через «Изменить форму» колонка не видна другим пользователям?

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

Как добавить вычисляемую колонку, которой нет в базе данных?

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

Колонка добавлена, но пустая. Что проверить в первую очередь?

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

Можно ли изменить порядок и ширину колонок?

Да. В конфигураторе порядок задаётся положением элемента в дереве элементов формы, ширина — свойством «Ширина». В режиме предприятия порядок меняется через «Изменить форму», а ширину пользователь может менять перетаскиванием границы заголовка колонки.

Опасно ли добавлять реквизит в табличную часть рабочей базы?

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

Итог

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

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