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