Добавляем новую графу в формы, отчёты и печатные формы 1С
Содержание
Графа (колонка) в 1С добавляется на том уровне, где она нужна: для ввода данных — это реквизит табличной части плюс колонка на форме, для отчёта — поле в системе компоновки данных, для печати — столбец в макете табличного документа. Путь всегда начинается в Конфигураторе, а вывести уже существующий реквизит колонкой пользователь может и сам — через Ещё → Изменить форму.
Ниже разберём все четыре случая по отдельности. Сначала таблица, чтобы сразу понять, куда идти, потом — пошагово каждый вариант, ошибки и момент с производительностью, когда колонок становится много.
| Где нужна графа | Что добавляем | Где настраиваем |
|---|---|---|
| В документе или справочнике (ввод данных) | Реквизит табличной части + колонку формы | Конфигуратор: метаданные и форма |
| В отчёте | Поле в запрос и в выбранные поля | Схема компоновки данных (СКД) |
| В печатной форме | Столбец в макете + параметр ячейки | Табличный документ |
| Пользователю, без разработки | Вывод уже существующего реквизита | Ещё → Изменить форму, настройки отчёта |
С чего начинается новая колонка: реквизит в метаданных
Данные негде хранить, пока для них нет реквизита. Поэтому любая «настоящая» графа (не вычисляемая на лету) начинается с добавления реквизита в метаданные.
Для табличной части документа путь такой:
- Откройте Конфигуратор и найдите в дереве
Документы → ВашДокумент → Табличные части → Товары. - На ветке
Реквизитытабличной части нажмите правой кнопкой →Добавить. - В палитре свойств задайте
Имя(латиницей, без пробелов, напримерСкидка),Синоним(как увидит пользователь — «Скидка, %») иТип. - Для числовой графы сразу задайте
ДлинуиТочность, для ссылки на справочник — конкретный типСправочникСсылка.Номенклатура. - Сохраните и обновите структуру базы: меню
Конфигурация → Обновить конфигурацию базы данныхилиF7.
Обновление структуры базы данных требует монопольного доступа — платформа попросит завершить сеансы пользователей. Планируйте это на время, когда в базе никто не работает, и сделайте резервную копию до изменения.
Если конфигурация типовая и стоит на поддержке, не снимайте её с замка ради одной колонки. Добавьте реквизит через расширение конфигурации — это штатный механизм с версии платформы 8.3.6. В расширении вы заимствуете нужную табличную часть и добавляете собственный реквизит, а типовой код остаётся нетронутым и продолжает обновляться.
Для справочника логика та же, только ветка — Справочники → ВашСправочник → Реквизиты (реквизит самого справочника) или его табличная часть, если графа нужна в табличной части.
Отдельно продумайте тип будущей графы — переделывать его на боевой базе дорого. Для суммы или количества берите Число с запасом по длине; для выбора из списка — ПеречислениеСсылка вместо строки; для ссылки на объект — конкретный тип справочника или документа. Составной тип (несколько типов в одном поле) удобен, но усложняет запросы и отчёты, поэтому включайте его только когда графа действительно хранит разнородные значения.
Выводим графу колонкой на управляемой форме
Реквизит в метаданных есть, но на форме «Такси» он сам по себе не появится — таблицу на управляемой форме строят вручную. Добавить колонку несложно:
- Откройте форму:
Документы → ВашДокумент → Формы → ФормаДокумента. - В редакторе формы найдите панель
Реквизиты(справа сверху) и раскройте основной реквизитОбъект. - Внутри него разверните
Товарыи найдите новый реквизит, напримерСкидка. - Перетащите его мышью на элемент-таблицу
Товарыв деревеЭлементы формы(слева). - Платформа сама создаст колонку, связанную с этим реквизитом.
Порядок колонок меняется перетаскиванием внутри дерева Элементы. Ширину, заголовок, формат и доступность редактирования задают в свойствах созданной колонки.
Если колонка должна появляться по условию (например, только для определённого вида операции), не удаляйте её, а управляйте свойством Видимость программно в обработчике события формы. Так колонка остаётся частью формы и не ломает другие механизмы.
После добавления проверьте порядок обхода полей при вводе с клавиатуры — новую колонку часто нужно поставить в логичное место, чтобы оператор не «перепрыгивал» через неё.
Если новая графа числовая и по ней нужен итог прямо под таблицей, не считайте его отдельным реквизитом. У колонки формы есть свойство для подвала: в свойствах колонки включите показ подвала и укажите для него путь к данным и текст, а итог по колонке задаётся свойством ПутьКДаннымПодвала и функцией подытога. Платформа посчитает сумму по видимым строкам сама — ручной обработчик не нужен.
Как добавить колонку без Конфигуратора: «Изменить форму»
Если реквизит в конфигурации уже есть, а на форме он просто скрыт, колонку добавит сам пользователь — права разработчика не нужны.
На открытой форме нажмите кнопку Ещё (в правой части командной панели) → Изменить форму. Откроется дерево элементов формы. Отметьте галочкой скрытую колонку или через кнопку добавления полей выведите доступный реквизит, которого на форме пока нет. Настройка сохраняется персонально для пользователя.
Для динамических списков (журналы документов, списки справочников) работает тот же приём: через Изменить форму можно показать дополнительные колонки из полей основной таблицы списка.
Так выводятся только те реквизиты, которые уже заведены в метаданных. Совершенно новой графы, которой нет в конфигурации, пользователь через Изменить форму не создаст — её сначала добавляет разработчик.
Новая графа в отчёте на системе компоновки данных
В отчётах графа — это выбранное поле компоновки. Разработчик добавляет его в схему, пользователь — в настройках готового отчёта.
Через Конфигуратор:
- Откройте макет отчёта
ОсновнаяСхемаКомпоновкиДанных. - На вкладке
Наборы данныхв тексте запроса добавьте нужное поле в список выборки (перетащите его из дерева таблиц или допишите вручную). - Убедитесь, что поле появилось в списке полей набора данных ниже.
- Перейдите на вкладку
Настройкии добавьте поле вВыбранные поля, а если нужна детализация — в соответствующую группировку структуры.
Готовый отчёт пользователь расширяет без разработки: кнопка Настройки (или Ещё → Изменить вариант) → раздел Выбранные поля → добавить доступное поле. Если нужного поля в списке доступных нет, значит его нет в запросе схемы — тогда без Конфигуратора или расширения не обойтись.
Есть и промежуточный вариант, когда поля в наборе данных нет, но считать его можно из уже выбранных. В настройках компоновки откройте Пользовательские поля и создайте поле-выражение (например, цена минус скидка) или поле-выбор по условию. Такая графа живёт в настройках отчёта, не требует правки запроса и доступна даже без расширения — это удобный способ добавить расчётную колонку силами пользователя.
Для числовой графы в отчёте почти всегда нужен итог. В настройках компоновки задайте для поля ресурс (вкладка Ресурсы) с функцией Сумма, иначе колонка выведется, но итоговая строка останется пустой.
Столбец в печатной форме: макет табличного документа
Печатная форма — это макет типа «Табличный документ», а не управляемая форма, поэтому графа добавляется иначе. Нужны два действия: добавить столбец в макет и вывести в него данные.
Добавление столбца в макете:
- Откройте макет печати (
Макеты → Печатьили одноимённый макет). - Щёлкните правой кнопкой по заголовку столбца, рядом с которым нужна новая колонка →
Добавить(столбец сдвинется, появится пустой). - В ячейке новой колонки, в строке с данными (именованная область
Строка), задайте текст ячейки типаПараметри впишите имя параметра, напримерСкидка. - Имя параметра должно совпадать с именем реквизита, который вы хотите вывести, — тогда заполнение сработает автоматически.
Вывод данных в коде модуля печати выглядит так:
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Печать");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
ТабДок.Показать();
Метод Параметры.Заполнить(СтрокаТЧ) переносит в параметры области все значения реквизитов строки, у которых имя совпадает с именем параметра. Поэтому если параметр в макете назван Скидка и реквизит называется Скидка, колонка заполнится сама — отдельную строку кода под неё писать не нужно.
Если печатная форма типовая и стоит на поддержке, добавляйте столбец через расширение конфигурации: заимствуйте макет и модуль печати в расширение. Так новая графа переживёт очередное обновление, а не затрётся им.
Типичные ошибки при добавлении граф
Колонка «не появляется» или ведёт себя не так почти всегда по одной из этих причин.
Реквизиты на элемент-таблицу.Выбранные поля.Ресурсы задайте для него функцию Сумма.F7 (Обновить конфигурацию базы данных), это требует монопольного доступа.Отдельно стоит помнить про регистры: если данные новой графы должны попадать в учёт (например, скидка — в движения по регистру накопления), одной колонки на форме мало. Нужно доработать проведение документа, иначе значение будет вводиться, но никуда не записываться.
Когда колонок становится много: производительность
Одна-две графы на скорость не влияют. Проблемы начинаются, когда колонок десятки, особенно в динамических списках и больших отчётах.
Что реально тормозит:
- 📉 Поля «через точку» в динамическом списке. Колонка вида
Номенклатура.Производитель.Наименованиезаставляет список на каждую строку дёргать связанные таблицы. Выносите такие данные в основной запрос списка или откажитесь от колонки. - 🧮 Вычисляемые поля в отчёте. Много формул и соединений наборов данных в СКД — это нагрузка на каждую строку выборки. Переносите вычисления в запрос, где это возможно.
- 🖨 Сотни столбцов в табличном документе. Широкая печатная форма держит в памяти всю матрицу ячеек. Если колонок очень много, подумайте о транспонировании (строки вместо столбцов) или выгрузке в файл вместо печати на экран.
Для тяжёлого динамического списка полезно задать основную таблицу и использовать поля только из неё, а дополнительные данные подтягивать настраиваемым полем компоновки. Это заметно разгружает прокрутку длинных списков.
Прежде чем бороться за скорость, измерьте: включите замер производительности в Конфигураторе или посмотрите на технологический журнал. Часто виновата не сама колонка, а неоптимальный запрос за ней.
Частые вопросы
Можно ли добавить графу, не снимая типовую конфигурацию с поддержки?
Чем отличается реквизит табличной части от реквизита формы?
Почему новая колонка в отчёте не суммируется в итоге?
Ресурсы схемы компоновки добавьте поле и выберите функцию Сумма — после этого появится итоговая строка.Как изменить порядок или ширину уже добавленных колонок?
Элементы, ширина — свойством колонки. Пользователь меняет то же самое через Ещё → Изменить форму для себя.