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

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

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

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

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

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

Ниже разобраны все три способа с точными действиями, ограничениями и способами проверить результат. Инструкция подходит для конфигураций на управляемых формах (Бухгалтерия, Управление торговлей, ERP, Зарплата и управление персоналом) и платформы 1С:Предприятие 8.3.

Определите, куда именно нужно добавить колонку

Перед изменениями уточните три вещи: в каком объекте находится табличная часть (документ «Реализация товаров и услуг», справочник, обработка), как называется сама табличная часть (например, «Товары» или «Начисления») и должны ли данные колонки храниться в базе. От ответа зависит способ добавления.

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

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

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

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

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

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

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

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

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

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

Вывод новой колонки на форму документа

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

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

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

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

Если конфигурация типовая и стоит на полной поддержке, прямое изменение приведёт к снятию с поддержки и проблемам при обновлении. Правильный путь — расширение. В конфигураторе откройте меню «Конфигурация» → «Расширения конфигурации», создайте новое расширение, задайте имя и префикс (например, «Расш1_»).

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

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

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

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

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

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

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

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

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

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

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

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

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

Колонка отображается в табличной части нового документа

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

Реквизит есть в конфигураторе, но на форме его нет

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

Значение сохраняется после записи и переоткрытия документа

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

После переоткрытия колонка пустая — значит, это реквизит формы, а не табличной части

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

Все пользователи видят и редактируют колонку

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

У части пользователей колонка недоступна — проверьте роли

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

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

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

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

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

Почему новая колонка видна у администратора, но не у пользователей?

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

Как добавить колонку в табличную часть справочника?

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

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

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

Итог

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

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