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

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

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

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

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

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

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

Определите, где должен храниться столбец

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

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

Если столбец нужен только для показа (итог по строке, признак, рассчитанное значение), достаточно реквизита формы или дополнительного поля в запросе динамического списка. Структура базы при этом не меняется, рисков меньше.

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

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

Значение должно сохраняться в документе или справочникеДобавьте реквизит табличной части объекта и выведите его на форму
Столбец нужен только для отображения в спискеДобавьте поле в запрос динамического списка или в настройку списка
Колонка формируется динамически в обработке или отчётеСоздайте её программно через ИзменитьРеквизиты и элементы формы
Нет прав на изменение конфигурацииИспользуйте расширение конфигурации или настройку формы пользователем

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

Это самый распространённый сценарий. Откройте конфигуратор, найдите нужный объект (документ, справочник) в дереве конфигурации и разверните ветку «Табличные части». В контекстном меню нужной табличной части выберите «Добавить» → «Реквизит».

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

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

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и найдите объект в дереве конфигурации
  2. 2
    Добавьте реквизит в табличную часть, задайте имя, синоним и тип
  3. 3
    Откройте форму объекта в редакторе форм
  4. 4
    Перетащите реквизит из панели реквизитов в дерево элементов внутрь таблицы
  5. 5
    Обновите конфигурацию базы данных (F7) и согласитесь с реструктуризацией
  6. 6
    Откройте 1С в режиме Предприятия и проверьте, что столбец виден и сохраняет данные

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

Добавление колонки в динамический список

Динамический список (список документов, справочников, регистров) строится на запросе, поэтому колонку в него добавляют иначе. Откройте форму списка в конфигураторе, выделите в дереве элементов таблицу списка и в панели реквизитов найдите основной реквизит списка (обычно «Список»).

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

Если запрос произвольный, сначала добавьте поле в текст запроса через конструктор запроса: откройте свойства реквизита «Список», нажмите «Открыть» у свойства «Запрос», добавьте нужное поле в выборку. После этого поле появится в списке доступных и его можно будет вывести в таблицу.

Программное добавление столбца

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

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

bsl
&НаСервере
Процедура ДобавитьКолонку(ИмяКолонки, Заголовок)
    Добавляемые = Новый Массив;
    Добавляемые.Добавить(Новый РеквизитФормы(ИмяКолонки,
        Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(15, 2)),
        "ТаблицаДанных", Заголовок, Ложь));
    ИзменитьРеквизиты(Добавляемые);

    Колонка = Элементы.Добавить("ТаблицаДанных" + ИмяКолонки, Тип("ПолеФормы"), Элементы.ТаблицаДанных);
    Колонка.ПутьКДанным = "ТаблицаДанных." + ИмяКолонки;
    Колонка.Вид = ВидПоляФормы.ПолеВвода;
КонецПроцедуры

Ключевой момент: ИзменитьРеквизиты() работает только на сервере, а после вызова все программно созданные ранее элементы, привязанные к удалённым реквизитам, будут потеряны. Поэтому сначала меняют состав реквизитов, потом создают элементы. Также помните, что при закрытии формы динамически добавленные реквизиты не сохраняются — при повторном открытии их нужно создавать заново, обычно в обработчике ПриСозданииНаСервере.

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

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

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

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

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

Доработка конфигурации

Полный контроль, но требуется снятие с поддержки; обновления усложняются

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

Конфигурация остаётся на поддержке; подходит для большинства доработок форм

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

Без конфигуратора и прав разработчика; действует только у одного пользователя и только для доступных полей

Программное создание

Гибко для обработок и отчётов; колонки не сохраняются между сеансами формы

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

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

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

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

Видимость колонки
Норма

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

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

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

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

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

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

Значение пропадает — реквизит добавлен в форму, а не в объект

Тип данных
Норма

Поле принимает и корректно форматирует значения нужного типа

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

Ошибка преобразования — неверно выбран тип реквизита

Права доступа
Норма

У пользователей с типовыми ролями колонка доступна

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

Колонка пустая или недоступна — не настроены права на новый реквизит

Типичные ошибки
01
Реквизит добавлен только на форму, а не в объект — данные вводятся, но не сохраняются после записи
02
Забыли обновить конфигурацию базы данных — форма открывается со старой структурой, реквизит недоступен
03
Колонка перетащена не внутрь таблицы, а на уровень формы — вместо столбца появилось отдельное поле
04
Не настроены права на новый реквизит — у пользователей без полных прав колонка пустая или скрыта
05
В динамическом списке поле добавлено в запрос, но не выведено в элементы формы — колонка не появляется
06
Изменение типа существующего реквизита без анализа — риск потери данных при реструктуризации

Ограничения и меры предосторожности

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

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

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

Итог

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

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

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

Почему добавленный столбец не сохраняет введённые значения?

Скорее всего, реквизит добавлен только на форму (как реквизит формы), а не в табличную часть объекта. Реквизиты формы существуют только пока форма открыта. Добавьте реквизит в табличную часть объекта в дереве конфигурации и обновите конфигурацию базы данных.

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

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

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

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

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

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

Как изменить порядок столбцов в таблице формы?

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

Опасно ли обновление конфигурации базы данных после добавления столбца?

Добавление нового реквизита — безопасная операция: существующие данные не затрагиваются, новое поле просто добавляется пустым. Риск возникает при изменении или удалении существующих реквизитов. В любом случае перед реструктуризацией рабочей базы сделайте резервную копию.