Добавляем новую графу в формы, отчёты и печатные формы 1С

· 9 мин

Содержание

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

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

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

С чего начинается новая колонка: реквизит в метаданных

Данные негде хранить, пока для них нет реквизита. Поэтому любая «настоящая» графа (не вычисляемая на лету) начинается с добавления реквизита в метаданные.

Для табличной части документа путь такой:

  1. Откройте Конфигуратор и найдите в дереве Документы → ВашДокумент → Табличные части → Товары.
  2. На ветке Реквизиты табличной части нажмите правой кнопкой → Добавить.
  3. В палитре свойств задайте Имя (латиницей, без пробелов, например Скидка), Синоним (как увидит пользователь — «Скидка, %») и Тип.
  4. Для числовой графы сразу задайте Длину и Точность, для ссылки на справочник — конкретный тип СправочникСсылка.Номенклатура.
  5. Сохраните и обновите структуру базы: меню Конфигурация → Обновить конфигурацию базы данных или F7.

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

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

Для справочника логика та же, только ветка — Справочники → ВашСправочник → Реквизиты (реквизит самого справочника) или его табличная часть, если графа нужна в табличной части.

Отдельно продумайте тип будущей графы — переделывать его на боевой базе дорого. Для суммы или количества берите Число с запасом по длине; для выбора из списка — ПеречислениеСсылка вместо строки; для ссылки на объект — конкретный тип справочника или документа. Составной тип (несколько типов в одном поле) удобен, но усложняет запросы и отчёты, поэтому включайте его только когда графа действительно хранит разнородные значения.

Выводим графу колонкой на управляемой форме

Реквизит в метаданных есть, но на форме «Такси» он сам по себе не появится — таблицу на управляемой форме строят вручную. Добавить колонку несложно:

  1. Откройте форму: Документы → ВашДокумент → Формы → ФормаДокумента.
  2. В редакторе формы найдите панель Реквизиты (справа сверху) и раскройте основной реквизит Объект.
  3. Внутри него разверните Товары и найдите новый реквизит, например Скидка.
  4. Перетащите его мышью на элемент-таблицу Товары в дереве Элементы формы (слева).
  5. Платформа сама создаст колонку, связанную с этим реквизитом.

Порядок колонок меняется перетаскиванием внутри дерева Элементы. Ширину, заголовок, формат и доступность редактирования задают в свойствах созданной колонки.

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

После добавления проверьте порядок обхода полей при вводе с клавиатуры — новую колонку часто нужно поставить в логичное место, чтобы оператор не «перепрыгивал» через неё.

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

Как добавить колонку без Конфигуратора: «Изменить форму»

Если реквизит в конфигурации уже есть, а на форме он просто скрыт, колонку добавит сам пользователь — права разработчика не нужны.

На открытой форме нажмите кнопку Ещё (в правой части командной панели) → Изменить форму. Откроется дерево элементов формы. Отметьте галочкой скрытую колонку или через кнопку добавления полей выведите доступный реквизит, которого на форме пока нет. Настройка сохраняется персонально для пользователя.

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

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

Новая графа в отчёте на системе компоновки данных

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

Через Конфигуратор:

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

Готовый отчёт пользователь расширяет без разработки: кнопка Настройки (или Ещё → Изменить вариант) → раздел Выбранные поля → добавить доступное поле. Если нужного поля в списке доступных нет, значит его нет в запросе схемы — тогда без Конфигуратора или расширения не обойтись.

Есть и промежуточный вариант, когда поля в наборе данных нет, но считать его можно из уже выбранных. В настройках компоновки откройте Пользовательские поля и создайте поле-выражение (например, цена минус скидка) или поле-выбор по условию. Такая графа живёт в настройках отчёта, не требует правки запроса и доступна даже без расширения — это удобный способ добавить расчётную колонку силами пользователя.

Для числовой графы в отчёте почти всегда нужен итог. В настройках компоновки задайте для поля ресурс (вкладка Ресурсы) с функцией Сумма, иначе колонка выведется, но итоговая строка останется пустой.

Столбец в печатной форме: макет табличного документа

Печатная форма — это макет типа «Табличный документ», а не управляемая форма, поэтому графа добавляется иначе. Нужны два действия: добавить столбец в макет и вывести в него данные.

Добавление столбца в макете:

  1. Откройте макет печати (Макеты → Печать или одноимённый макет).
  2. Щёлкните правой кнопкой по заголовку столбца, рядом с которым нужна новая колонка → Добавить (столбец сдвинется, появится пустой).
  3. В ячейке новой колонки, в строке с данными (именованная область Строка), задайте текст ячейки типа Параметр и впишите имя параметра, например Скидка.
  4. Имя параметра должно совпадать с именем реквизита, который вы хотите вывести, — тогда заполнение сработает автоматически.

Вывод данных в коде модуля печати выглядит так:

Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Печать");
ТабДок = Новый ТабличныйДокумент;

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

ТабДок.Показать();

Метод Параметры.Заполнить(СтрокаТЧ) переносит в параметры области все значения реквизитов строки, у которых имя совпадает с именем параметра. Поэтому если параметр в макете назван Скидка и реквизит называется Скидка, колонка заполнится сама — отдельную строку кода под неё писать не нужно.

Если печатная форма типовая и стоит на поддержке, добавляйте столбец через расширение конфигурации: заимствуйте макет и модуль печати в расширение. Так новая графа переживёт очередное обновление, а не затрётся им.

Типичные ошибки при добавлении граф

Колонка «не появляется» или ведёт себя не так почти всегда по одной из этих причин.

Диагностика: выберите симптом

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

Когда колонок становится много: производительность

Одна-две графы на скорость не влияют. Проблемы начинаются, когда колонок десятки, особенно в динамических списках и больших отчётах.

Что реально тормозит:

  • 📉 Поля «через точку» в динамическом списке. Колонка вида Номенклатура.Производитель.Наименование заставляет список на каждую строку дёргать связанные таблицы. Выносите такие данные в основной запрос списка или откажитесь от колонки.
  • 🧮 Вычисляемые поля в отчёте. Много формул и соединений наборов данных в СКД — это нагрузка на каждую строку выборки. Переносите вычисления в запрос, где это возможно.
  • 🖨 Сотни столбцов в табличном документе. Широкая печатная форма держит в памяти всю матрицу ячеек. Если колонок очень много, подумайте о транспонировании (строки вместо столбцов) или выгрузке в файл вместо печати на экран.

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

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

Частые вопросы

Можно ли добавить графу, не снимая типовую конфигурацию с поддержки?
Да. Используйте расширение конфигурации (доступно с платформы 8.3.6): заимствуйте нужный объект, добавьте в него реквизит и доработайте форму или макет в расширении. Типовая конфигурация останется на поддержке и будет обновляться штатно.
Чем отличается реквизит табличной части от реквизита формы?
Реквизит табличной части хранится в базе — его значения сохраняются вместе с документом. Реквизит формы существует только пока открыта форма и в базу не записывается. Для постоянной колонки с данными нужен именно реквизит табличной части.
Почему новая колонка в отчёте не суммируется в итоге?
Числовое поле нужно объявить ресурсом компоновки. На вкладке Ресурсы схемы компоновки добавьте поле и выберите функцию Сумма — после этого появится итоговая строка.
Как изменить порядок или ширину уже добавленных колонок?
На управляемой форме порядок задаётся перетаскиванием элементов в дереве Элементы, ширина — свойством колонки. Пользователь меняет то же самое через Ещё → Изменить форму для себя.
Нужно ли дорабатывать проведение, если добавил графу в документ?
Если значение графы должно влиять на учёт (попадать в регистры), то да — само по себе поле на форме в движения не попадёт. Доработайте модуль проведения документа или соответствующую обработку заполнения движений.