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