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

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

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

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

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

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

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

Что нужно подготовить перед изменением конфигурации

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

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

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

Как добавить реквизит через конфигуратор: пошагово

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

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

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

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

Как выбрать тип данных для нового реквизита

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

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

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

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

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

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

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

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

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

Встроенный механизм БСП без доработки кода. Подходит для простых полей у объектов, но добавляет реквизит к объекту целиком, а не в строку табличной части — для колонок табличной части не подходит.

Добавление реквизита через расширение

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

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

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

Как вывести новый реквизит на форму

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

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

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

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

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

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

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

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

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

Колонка в табличной части
Норма

Отображается на форме, позволяет ввод и сохраняет значение после записи

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

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

Обновление конфигурации БД
Норма

Реструктуризация завершилась без ошибок, база открывается в режиме предприятия

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

Ошибки реструктуризации, конфликт имён, база не открывается

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

Документ проводится, движения формируются корректно

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

Ошибки проведения, ссылки на несуществующий реквизит в коде

Печать и отчёты
Норма

Новый реквизит выводится там, где требуется

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

В печатной форме пусто — макет и запрос не доработаны

FAQ

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

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

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

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

Как заполнить новый реквизит в уже существующих документах?

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

Почему после добавления реквизита в расширение он не виден в отчёте?

Реквизиты расширения доступны в запросах и СКД, но типовой отчёт о них не знает — его схему компоновки нужно доработать (добавить поле в набор данных и настройки). Также проверьте, что расширение подключено и активно в текущем сеансе: при отключённом расширении обращение к его реквизиту вызовет ошибку.

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

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

Что делать, если при обновлении возникла ошибка реструктуризации?

Не повторяйте обновление вслепую. Проверьте свободное место на диске, завершите все сеансы, посмотрите текст ошибки — часто причина в конфликте имён или недостатке места во временных таблицах. Если ошибка повторяется, восстановите базу из резервной копии и выполните тестирование и исправление («Администрирование → Тестирование и исправление») перед повторной попыткой.

Итог

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

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