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

В этой статье мы разберём все возможные способы добавления столбца — от ручного редактирования в Конфигураторе до написания кода на встроенном языке. Особое внимание уделим типичным ошибкам, которые допускают даже опытные разработчики, и покажем, как их избежать. Материал актуален для 1С:Предприятие 8.3 (включая последние релизы), но большинство методов применимы и к более ранним версиям платформы.

Независимо от того, работаете ли вы с управляемыми формами или обычными формами, после прочтения этой статьи вы сможете уверенно добавлять столбцы в любые табличные части — будь то справочники, документы или отчёты.

1. Подготовка: что нужно знать перед добавлением столбца

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

  • 📋 Форма списка (например, список справочника «Номенклатура»)
  • 📄 Форма элемента (карточка документа или справочника с табличной частью)
  • 📊 Отчёт или обработка (таблицы в отчётах типа «Анализ субконто»)
  • 🖥️ Управляемая форма (современный интерфейс, начиная с 8.2)
  • 🗃️ Обычная форма (устаревший формат, но ещё встречается в legacy-системах)

От типа формы зависит не только способ добавления столбца, но и возможные ограничения. Например, в управляемых формах нельзя напрямую редактировать структуру таблицы через Конфигуратор — требуется программный код. А в обычных формах некоторые свойства столбцов (например, Ширина) могут быть зафиксированы и не поддаваться изменению через интерфейс.

Также проверьте:

  • 🔒 Есть ли у вас права на изменение конфигурации (режим «Конфигуратор»)
  • 🔄 Не заблокирована ли конфигурация для изменений (в меню Конфигурация → Поддержка → Настройка поддержки)
  • 📦 Есть ли резервная копия базы (добавление столбца может повлиять на производительность)
📊 Какой тип формы вы чаще всего изменяете?
Управляемая форма
Обычная форма
Форма списка
Форма элемента
Отчёты и обработки

2. Способ 1: Добавление столбца через Конфигуратор (для обычных форм)

Если вы работаете с обычной формой (не управляемой), самый простой способ — редактирование прямо в Конфигураторе. Этот метод подходит для форм элементов справочников, документов или табличных частей.

Пошаговая инструкция:

  1. Откройте Конфигуратор и найдите нужный объект (например, Справочники → Номенклатура).
  2. Перейдите на вкладку Формы и откройте форму элемента или списка.
  3. Найдите таблицу, в которую нужно добавить столбец (обычно это элемент ТабличноеПоле).
  4. Кликните правой кнопкой по таблице и выберите Редактировать форму.
  5. В открывшемся окне найдите вкладку Колонки и нажмите Добавить.
  6. Задайте свойства новой колонки:
    • 🔹 Заголовок — название столбца, которое будет видно пользователям
    • 🔹 Данные — путь к реквизиту (например, Ссылка.Артикул)
    • 🔹 Тип значения — должен совпадать с типом реквизита (строка, число, дата и т.д.)
  7. Сохраните изменения (Файл → Сохранить) и обновите конфигурацию базы (Конфигурация → Обновить конфигурацию базы данных).
  8. После обновления столбец появится в форме. Если он не отображается — проверьте, не скрыт ли он свойством Видимость или не установлен ли фильтр на таблицу.

    Связан ли столбец с существующим реквизитом|

    Указан ли корректный тип данных|

    Задан ли заголовок (не оставляйте пустым)|

    Проверена ли видимость столбца|

    Сделан ли бэкап конфигурации-->

    3. Способ 2: Программное добавление столбца (универсальный метод)

    Для управляемых форм или когда нужно динамически добавлять столбцы (например, в зависимости от прав пользователя), используется программный код. Этот метод работает во всех версиях 1С 8.3 и позволяет гибко настраивать отображение.

    Пример кода для добавления столбца в таблицу формы элемента:

    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    

    // Получаем таблицу по имени

    Таблица = ЭлементыФормы.ТабличнаяЧастьТовары;

    // Добавляем новую колонку

    НоваяКолонка = Таблица.Колонки.Добавить();

    НоваяКолонка.Имя = "НоваяКолонка";

    НоваяКолонка.Заголовок = "Прибыль, %";

    НоваяКолонка.ТипЗначения = Тип("Число");

    НоваяКолонка.Ширина = 80;

    // Привязываем данные (например, рассчитываем на лету)

    НоваяКолонка.Данные = Новый ДинамическийСписокЗначений(Товары);

    НоваяКолонка.Выражение = "ВычислитьПрибыль(Ссылка)";

    КонецПроцедуры

    Функция ВычислитьПрибыль(Ссылка)

    Возврат Ссылка.ЦенаПродажи - Ссылка.ЦенаЗакупа;

    КонецФункции

    Ключевые моменты:

    • 🔧 Код пишется в модуле формы (вкладка Модуль в Конфигураторе)
    • 🔄 Для динамического обновления данных используйте ДинамическийСписокЗначений
    • 📌 Если столбец должен отображать данные из реквизита, укажите путь в свойстве ПутьКДанным (например, НоваяКолонка.ПутьКДанным = "Ссылка.Артикул")

Для форм списка логика аналогична, но вместо ЭлементыФормы.ТабличнаяЧасть используется ЭлементыФормы.Список.

💡

Если столбец не отображается после добавления через код, проверьте, не сбрасывается ли он при обновлении формы. В таком случае перенесите код в процедуру ПриОткрытии вместо ПриСозданииНаСервере.

4. Способ 3: Добавление столбца через расширение конфигурации

Если вы работаете с типовой конфигурацией (например, 1С:Бухгалтерия 3.0 или 1С:УТ 11) и не хотите снимать её с поддержки, лучший вариант — использовать расширения. Это позволяет добавлять столбцы без изменения исходного кода.

Алгоритм действий:

  1. В Конфигураторе откройте Конфигурация → Расширения конфигурации → Добавить.
  2. Создайте новое расширение и укажите основную конфигурацию, к которой оно будет применяться.
  3. Найдите нужную форму в дереве объектов расширения (например, Документ.РеализацияТоваровУслуг.ФормаДокумента).
  4. Скопируйте форму в расширение (правая кнопка → Копировать в расширение).
  5. В скопированной форме добавьте столбец так же, как в Способе 1.
  6. Сохраните расширение и обновите конфигурацию базы.

Преимущества этого метода:

  • ✅ Не снимает конфигурацию с поддержки
  • ✅ Легко откатиться к исходному состоянию
  • ✅ Можно распределять расширения между базами

Ограничение: не все свойства форм можно изменить через расширения. Например, иногда не получается модифицировать Действия или Команды формы.

Что делать, если расширение не применяется?

Если после сохранения расширения изменения не отображаются, проверьте:

1. Подключено ли расширение к базе (в Администрирование → Печатные формы, отчёты и обработки → Расширения).

2. Нет ли конфликтов с другими расширениями (посмотрите журнал применения расширений).

3. Обновлена ли конфигурация базы данных после добавления расширения.

5. Способ 4: Добавление столбца в отчёт или обработку

Отчёты и обработки в часто содержат таблицы, которые тоже требуют доработки. Здесь добавление столбца зависит от того, как построен отчёт:

Тип отчёта Способ добавления столбца Пример
Табличный документ Редактирование макета или программное добавление колонки ТабличныйДокумент.ВывестиСтолбец("НовыйСтолбец", Тип("Число"))
СКД (Система Компоновки Данных) Изменение схемы компоновки или добавление вычисляемого поля В настройках СКД добавить поле Выражение с формулой
Динамический список Добавление колонки в настройках списка или через код ДинамическийСписок.Колонки.Добавить("Прибыль")

Для СКД (наиболее распространённый вариант) пошаговая инструкция:

  1. Откройте отчёт в Конфигураторе (например, Отчёты → АнализСубконто).
  2. Перейдите на вкладку Схема компоновки данных.
  3. В разделе Наборы данных проверьте, что нужное поле есть в запросе (если нет — добавьте его в текст запроса).
  4. В разделе Ресурсы или Поля добавьте новое поле (если оно вычисляемое, укажите формулу).
  5. В настройках отчёта (Настройки → Структура) добавьте столбец в таблицу.

Если столбец должен отображать вычисляемые данные (например, процент выполнения плана), используйте Вычисляемые поля в СКД:

Выражение = "Выручка / План * 100"
💡

В отчётах на СКД новые столбцы автоматически не появляются в пользовательских настройках. Чтобы они отображались у всех пользователей, добавьте их в Настройки по умолчанию (вкладка Основные настройки).

6. Способ 5: Добавление столбца через внешнюю обработку

Если у вас нет доступа к Конфигуратору или нужно временно добавить столбец (например, для тестирования), можно использовать внешнюю обработку. Этот метод подходит для 1С:Предприятие в режиме 1С:Предприятие (без запуска Конфигуратора).

Инструкция:

  1. Создайте новую обработку (Файл → Новый → Обработка).
  2. Добавьте на форму элемент ТабличноеПоле.
  3. В модуле обработки напишите код для заполнения таблицы данными из нужного объекта (например, справочника):
Процедура ЗаполнитьТаблицу(Команда)

Таблица = ЭлементыФормы.ТаблицаТоваров;

Таблица.Колонки.Очистить();

// Добавляем стандартные колонки

КолонкаНаименование = Таблица.Колонки.Добавить("Наименование");

КолонкаНаименование.Заголовок = "Наименование";

// Добавляем новую колонку

КолонкаПрибыль = Таблица.Колонки.Добавить("Прибыль");

КолонкаПрибыль.Заголовок = "Прибыль, %";

КолонкаПрибыль.ТипЗначения = Тип("Число");

// Заполняем данными

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

НоваяСтрока = Таблица.Добавить();

НоваяСтрока.Наименование = Выборка.Наименование;

НоваяСтрока.Прибыль = Выборка.ЦенаПродажи - Выборка.ЦенаЗакупа;

КонецЦикла;

КонецПроцедуры

Чтобы использовать обработку:

  • Сохраните её как файл .epf.
  • В 1С:Предприятие откройте Файл → Открыть и выберите сохранённую обработку.
  • Запустите процедуру заполнения таблицы.

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

💡

Чтобы обработка автоматически подхватывала изменения в справочнике, добавьте в форму кнопку Обновить и свяжите её с процедурой заполнения таблицы.

7. Типичные ошибки и как их избежать

Даже опытные разработчики иногда сталкиваются с проблемами при добавлении столбцов. Вот самые распространённые ошибки и способы их решения:

  • 🚫 Столбец не отображается

    Причины:

    • Не указан ПутьКДанным или он неверный (проверьте через точку: Ссылка.Реквизит)
    • Столбец скрыт свойством Видимость = Ложь
    • В управляемых формах не вызвана процедура ПриСозданииНаСервере
  • 🚫 Ошибка типа данных

    Если в столбце отображается #Неопределённо или возникает ошибка привязки, проверьте:

    • Совпадает ли ТипЗначения колонки с типом реквизита (например, не пытаетесь вывести число в столбце типа Строка)
    • Для вычисляемых полей указан ли корректный возвращаемый тип в функции
  • 🚫 Медленная работа формы после добавления столбца

    Если форма стала тормозить:

    • Проверьте, не добавили ли вы столбец с тяжёлым запросом (например, вычисление по всем строкам таблицы)
    • Для динамических данных используйте ОтложенноеВычисление = Истина
    • Уменьшите ширину столбца или отключите АвтоШирина

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

Как отладить ошибку привязки данных?

Если при открытии формы возникает ошибка типа "Не найден реквизит 'ИмяРеквизита'", выполните следующие шаги:

1. Проверьте, существует ли реквизит в объекте (откройте структуру справочника/документа в Конфигураторе).

2. Убедитесь, что путь к данным указан верно (например, Ссылка.Реквизит, а не просто Реквизит).

3. Если реквизит добавлен недавно, обновите конфигурацию базы данных.

4. В управляемых формах проверьте, что реквизит доступен на сервере (иногда требуется добавить его в модуль объекта).

8. Оптимизация отображения столбцов

Добавление столбца — это только половина дела. Чтобы таблица оставалась удобной для пользователей, важно правильно настроить отображение:

Параметр Рекомендации Пример кода
Ширина столбца Установите фиксированную ширину для критичных столбцов (например, для артикулов). Для остальных используйте АвтоШирина = Истина. НоваяКолонка.Ширина = 100
Цвет фона Выделяйте цветом важные данные (например, отрицательные остатки красным). НоваяКолонка.ЦветФона = RGB(255, 200, 200)
Форматирование Для чисел укажите количество знаков после запятой, для дат — формат отображения. НоваяКолонка.Формат = "ЧДЦ=2"
Условное оформление Настройте правила подсветки (например, если значение > 1000, сделать текст жирным). Используйте событие ПриАктивизацииСтроки

Пример кода для условного оформления:

Процедура ТабличнаяЧастьТоварыПриАктивизацииСтроки(Элемент)

ТекущаяСтрока = ЭлементыФормы.ТабличнаяЧастьТовары.ТекущаяСтрока;

Если ТекущаяСтрока.Количество < 0 Тогда

ТекущаяСтрока.ЦветТекста = RGB(255, 0, 0); // Красный цвет для отрицательных значений

КонецЕсли;

КонецПроцедуры

Для управляемых форм настройка условного оформления делается через свойство УсловноеОформление таблицы. Там можно создать несколько правил с разными стилями.

💡

Если в таблице много столбцов, используйте горизонтальную прокрутку (Таблица.ПолосаПрокрутки = ВертикальнаяИГоризонтальная) и группируйте связанные столбцы с помощью заголовков (ГруппаКолонок).

FAQ: Ответы на частые вопросы

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

Да, но с ограничениями. Вы можете:

  • Использовать внешнюю обработку (см. Способ 5), но изменения будут временными.
  • Если у вас есть права администратора в режиме 1С:Предприятие, можно попробовать изменить форму через Все функции → Редактировать форму (не во всех конфигурациях).
  • Для отчётов на СКД иногда помогает настройка Пользовательские настройки (добавление столбца вручную через интерфейс).

Для постоянных изменений доступ к Конфигуратору обязателен.

Почему после добавления столбца в расширении он не появляется у пользователей?

Вероятные причины:

  • Расширение не подключено к базе (проверьте в Администрирование → Печатные формы, отчёты и обработки → Расширения).
  • Не обновлена конфигурация базы данных после добавления расширения.
  • Конфликт с другими расширениями (посмотрите журнал применения расширений в Конфигураторе).
  • Пользователь работает в другом сеансе, где кэш форм ещё не обновлён (попросите его перезайти в базу).
Как сделать столбец редактируемым?

Для этого нужно:

  1. Убедиться, что столбец привязан к редактируемому реквизиту (не вычисляемому).
  2. В свойствах колонки установить Редактируемый = Истина.
  3. Для управляемых форм проверить, что реквизит доступен для изменения (в модуле объекта не должно быть ограничений).

Пример для программного добавления:

НоваяКолонка.Редактируемый = Истина;

НоваяКолонка.ТипЗначения = Тип("Строка");

Как добавить столбец с кнопкой в каждой строке?

Для этого используйте колонку типа ПолеКнопки:

КолонкаКнопка = Таблица.Колонки.Добавить("Действие");

КолонкаКнопка.ТипКолонки = Тип("ПолеКнопки");

КолонкаКнопка.Заголовок = "Действия";

КолонкаКнопка.Ширина = 30;

КолонкаКнопка.Кнопка.Подпись = "...";

КолонкаКнопка.Кнопка.Действие = "НаКнопкуДействие";

В модуле формы добавьте обработчик:

Процедура НаКнопкуДействие(Кнопка)

Сообщить("Нажата кнопка в строке: " + ТекущиеДанные.Ссылка);

КонецПроцедуры

Можно ли добавить столбец в форму мобильного приложения 1С?

Да, но с учётом особенностей мобильной платформы:

  • В мобильном клиенте используются управляемые формы, поэтому добавление столбца выполняется через код (см. Способ 2).
  • Учтите, что на маленьких экранах слишком много столбцов сделает таблицу нечитаемой. Лучше использовать ГоризонтальнаяПолосаПрокрутки.
  • Некоторые свойства оформления (например, ЦветФона) могут не поддерживаться в мобильной версии.

Перед выпуском обновления протестируйте форму на реальном мобильном устройстве — эмулятор в Конфигураторе не всегда точно отображает поведение.