Разберем типичную ситуацию, с которой сталкиваются разработчики при работе с динамическими формами и расширениями конфигурации. Часто возникает проблема: вы добавили новый реквизит в табличную часть объекта в расширении, вывели его в коде формы, использовали метод ИзменитьРеквизиты, но в интерфейсе программы нужная колонка так и не появилась.
Давайте проанализируем, почему это происходит, и пройдем по шагам, которые позволят успешно решить эту задачу.
Первая и самая распространенная причина — изменения, внесенные в конфигураторе, не были применены к базе данных. В 1С важно понимать разницу между «сохранением конфигурации» и «обновлением конфигурации базы данных».
Метаданные.ВашДокумент.ТабличныеЧасти.ВашаТЧ.Реквизиты не «увидит» новый объект, так как в текущем сеансе работы он еще не существует в структуре БД.Даже если 1С «видит» ваш реквизит в метаданных, он не появится в таблице автоматически. В управляемых формах 1С реквизит формы и элемент управления на форме — это две разные сущности.
Метод ИзменитьРеквизиты, который вы используете в коде, создает лишь «область памяти» для хранения данных (реквизит). Чтобы пользователь мог увидеть его в таблице и ввести туда информацию, необходимо создать графический элемент — поле формы — и привязать его к этому реквизиту.
Чтобы реквизит отобразился в табличной части, необходимо после вызова ИзменитьРеквизиты добавить соответствующий элемент управления в коллекцию Элементы формы. Рассмотрим пример кода, который необходимо добавить после регистрации реквизитов:
// Предположим, что ТабличнаяЧасть - это путь к таблице на форме
ЭлементТЗ = Элементы.ТабличнаяЧасть;
// Перебираем массив созданных реквизитов
Для Каждого Колонка Из МассивРеквизитов Цикл
// Создаем графический элемент
НовыйЭлементФормы = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ЭлементТЗ);
НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
// Привязываем элемент к данным
НовыйЭлементФормы.ПутьКДанным = "ТабличнаяЧасть." + Колонка.Имя;
КонецЦикла;
Важно помнить: метод Элементы.Добавить должен вызываться именно в процедуре ПриСозданииНаСервере. Если вы попытаетесь создать элементы позже, поведение формы может быть непредсказуемым.
Если после выполнения этих действий колонка всё еще не видна, воспользуйтесь следующими методами диагностики:
Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты. В окне «Выражение» введите ТабличнаяЧасть.Реквизиты.Количество(). Если число меньше ожидаемого, значит проблема в обновлении конфигурации базы данных.Следуя этим шагам, вы сможете корректно выводить любые программно созданные реквизиты в табличные части документов. Главное — всегда разделять процесс создания структуры данных (через ИзменитьРеквизиты) и процесс отображения этой структуры для пользователя (через Элементы.Добавить).