К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как изменить представление справочника в 1С

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

Представление справочника — это текст, который пользователь видит в полях ввода, списках, отчётах и печатных формах, когда в данных хранится ссылка на элемент справочника. По умолчанию 1С показывает наименование или код, но часто этого недостаточно: требуется вывести наименование вместе с артикулом, ИНН контрагента или статусом элемента.

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

Важно понимать: представление — это только отображение, а не хранимые данные. Сама ссылка на элемент не меняется, поэтому доработка относительно безопасна, но затрагивает все места, где ссылка выводится пользователю.

Что такое представление справочника и где оно используется

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

Представление выводится в полях ввода после выбора значения, в табличных частях документов, в списках, отчётах СКД, при расшифровке ячеек и в печатных формах, если разработчик не переопределил вывод. Это значит, что одна настройка меняет отображение сразу во многих местах системы.

Отдельно существует синоним самого справочника — например, «Номенклатура» или «Контрагенты». Его меняют в свойстве «Синоним» объекта конфигурации, и это не то же самое, что представление элементов. Путать эти понятия — частая причина того, что доработка делается не там.

Как изменить основное представление в конфигураторе без кода

Самый простой способ — переключить стандартное представление. Откройте конфигуратор, найдите нужный справочник в дереве конфигурации и откройте его свойства (правый клик — «Свойства» или через палитру свойств).

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

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

Порядок действий
  1. 1
    Откройте конфигуратор и найдите справочник в дереве конфигурации
  2. 2
    Откройте палитру свойств объекта
  3. 3
    Установите «Основное представление»: в виде кода или наименования
  4. 4
    Сохраните конфигурацию и обновите конфигурацию базы данных (F7)
  5. 5
    Откройте список справочника в режиме Предприятие и проверьте отображение ссылок в документах

Программное изменение представления через модуль менеджера

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

Внутри обработчика нужно установить параметр СтандартнаяОбработка в Ложь и заполнить параметр Представление собственным текстом. Данные элемента получают через запрос или через реквизиты объекта по ссылке.

// Модуль менеджера справочника "Номенклатура"

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Представление = Строка(Данные.Наименование)

+ ?(ЗначениеЗаполнено(Данные.Артикул), " (" + Данные.Артикул + ")", "");

КонецПроцедуры

Обратите внимание: в параметре Данные доступны только те поля, которые платформа сочла нужными. Состав зависит от контекста вызова, поэтому надёжнее получать дополнительные реквизиты явным запросом по ссылке, особенно если реквизитов несколько.

bsl
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Запрос = Новый Запрос("ВЫБРАТЬ Наименование, Артикул ИЗ Справочник.Номенклатура ГДЕ Ссылка = &Ссылка");
    Запрос.УстановитьПараметр("Ссылка", Данные.Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Представление = Выборка.Наименование + " [" + Выборка.Артикул + "]";
    КонецЕсли;
КонецПроцедуры

Особенности для управляемых и обычных форм

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

Для полей ввода существует связанный механизм — обработка получения данных выбора (ОбработкаПолученияДанныхВыбора). Она управляет тем, что пользователь видит в выпадающем списке при вводе, и часто дорабатывается вместе с представлением, чтобы картина была единообразной: и в списке выбора, и после выбора показывался одинаковый формат.

В отчётах на СКД представление может переопределяться набором данных и вычисляемыми полями самого отчёта. Если в отчёте отображается «старое» представление, а в списках — новое, проверьте, не переопределён ли вывод поля в схеме компоновки.

Как проверить результат и какие ошибки встречаются

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

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

Другая частая проблема — обращение к реквизиту, которого нет в параметре Данные, что приводит к ошибке при открытии списка. Также опасно формировать представление на языке, не учитывая помеченные на удаление элементы: для них иногда требуется особая пометка в тексте, чтобы пользователь видел состояние объекта.

Типичные ошибки
01
Не установлено СтандартнаяОбработка = Ложь — платформа игнорирует собственное представление
02
Обращение к реквизиту, отсутствующему в параметре Данные, — ошибка при открытии списков
03
Запрос к базе внутри обработчика без необходимости — торможение списков и документов
04
Проверка только в списке справочника, но не в документах и отчётах — часть мест показывает старый формат
05
Изменение представления в типовой конфигурации без расширения — потеря доработки при обновлении

Ограничения и безопасный способ доработки

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

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

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

FAQ

Можно ли изменить представление справочника без конфигуратора?

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

Почему в отчёте показывается старое представление, хотя в списках новое?

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

Влияет ли изменение представления на обмен данными и интеграции?

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

Как вывести в представлении пометку удаления?

В обработчике ОбработкаПолученияПредставления получите значение реквизита ПометкаУдаления по ссылке и добавьте к строке маркер, например «(помечен на удаление)». Это помогает пользователям не выбирать неактуальные элементы.

Можно ли сделать разное представление для разных пользователей?

Технически да: в обработчике можно проверить текущего пользователя или его роль через ПользователиИнформационнойБазы и сформировать разный текст. Но такое решение усложняет поддержку и замедляет работу, поэтому применять его стоит только при реальной необходимости.

Итог

Что важно запомнить

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