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

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

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

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

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

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

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

Что такое табличная часть и когда нужна новая колонка

Табличная часть — это подчинённая коллекция строк, привязанная к объекту: документу, справочнику или обработке. У каждой табличной части есть набор реквизитов — они и образуют колонки, которые пользователь видит на форме. Например, в документе «Реализация товаров и услуг» табличная часть «Товары» содержит колонки «Номенклатура», «Количество», «Цена», «Сумма».

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

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

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

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

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

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

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

Выбор типа данных для новой колонки

Тип данных определяет, что можно вводить в колонку и как она будет вести себя в расчётах. Для количественных значений используйте «Число» с указанием длины и точности: для процентов обычно достаточно длины 5 и точности 2, для денежных сумм — длина 15 и точность 2. Для текста — «Строка» с ограничением длины. Если колонка должна ссылаться на элемент справочника (склад, сотрудник, номенклатура), выберите тип «СправочникСсылка» с конкретным объектом.

Распространённая ошибка — выбрать составной тип «про запас». Составные типы замедляют запросы и усложняют отчёты. Если колонка хранит только ссылки на номенклатуру, укажите один конкретный тип, а не «ЛюбаяСсылка».

Отображение новой колонки на форме

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

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

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

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

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

Для динамического добавления используется метод ИзменитьРеквизиты() формы: сначала формируется массив добавляемых реквизитов типа «РеквизитФормы», затем применяется изменение. После этого создаётся элемент формы с привязкой к реквизиту через свойство «ПутьКДанным». Этот подход применяется в расширениях конфигурации и внешних обработках, где прямое изменение типовой формы недоступно или нежелательно.

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

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

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

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

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

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

Способы добавить колонку

Реквизит в конфигураторе

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

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

Хранение данных без снятия типовой с поддержки. Зависит от версии платформы, при отключении расширения колонка пропадает.

Программно на форме

Без изменения базы, подходит для вычисляемых значений. Данные не сохраняются и недоступны в отчётах.

Заполнение новой колонки данными

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

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

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

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

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

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

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

Ограничения и когда привлекать специалиста

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

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

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

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

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

Видна, редактируется, значения сохраняются после записи

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

Колонки нет или значения пропадают после перезаписи

Данные в старых документах
Норма

Заполнены обработкой или осознанно оставлены пустыми

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

Пустые значения ломают отчёты и проведение

Проведение документа
Норма

Документ проводится без ошибок, движения корректны

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

Ошибки при проведении после добавления реквизита

Отчёты и запросы
Норма

Новое поле доступно в конструкторе запросов

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

Поля нет — реквизит добавлен только на форму

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

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

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

Почему добавленная колонка не видна пользователям?

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

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

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

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

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

Новая колонка не попадает в отчёт. Что делать?

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

Можно ли изменить тип данных у уже добавленной колонки?

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

Итог

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

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