Разработка и Конфигурация · 11 мин
Как добавить реквизит в табличную часть 1С
Пошаговая инструкция: как добавить реквизит в табличную часть документа или справочника 1С через конфигуратор, обновить формы и не потерять данные.
Табличная часть — это встроенная таблица внутри документа или справочника, например «Товары» в реализации или «Начисления» в приказе о приёме. Когда типовых колонок не хватает — нужно хранить срок годности, процент скидки менеджера, примечание к строке, — в табличную часть добавляют собственный реквизит. Операция выполняется в конфигураторе и затрагивает структуру метаданных, поэтому требует аккуратности, особенно на рабочей базе с живыми данными.
Добавление реквизита — безопасная операция с точки зрения данных: существующие строки табличных частей не удаляются, новый реквизит просто появится пустым. Однако изменение конфигурации требует монопольного доступа при обновлении базы, а в типовых конфигурациях на поддержке — снятия объекта с замка. Ниже разобран полный цикл: от подготовки до проверки результата, включая вывод реквизита на форму и в печатную форму.
Подготовка: что проверить перед изменением конфигурации
Перед любыми изменениями метаданных сделайте резервную копию базы. Для файловой базы достаточно скопировать каталог или выгрузить базу через «Администрирование — Выгрузить информационную базу» в файл .dt. Для клиент-серверной базы выгрузка .dt или средства СУБД. Это единственная гарантия отката, если что-то пойдёт не так.
Убедитесь, что у вас есть права на изменение конфигурации и что конфигурация не находится на полной поддержке поставщика без возможности изменения. В типовых решениях (1С:Бухгалтерия, Управление торговлей, ЗУП) объекты по умолчанию заблокированы: потребуется включить возможность изменения через «Конфигурация — Поддержка — Настройка поддержки». Помните: редактирование типовых объектов усложняет последующие обновления конфигурации.
Альтернатива прямому изменению — механизм дополнительных реквизитов и сведений, доступный в типовых конфигурациях в пользовательском режиме. Однако он работает для объекта целиком, а не для строк табличной части: если данные нужны именно построчно (у каждого товара свой срок годности), без изменения конфигурации не обойтись.
Как выбрать способ
Добавление реквизита в конфигураторе: пошаговый порядок
Откройте конфигуратор и дерево конфигурации (меню «Конфигурация — Открыть конфигурацию» или Ctrl+Shift+C). Найдите нужный объект: ветка «Документы» или «Справочники». Раскройте объект — внутри него есть ветка «Табличные части». Раскройте её и выберите конкретную табличную часть, например «Товары».
Кликните правой кнопкой по табличной части и выберите «Добавить — Реквизит», либо откройте палитру свойств табличной части и перейдите на закладку «Данные». Задайте имя реквизита латиницей без пробелов (например, СрокГодности), синоним — то, что увидит пользователь («Срок годности»), и тип данных.
- 1Сделайте резервную копию базы (выгрузка .dt)
- 2Откройте конфигуратор и дерево конфигурации
- 3Найдите объект и раскройте ветку «Табличные части»
- 4Правой кнопкой по нужной табличной части — «Добавить — Реквизит»
- 5Задайте имя, синоним и тип реквизита в палитре свойств
- 6Обновите конфигурацию базы данных (F7), подтвердите реструктуризацию
- 7Добавьте реквизит на форму объекта и проверьте в пользовательском режиме
Выбор типа данных и настройка свойств реквизита
Тип реквизита определяет, что можно хранить и как с этим работать. Строка подходит для примечаний — задайте разумную длину (например, 100–250 символов), не оставляйте неограниченную длину без необходимости. Число — для количеств и процентов: укажите длину и точность, например 10 и 2 для процентов с копейками. Дата — для сроков; выберите состав даты «Дата», если время не нужно.
Если значение должно выбираться из списка, используйте ссылку на справочник (например, «ВариантыУпаковки») или перечисление. Перечисление подходит, когда список значений фиксирован и меняется редко; справочник — когда пользователи должны сами пополнять варианты. Составной тип (несколько типов одновременно) применяйте только при реальной необходимости: он усложняет запросы и отчёты.
Обратите внимание на свойства «Проверка заполнения» — установите «Выдавать ошибку», если строка без этого реквизита не должна проводиться. Для числовых реквизитов полезно свойство «Минимальное значение» / «Максимальное значение» — оно отсечёт явно ошибочный ввод ещё на этапе редактирования.
Обновление конфигурации базы данных
После добавления реквизита изменения существуют только в конфигурации разработчика. Чтобы они попали в базу, нажмите F7 или выполните «Конфигурация — Обновить конфигурацию базы данных». Платформа покажет окно реструктуризации со списком изменений — в нём должна быть ваша табличная часть с пометкой о добавлении поля.
Добавление реквизита — безопасная реструктуризация: данные не удаляются, новая колонка создаётся пустой. Опасны обратные операции — удаление реквизита, сужение длины строки, изменение типа. Если в окне реструктуризации видны потери данных, которые вы не планировали, отмените операцию и разберитесь в причинах.
На рабочей базе обновление потребует монопольного доступа: все пользователи должны выйти. В клиент-серверном варианте можно использовать отложенное обновление, но для простого добавления реквизита достаточно выбрать время минимальной нагрузки и выполнить обновление напрямую.
Вывод реквизита на форму и в печатную форму
Частая ситуация: реквизит добавлен, база обновлена, но пользователи его не видят. Причина проста — на форме объекта колонка не появляется автоматически. Откройте форму документа в конфигураторе, найдите таблицу, связанную с табличной частью, и перетащите новый реквизит из панели «Реквизиты» в дерево элементов формы, внутрь таблицы.
Проверьте свойства добавленной колонки: заголовок, ширину, режим редактирования. Для ссылочных реквизитов настройте кнопку выбора и быстрый выбор, чтобы пользователь мог подобрать значение из списка без открытия формы справочника.
Если реквизит должен попадать в печатную форму, его нужно добавить в макет печатной формы и в модуль менеджера объекта — туда, где формируются параметры области. В типовых конфигурациях печать часто построена на запросах: добавьте новое поле в текст запроса и в область макета, иначе в печатной форме останется пустая колонка.
// Пример обращения к новому реквизиту в модуле объекта
Для Каждого СтрокаТовары Из Товары Цикл
Если Не ЗначениеЗаполнено(СтрокаТовары.СрокГодности) Тогда
СтрокаТовары.СрокГодности = ТекущаяДатаСеанса() + 30 * 86400;
КонецЕсли;
КонецЦикла;Расширение конфигурации как альтернатива для типовых решений
Если конфигурация типовая и регулярно обновляется, прямое изменение объекта создаст проблемы при каждом обновлении: платформа будет спрашивать, как объединять ваши правки с изменениями поставщика. Современный подход — расширение конфигурации (меню «Конфигурация — Расширения конфигурации»).
В расширении заимствуется нужный документ, и в его табличную часть добавляется собственный реквизит. Типовой объект при этом не меняется, обновления проходят без конфликтов, а ваш реквизит хранится в той же таблице базы данных. Ограничение: возможности расширений зависят от версии платформы и режима совместимости конфигурации — в старых конфигурациях добавление реквизитов табличных частей через расширение может быть недоступно.
Сравнение подходов
Полный доступ ко всем свойствам, но усложняет обновление типовой конфигурации
Не трогает типовой код, обновления проходят чисто; есть ограничения по версии платформы
Без конфигуратора и без рисков, но работают только для объекта целиком, не для строк табличной части
Частые ошибки и проверка результата
Самая распространённая ошибка — забыть добавить реквизит на форму. Вторая по частоте — добавить реквизит в объект, но не в табличную часть: тогда значение одно на весь документ, а не на каждую строку. Третья — выбрать неправильный тип: например, строку вместо даты, из-за чего невозможно строить отборы и сортировку по срокам.
После обновления откройте базу в режиме предприятия, создайте тестовый документ, заполните новую колонку и проведите документ. Затем проверьте, что значение сохраняется после закрытия и повторного открытия, попадает в движения (если это требуется) и выводится в печатной форме.
Как проверить результат
Пользователь может вводить и редактировать значения
Колонки нет — реквизит не добавлен на форму
Значение остаётся после записи и повторного открытия документа
Значение пропадает — проверьте, что изменение применено к конфигурации базы данных
Новое поле заполнено в сформированной печатной форме
Пустая колонка — поле не добавлено в запрос или макет
Что важно запомнить
Реквизит табличной части добавляется в конфигураторе через ветку «Табличные части» нужного объекта. После добавления обязательно обновите конфигурацию базы данных, выведите колонку на форму и проверьте сохранение данных на тестовом документе. Для типовых конфигураций предпочтительно расширение.
Частые вопросы
Пропадут ли данные в табличной части после добавления реквизита?
Нет. Добавление нового реквизита — безопасная реструктуризация: существующие строки и их значения сохраняются, новая колонка просто появляется пустой. Риск потери данных возникает только при удалении реквизитов, сужении длины строки или смене типа.
Можно ли добавить реквизит в табличную часть без конфигуратора?
Нет. Механизм дополнительных реквизитов и сведений в пользовательском режиме работает только для объекта целиком (шапки документа или элемента справочника). Построчные данные табличной части требуют изменения метаданных — через конфигуратор или расширение конфигурации.
Реквизит добавлен, но пользователи его не видят. Что делать?
Откройте форму объекта в конфигураторе и вручную перетащите реквизит из панели реквизитов в таблицу формы. Автоматически новая колонка на управляемой форме не появляется. Также проверьте, что обновление конфигурации базы данных было выполнено.
Как добавить реквизит в типовую конфигурацию, не сломав обновления?
Используйте расширение конфигурации: создайте расширение, заимствуйте нужный документ и добавьте реквизит в его табличную часть. Типовой объект не изменяется, и обновления поставщика будут устанавливаться без ручного объединения.
Какой тип выбрать для реквизита со списком значений?
Если список фиксированный и редко меняется (например, «Да/Нет/Частично») — создайте перечисление. Если пользователи должны сами пополнять варианты, нужны дополнительные поля или группы — используйте ссылку на справочник.
Как заполнить новый реквизит в уже существующих документах?
Напишите разовую обработку: запросом выберите документы, откройте каждый объект, заполните реквизит в строках табличной части нужным значением и запишите. Перед массовой обработкой протестируйте её на копии базы и ограничьте выборку небольшим периодом.