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