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