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