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

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

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

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

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

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

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

Что нужно подготовить перед добавлением поля

Для работы потребуется доступ к конфигуратору 1С и права администратора в базе. В файловых базах конфигуратор открывается через ярлык или меню «Пуск», в клиент-серверных — через консоль кластера или напрямую при наличии доступа к серверу. Убедитесь, что никто из пользователей не работает в базе в момент обновления конфигурации базы данных: платформа потребует монопольный доступ.

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

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

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

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

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

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

Вывод нового поля на форму

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Использование нового поля в коде и отчётах

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

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

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

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

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

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

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

Реструктуризация при обновлении
Норма

Окно показывает только добавление нового реквизита, ошибок нет

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

Сообщения об ошибках, удалении или изменении типа других полей

Форма документа
Норма

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

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

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

Старые документы
Норма

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

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

Ошибка открытия формы или обращения к полю

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

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

Итог

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

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

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

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

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

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

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

Почему после добавления поля колонка не появилась на форме?

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

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

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

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

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

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

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