Добавление столбца в таблицу формы 1С:Предприятие — одна из самых частых задач при доработке конфигураций. Казалось бы, простая операция, но на практике она требует знания нюансов работы с формой элемента, формой списка и программным кодом. Ошибки здесь могут привести к некорректному отображению данных, падению производительности или даже сбоям в работе программы.
В этой статье мы разберём все возможные способы добавления столбца — от ручного редактирования в Конфигураторе до написания кода на встроенном языке. Особое внимание уделим типичным ошибкам, которые допускают даже опытные разработчики, и покажем, как их избежать. Материал актуален для 1С:Предприятие 8.3 (включая последние релизы), но большинство методов применимы и к более ранним версиям платформы.
Независимо от того, работаете ли вы с управляемыми формами или обычными формами, после прочтения этой статьи вы сможете уверенно добавлять столбцы в любые табличные части — будь то справочники, документы или отчёты.
1. Подготовка: что нужно знать перед добавлением столбца
Прежде чем приступать к изменению формы, важно понять, с каким именно объектом вы работаете. В 1С таблицы могут находиться в разных местах:
- 📋 Форма списка (например, список справочника «Номенклатура»)
- 📄 Форма элемента (карточка документа или справочника с табличной частью)
- 📊 Отчёт или обработка (таблицы в отчётах типа «Анализ субконто»)
- 🖥️ Управляемая форма (современный интерфейс, начиная с 8.2)
- 🗃️ Обычная форма (устаревший формат, но ещё встречается в legacy-системах)
От типа формы зависит не только способ добавления столбца, но и возможные ограничения. Например, в управляемых формах нельзя напрямую редактировать структуру таблицы через Конфигуратор — требуется программный код. А в обычных формах некоторые свойства столбцов (например, Ширина) могут быть зафиксированы и не поддаваться изменению через интерфейс.
Также проверьте:
- 🔒 Есть ли у вас права на изменение конфигурации (режим «Конфигуратор»)
- 🔄 Не заблокирована ли конфигурация для изменений (в меню
Конфигурация → Поддержка → Настройка поддержки) - 📦 Есть ли резервная копия базы (добавление столбца может повлиять на производительность)
2. Способ 1: Добавление столбца через Конфигуратор (для обычных форм)
Если вы работаете с обычной формой (не управляемой), самый простой способ — редактирование прямо в Конфигураторе. Этот метод подходит для форм элементов справочников, документов или табличных частей.
Пошаговая инструкция:
- Откройте Конфигуратор и найдите нужный объект (например,
Справочники → Номенклатура). - Перейдите на вкладку
Формыи откройте форму элемента или списка. - Найдите таблицу, в которую нужно добавить столбец (обычно это элемент
ТабличноеПоле). - Кликните правой кнопкой по таблице и выберите
Редактировать форму. - В открывшемся окне найдите вкладку
Колонкии нажмитеДобавить. - Задайте свойства новой колонки:
- 🔹
Заголовок— название столбца, которое будет видно пользователям - 🔹
Данные— путь к реквизиту (например,Ссылка.Артикул) - 🔹
Тип значения— должен совпадать с типом реквизита (строка, число, дата и т.д.)
- 🔹
- Сохраните изменения (
Файл → Сохранить) и обновите конфигурацию базы (Конфигурация → Обновить конфигурацию базы данных). - 🔧 Код пишется в модуле формы (вкладка
Модульв Конфигураторе) - 🔄 Для динамического обновления данных используйте
ДинамическийСписокЗначений - 📌 Если столбец должен отображать данные из реквизита, укажите путь в свойстве
ПутьКДанным(например,НоваяКолонка.ПутьКДанным = "Ссылка.Артикул")
После обновления столбец появится в форме. Если он не отображается — проверьте, не скрыт ли он свойством Видимость или не установлен ли фильтр на таблицу.
Связан ли столбец с существующим реквизитом|
Указан ли корректный тип данных|
Задан ли заголовок (не оставляйте пустым)|
Проверена ли видимость столбца|
Сделан ли бэкап конфигурации-->
3. Способ 2: Программное добавление столбца (универсальный метод)
Для управляемых форм или когда нужно динамически добавлять столбцы (например, в зависимости от прав пользователя), используется программный код. Этот метод работает во всех версиях 1С 8.3 и позволяет гибко настраивать отображение.
Пример кода для добавления столбца в таблицу формы элемента:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Получаем таблицу по имени
Таблица = ЭлементыФормы.ТабличнаяЧастьТовары;
// Добавляем новую колонку
НоваяКолонка = Таблица.Колонки.Добавить();
НоваяКолонка.Имя = "НоваяКолонка";
НоваяКолонка.Заголовок = "Прибыль, %";
НоваяКолонка.ТипЗначения = Тип("Число");
НоваяКолонка.Ширина = 80;
// Привязываем данные (например, рассчитываем на лету)
НоваяКолонка.Данные = Новый ДинамическийСписокЗначений(Товары);
НоваяКолонка.Выражение = "ВычислитьПрибыль(Ссылка)";
КонецПроцедуры
Функция ВычислитьПрибыль(Ссылка)
Возврат Ссылка.ЦенаПродажи - Ссылка.ЦенаЗакупа;
КонецФункции
Ключевые моменты:
Для форм списка логика аналогична, но вместо ЭлементыФормы.ТабличнаяЧасть используется ЭлементыФормы.Список.
Если столбец не отображается после добавления через код, проверьте, не сбрасывается ли он при обновлении формы. В таком случае перенесите код в процедуру ПриОткрытии вместо ПриСозданииНаСервере.
4. Способ 3: Добавление столбца через расширение конфигурации
Если вы работаете с типовой конфигурацией (например, 1С:Бухгалтерия 3.0 или 1С:УТ 11) и не хотите снимать её с поддержки, лучший вариант — использовать расширения. Это позволяет добавлять столбцы без изменения исходного кода.
Алгоритм действий:
- В Конфигураторе откройте
Конфигурация → Расширения конфигурации → Добавить. - Создайте новое расширение и укажите основную конфигурацию, к которой оно будет применяться.
- Найдите нужную форму в дереве объектов расширения (например,
Документ.РеализацияТоваровУслуг.ФормаДокумента). - Скопируйте форму в расширение (правая кнопка →
Копировать в расширение). - В скопированной форме добавьте столбец так же, как в Способе 1.
- Сохраните расширение и обновите конфигурацию базы.
Преимущества этого метода:
- ✅ Не снимает конфигурацию с поддержки
- ✅ Легко откатиться к исходному состоянию
- ✅ Можно распределять расширения между базами
Ограничение: не все свойства форм можно изменить через расширения. Например, иногда не получается модифицировать Действия или Команды формы.
Что делать, если расширение не применяется?
Если после сохранения расширения изменения не отображаются, проверьте:
1. Подключено ли расширение к базе (в Администрирование → Печатные формы, отчёты и обработки → Расширения).
2. Нет ли конфликтов с другими расширениями (посмотрите журнал применения расширений).
3. Обновлена ли конфигурация базы данных после добавления расширения.
5. Способ 4: Добавление столбца в отчёт или обработку
Отчёты и обработки в 1С часто содержат таблицы, которые тоже требуют доработки. Здесь добавление столбца зависит от того, как построен отчёт:
| Тип отчёта | Способ добавления столбца | Пример |
|---|---|---|
| Табличный документ | Редактирование макета или программное добавление колонки | ТабличныйДокумент.ВывестиСтолбец("НовыйСтолбец", Тип("Число")) |
| СКД (Система Компоновки Данных) | Изменение схемы компоновки или добавление вычисляемого поля | В настройках СКД добавить поле Выражение с формулой |
| Динамический список | Добавление колонки в настройках списка или через код | ДинамическийСписок.Колонки.Добавить("Прибыль") |
Для СКД (наиболее распространённый вариант) пошаговая инструкция:
- Откройте отчёт в Конфигураторе (например,
Отчёты → АнализСубконто). - Перейдите на вкладку
Схема компоновки данных. - В разделе
Наборы данныхпроверьте, что нужное поле есть в запросе (если нет — добавьте его в текст запроса). - В разделе
РесурсыилиПолядобавьте новое поле (если оно вычисляемое, укажите формулу). - В настройках отчёта (
Настройки → Структура) добавьте столбец в таблицу.
Если столбец должен отображать вычисляемые данные (например, процент выполнения плана), используйте Вычисляемые поля в СКД:
Выражение = "Выручка / План * 100"
В отчётах на СКД новые столбцы автоматически не появляются в пользовательских настройках. Чтобы они отображались у всех пользователей, добавьте их в Настройки по умолчанию (вкладка Основные настройки).
6. Способ 5: Добавление столбца через внешнюю обработку
Если у вас нет доступа к Конфигуратору или нужно временно добавить столбец (например, для тестирования), можно использовать внешнюю обработку. Этот метод подходит для 1С:Предприятие в режиме 1С:Предприятие (без запуска Конфигуратора).
Инструкция:
- Создайте новую обработку (
Файл → Новый → Обработка). - Добавьте на форму элемент
ТабличноеПоле. - В модуле обработки напишите код для заполнения таблицы данными из нужного объекта (например, справочника):
Процедура ЗаполнитьТаблицу(Команда)
Таблица = ЭлементыФормы.ТаблицаТоваров;
Таблица.Колонки.Очистить();
// Добавляем стандартные колонки
КолонкаНаименование = Таблица.Колонки.Добавить("Наименование");
КолонкаНаименование.Заголовок = "Наименование";
// Добавляем новую колонку
КолонкаПрибыль = Таблица.Колонки.Добавить("Прибыль");
КолонкаПрибыль.Заголовок = "Прибыль, %";
КолонкаПрибыль.ТипЗначения = Тип("Число");
// Заполняем данными
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Наименование = Выборка.Наименование;
НоваяСтрока.Прибыль = Выборка.ЦенаПродажи - Выборка.ЦенаЗакупа;
КонецЦикла;
КонецПроцедуры
Чтобы использовать обработку:
- Сохраните её как файл
.epf. - В 1С:Предприятие откройте
Файл → Открытьи выберите сохранённую обработку. - Запустите процедуру заполнения таблицы.
Этот метод удобен для разовых задач, но не подходит для постоянных изменений — при обновлении конфигурации обработку придётся запускать заново.
Чтобы обработка автоматически подхватывала изменения в справочнике, добавьте в форму кнопку Обновить и свяжите её с процедурой заполнения таблицы.
7. Типичные ошибки и как их избежать
Даже опытные разработчики иногда сталкиваются с проблемами при добавлении столбцов. Вот самые распространённые ошибки и способы их решения:
- 🚫 Столбец не отображается
Причины:
- Не указан
ПутьКДаннымили он неверный (проверьте через точку:Ссылка.Реквизит) - Столбец скрыт свойством
Видимость = Ложь - В управляемых формах не вызвана процедура
ПриСозданииНаСервере
- Не указан
- 🚫 Ошибка типа данных
Если в столбце отображается
#Неопределённоили возникает ошибка привязки, проверьте:- Совпадает ли
ТипЗначенияколонки с типом реквизита (например, не пытаетесь вывести число в столбце типаСтрока) - Для вычисляемых полей указан ли корректный возвращаемый тип в функции
- Совпадает ли
- 🚫 Медленная работа формы после добавления столбца
Если форма стала тормозить:
- Проверьте, не добавили ли вы столбец с тяжёлым запросом (например, вычисление по всем строкам таблицы)
- Для динамических данных используйте
ОтложенноеВычисление = Истина - Уменьшите ширину столбца или отключите
АвтоШирина
Критическая ошибка: если после добавления столбца форма перестаёт открываться, скорее всего, нарушена структура таблицы (например, дублирующееся имя колонки или неверный путь к данным). В этом случае восстановите форму из резервной копии или удалите проблемный столбец через Конфигуратор в режиме отладки.
Как отладить ошибку привязки данных?
Если при открытии формы возникает ошибка типа "Не найден реквизит 'ИмяРеквизита'", выполните следующие шаги:
1. Проверьте, существует ли реквизит в объекте (откройте структуру справочника/документа в Конфигураторе).
2. Убедитесь, что путь к данным указан верно (например, Ссылка.Реквизит, а не просто Реквизит).
3. Если реквизит добавлен недавно, обновите конфигурацию базы данных.
4. В управляемых формах проверьте, что реквизит доступен на сервере (иногда требуется добавить его в модуль объекта).
8. Оптимизация отображения столбцов
Добавление столбца — это только половина дела. Чтобы таблица оставалась удобной для пользователей, важно правильно настроить отображение:
| Параметр | Рекомендации | Пример кода |
|---|---|---|
| Ширина столбца | Установите фиксированную ширину для критичных столбцов (например, для артикулов). Для остальных используйте АвтоШирина = Истина. |
НоваяКолонка.Ширина = 100 |
| Цвет фона | Выделяйте цветом важные данные (например, отрицательные остатки красным). | НоваяКолонка.ЦветФона = RGB(255, 200, 200) |
| Форматирование | Для чисел укажите количество знаков после запятой, для дат — формат отображения. | НоваяКолонка.Формат = "ЧДЦ=2" |
| Условное оформление | Настройте правила подсветки (например, если значение > 1000, сделать текст жирным). | Используйте событие ПриАктивизацииСтроки |
Пример кода для условного оформления:
Процедура ТабличнаяЧастьТоварыПриАктивизацииСтроки(Элемент)
ТекущаяСтрока = ЭлементыФормы.ТабличнаяЧастьТовары.ТекущаяСтрока;
Если ТекущаяСтрока.Количество < 0 Тогда
ТекущаяСтрока.ЦветТекста = RGB(255, 0, 0); // Красный цвет для отрицательных значений
КонецЕсли;
КонецПроцедуры
Для управляемых форм настройка условного оформления делается через свойство УсловноеОформление таблицы. Там можно создать несколько правил с разными стилями.
Если в таблице много столбцов, используйте горизонтальную прокрутку (Таблица.ПолосаПрокрутки = ВертикальнаяИГоризонтальная) и группируйте связанные столбцы с помощью заголовков (ГруппаКолонок).
FAQ: Ответы на частые вопросы
Можно ли добавить столбец в форму без доступа к Конфигуратору?
Да, но с ограничениями. Вы можете:
- Использовать внешнюю обработку (см. Способ 5), но изменения будут временными.
- Если у вас есть права администратора в режиме 1С:Предприятие, можно попробовать изменить форму через
Все функции → Редактировать форму(не во всех конфигурациях). - Для отчётов на СКД иногда помогает настройка
Пользовательские настройки(добавление столбца вручную через интерфейс).
Для постоянных изменений доступ к Конфигуратору обязателен.
Почему после добавления столбца в расширении он не появляется у пользователей?
Вероятные причины:
- Расширение не подключено к базе (проверьте в
Администрирование → Печатные формы, отчёты и обработки → Расширения). - Не обновлена конфигурация базы данных после добавления расширения.
- Конфликт с другими расширениями (посмотрите журнал применения расширений в Конфигураторе).
- Пользователь работает в другом сеансе, где кэш форм ещё не обновлён (попросите его перезайти в базу).
Как сделать столбец редактируемым?
Для этого нужно:
- Убедиться, что столбец привязан к редактируемому реквизиту (не вычисляемому).
- В свойствах колонки установить
Редактируемый = Истина. - Для управляемых форм проверить, что реквизит доступен для изменения (в модуле объекта не должно быть ограничений).
Пример для программного добавления:
НоваяКолонка.Редактируемый = Истина;
НоваяКолонка.ТипЗначения = Тип("Строка");
Как добавить столбец с кнопкой в каждой строке?
Для этого используйте колонку типа ПолеКнопки:
КолонкаКнопка = Таблица.Колонки.Добавить("Действие");
КолонкаКнопка.ТипКолонки = Тип("ПолеКнопки");
КолонкаКнопка.Заголовок = "Действия";
КолонкаКнопка.Ширина = 30;
КолонкаКнопка.Кнопка.Подпись = "...";
КолонкаКнопка.Кнопка.Действие = "НаКнопкуДействие";
В модуле формы добавьте обработчик:
Процедура НаКнопкуДействие(Кнопка)
Сообщить("Нажата кнопка в строке: " + ТекущиеДанные.Ссылка);
КонецПроцедуры
Можно ли добавить столбец в форму мобильного приложения 1С?
Да, но с учётом особенностей мобильной платформы:
- В мобильном клиенте 1С используются управляемые формы, поэтому добавление столбца выполняется через код (см. Способ 2).
- Учтите, что на маленьких экранах слишком много столбцов сделает таблицу нечитаемой. Лучше использовать
ГоризонтальнаяПолосаПрокрутки. - Некоторые свойства оформления (например,
ЦветФона) могут не поддерживаться в мобильной версии.
Перед выпуском обновления протестируйте форму на реальном мобильном устройстве — эмулятор в Конфигураторе не всегда точно отображает поведение.