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

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

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

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

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

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

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

Определяем, где именно нужна колонка

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

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

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

Основной сценарий — добавление реквизита напрямую в конфигурацию. Сделайте резервную копию информационной базы перед любыми изменениями структуры: обновление конфигурации базы данных затрагивает таблицы СУБД, и откат без копии невозможен.

Порядок действий в конфигураторе:

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

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

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

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

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

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

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

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

Для типовых конфигураций (1С:Бухгалтерия, 1С:Управление торговлей, ERP), которые регулярно обновляются, прямое изменение конфигурации приведёт к сложностям при каждом обновлении. Расширение решает эту проблему: доработка хранится отдельно и не мешает обновлению типового кода.

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

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

Сравнение вариантов

Прямое изменение конфигурации

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

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

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

Дополнительные реквизиты и сведения

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

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

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

bsl
Для Каждого СтрокаТовары Из Объект.Товары Цикл
    СтрокаТовары.СрокПоставки = ТекущаяДатаСеанса() + 7 * 86400;
КонецЦикла;

В запросах реквизит табличной части доступен через обращение к таблице вида «Документ.РеализацияТоваровУслуг.Товары». Имя поля в запросе совпадает с именем реквизита, заданным при создании. Это позволяет использовать новую колонку в отчётах на СКД и в произвольных запросах.

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

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

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

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

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

Колонка видна на форме документа
Норма

Колонка отображается с заданным заголовком и доступна для ввода

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

Реквизит есть в конфигураторе, но на форме отсутствует — не выведен элемент формы

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

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

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

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

Доступность в отчётах
Норма

Поле доступно в конструкторе запроса и СКД

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

Поля нет в метаданных — конфигурация базы данных не обновлена

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

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

Когда колонку лучше не добавлять

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

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

Итог

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

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

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

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

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

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

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

Что будет со старыми документами после добавления колонки?

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

Можно ли добавить колонку в табличную часть через расширение в типовой 1С:Бухгалтерии?

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

Как сделать колонку обязательной для заполнения?

Установите у реквизита свойство «Проверка заполнения» в значение «Выдавать ошибку» — тогда документ нельзя будет провести с пустой колонкой. Для более гибкой логики (обязательность только в определённых случаях) используйте обработчик «ОбработкаПроверкиЗаполнения» в модуле объекта.

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

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