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