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