Новая колонка в 1С: табличная часть, форма, отчёт и список
Содержание
Чтобы добавить столбец в табличную часть документа 1С, в Конфигураторе создают новый реквизит табличной части, перетаскивают его на форму и обновляют конфигурацию базы данных (F7). Если колонка в программе уже есть, но скрыта, Конфигуратор не нужен: хватит команды Ещё → Изменить форму и одной галочки.
Типичная просьба бухгалтера: «В реализации нужна колонка с номером партии» или «Покажите ИНН контрагента прямо в списке». Это разные задачи. В первой меняется структура данных, во второй — только отображение. Отдельно стоят отчёты на СКД, расширения и программное добавление колонки. Всё описано для платформы 8.3 и интерфейса «Такси», механизм общий для всех конфигураций.
С чего начать: какую таблицу вы меняете
Под словом «таблица» в 1С скрываются пять разных объектов. Путь к новой колонке у каждого свой.
| Что за таблица | Где хранятся данные | Как добавить колонку | Нужен Конфигуратор |
|---|---|---|---|
| Табличная часть документа или справочника | В базе | Новый реквизит табличной части | Да |
| Колонка уже есть, но скрыта | В базе | Ещё → Изменить форму | Нет |
| Список документов или справочника | В базе (динамический список) | Поле реквизита или поле запроса | Иногда |
| Отчёт | Считается при формировании | Поле в варианте отчёта | Чаще нет |
| Таблица значений в обработке | В памяти | Колонка в коде или в реквизите формы | Да |
Сначала проверьте самое простое. Откройте документ, нажмите Ещё → Изменить форму и раскройте группу с табличной частью. Типовые конфигурации прячут часть колонок: счета учёта, страну происхождения, номер ГТД
. Если нужное поле там есть — включите флажок и нажмите «ОК». Задача решена без программиста.
Добавляем реквизит в табличную часть через Конфигуратор
Это основной способ, когда в документе нужно хранить новые данные. Пример: в «Реализацию товаров и услуг» добавляем колонку «Номер партии» типа Строка длиной 30.
Перед изменением структуры сделайте резервную копию базы. Выгрузите её через Администрирование → Выгрузить информационную базу в Конфигураторе. Если что-то пойдёт не так, файл .dt вернёт базу в исходное состояние.
Шаг 1. Откройте конфигурацию и проверьте поддержку
- Запустите 1С в режиме «Конфигуратор».
- Откройте дерево:
Конфигурация → Открыть конфигурацию. - Найдите объект:
Документы → РеализацияТоваровУслуг.
Если значки объектов серые с замочком, конфигурация на поддержке и редактировать её нельзя. Включить правку можно в Конфигурация → Поддержка → Настройка поддержки. Но после этого каждое обновление типовой будет идти через сравнение и объединение. Для типовой БП 3.0 или ЗУП 3.1 лучше выбрать расширение, о нём ниже.
Шаг 2. Создайте реквизит табличной части
- Дважды щёлкните по документу, откроется окно редактирования объекта.
- Перейдите на вкладку «Данные».
- Выделите нужную табличную часть, например «Товары».
- Нажмите кнопку добавления реквизита табличной части (значок с плюсом над списком).
- В палитре свойств задайте имя, синоним и тип.
Как заполнить свойства:
- 🏷 Имя — без пробелов, с большой буквы на каждом слове:
НомерПартии. - 📝 Синоним — то, что увидит пользователь в заголовке колонки: «Номер партии».
- 🔢 Тип — Строка (длина 30), Число (длина и точность), Дата, ссылка на справочник.
- ✅ Проверка заполнения — «Выдавать ошибку», если без значения документ не должен записываться.
Для числовых колонок с деньгами берите длину 15 и точность 2. Для количества — 15 и 3. Так новые колонки будут вести себя как типовые.
Шаг 3. Обновите конфигурацию базы данных
Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных. Платформа покажет список изменений, примите его.
Добавление реквизита меняет структуру таблиц базы. Если в ней работают пользователи, Конфигуратор предложит динамическое обновление или попросит завершить сеансы. Надёжнее делать это вне рабочего времени: попросите коллег выйти из программы заранее, иначе их сеансы придётся прервать.
После обновления реквизит уже существует в базе, но на форме документа его пока нет. Это следующий шаг.
Как вывести новую колонку на форму документа
Управляемая форма не подхватывает новые реквизиты сама. Колонку нужно поставить на форму вручную.
- В окне объекта перейдите на вкладку «Формы» и откройте форму документа (обычно
ФормаДокумента). - В правой верхней панели «Реквизиты» раскройте
Объект → Товары. - Найдите новый реквизит
НомерПартии. - Перетащите его мышью в левую верхнюю панель «Элементы», внутрь элемента таблицы
Товары. - Поставьте колонку в нужное место — перетаскиванием выше или ниже других полей.
- Сохраните и снова обновите конфигурацию (
F7).
Полезные свойства колонки
Выделите новый элемент в дереве «Элементы» и откройте палитру свойств.
| Свойство | Что даёт |
|---|---|
| Заголовок | Текст в шапке колонки, если он должен отличаться от синонима |
| Ширина | Ширина колонки в символах |
| Только просмотр | Запрет ручного ввода, удобно для расчётных значений |
| Видимость | Если снять флажок, колонка будет скрыта, но доступна в Ещё → Изменить форму |
| Подсказка ввода | Серый текст внутри пустого поля |
Если колонку надо заполнять автоматически, например сумму с наценкой, обработчик пишут в модуле формы на событие ПриИзменении соседнего поля. Без кода колонка будет обычным полем ручного ввода.
Новая колонка не появится в печатной форме и в проводках сама. Макет печати и обработку проведения меняют отдельно.
Колонка в отчёте: поле варианта и вычисляемое поле
Отчёты в типовых конфигурациях построены на системе компоновки данных (СКД). Данные в них не хранятся, поэтому столбец добавляют в настройки, а не в структуру базы.
В пользовательском режиме
Подходит, когда нужное поле уже есть в наборе данных отчёта.
- Откройте отчёт и выполните
Ещё → Прочее → Изменить вариант отчёта. - В дереве структуры выделите группировку или «Детальные записи».
- На вкладке «Поля» нажмите «Добавить» и выберите поле из списка доступных.
- Нажмите «Завершить редактирование» и сформируйте отчёт.
Поля связанных объектов раскрываются через плюсик. Так в отчёт по продажам можно вывести, например, ИНН покупателя без единой строки кода.
Поле-выражение: своя формула
Если нужна расчётная колонка (наценка в процентах, сумма без НДС), в том же редакторе варианта есть вкладка «Пользовательские поля».
- Нажмите «Добавить» и выберите «Новое поле-выражение».
- Задайте заголовок, например «Наценка, %».
- В выражении детальных записей напишите формулу через имена полей.
- Добавьте новое поле на вкладке «Поля».
Пример выражения:
ВЫБОР КОГДА Себестоимость = 0 ТОГДА 0 ИНАЧЕ (Выручка - Себестоимость) / Себестоимость * 100 КОНЕЦ
Проверка на ноль обязательна. Без неё строка с нулевой себестоимостью сломает итог.
В Конфигураторе: вычисляемое поле СКД
Для своих отчётов поле добавляют прямо в схему:
- 📐 вкладка «Вычисляемые поля» — путь к данным, выражение и заголовок;
- ➕ вкладка «Ресурсы» — если колонку надо суммировать в итогах;
- ⚙️ вкладка «Настройки» — поле добавляют в выбранные поля нужной группировки.
Частая ошибка: поле создали, а в «Выбранные поля» не добавили. Отчёт формируется, но колонки нет.
Новая колонка через расширение конфигурации
Расширение — способ доработать типовую конфигурацию, не снимая её с поддержки. Обновления типовой ставятся как обычно, доработка лежит отдельно. Механизм появился в 8.3.6, а на актуальных версиях 8.3 расширение умеет добавлять свои реквизиты в заимствованные объекты, в том числе в табличные части.
Порядок действий
- В Конфигураторе:
Конфигурация → Расширения конфигурации. - Создайте новое расширение, назначение — «Дополнение». Задайте понятное имя и префикс, например
Партии_. - Откройте дерево расширения. В основной конфигурации найдите документ, правой кнопкой выберите «Добавить в расширение».
- В расширении у заимствованного документа добавьте реквизит в табличную часть «Товары». Имя начните с префикса:
Партии_НомерПартии. - Заимствуйте форму документа тем же способом и перетащите новый реквизит в таблицу, как описано выше.
- Обновите конфигурацию базы данных (
F7).
Расширение, которое добавляет реквизиты, меняет структуру данных. Поэтому его применение тоже требует обновления базы.
Что учесть
- 🔁 После обновления типовой проверяйте, что расширение подключилось без ошибок.
- 🧩 Префикс в именах защищает от совпадения с реквизитом, который фирма-разработчик добавит в следующем релизе.
- 🗂 В БП 3.0 загруженные расширения видны в
Администрирование → Печатные формы, отчеты и обработки → Расширения. - 🚫 Удаление расширения удаляет и данные его реквизитов. Перед удалением сохраните копию базы.
Динамические списки и таблицы в обработках
Колонка в списке документов
Список документов — это динамический список. Он показывает данные, которые читает запросом, поэтому колонку добавляют в выборку.
Без Конфигуратора. В форме списка выполните Ещё → Изменить форму. Для динамических списков там можно добавить поля, в том числе реквизиты связанных объектов: раскройте Контрагент и отметьте ИНН. Колонка появится только у вас, другие пользователи её не увидят.
В Конфигураторе, без произвольного запроса. Откройте форму списка, в панели «Реквизиты» раскройте Список. Реквизиты связанных объектов раскрываются через точку, например Список.Контрагент.ИНН. Перетащите поле в элемент таблицы Список. Колонка будет у всех.
С произвольным запросом. Если в свойствах реквизита Список стоит флажок «Произвольный запрос», поле сначала добавляют в запрос.
- Выделите реквизит
Списоки откройте его настройку из палитры свойств. - Откройте текст запроса в конструкторе и добавьте поле, задав ему понятный псевдоним.
- Сохраните запрос. Поле появится в дереве реквизитов
Список. - Перетащите его в элемент таблицы.
Каждое соединение в запросе динамического списка замедляет его на больших базах. Для поля из связанного справочника достаточно разыменования через точку, отдельное соединение не нужно.
Таблица значений в обработке
В своей обработке таблица на форме обычно привязана к реквизиту формы типа ТаблицаЗначений. Колонку добавляют в этот реквизит: правой кнопкой по нему в панели «Реквизиты» — «Добавить колонку». Затем колонку перетаскивают в элемент таблицы.
В коде на сервере колонку таблицы значений создают так:
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "Номенклатура");
Таблица.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)), "Количество", 10);
Если колонка нужна на уже открытой форме и заранее неизвестна, используют ИзменитьРеквизиты и добавляют элемент формы:
&НаСервере
Процедура ДобавитьКолонкуКомментарий()
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Комментарий",
Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)),
"ТаблицаДанных", "Комментарий"));
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
НовоеПоле = Элементы.Добавить("ТаблицаДанныхКомментарий", Тип("ПолеФормы"), Элементы.ТаблицаДанных);
НовоеПоле.Вид = ВидПоляФормы.ПолеВвода;
НовоеПоле.ПутьКДанным = "ТаблицаДанных.Комментарий";
КонецПроцедуры
Здесь ТаблицаДанных — имя реквизита формы и одноимённого элемента таблицы. Без второй половины кода реквизит создастся, но на экране колонки не будет.
Почему колонка не появилась: разбор ошибок
Ещё одна ловушка — правка формы только в одной конфигурации. Если база обменивается данными с другой (например, БП с УТ), новый реквизит в правилах обмена не участвует. Его значения не уйдут в другую базу, пока правила обмена не доработают.