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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке конфигураций на платформе 1С:Предприятие часто возникает задача изменить стандартное отображение данных. По умолчанию система выводит в полях ввода и списках Наименование элемента справочника. Однако в специфических задачах (например, при работе с направлениями деятельности, бюджетными классификаторами или артикулами) пользователям гораздо удобнее видеть Код. Рассмотрим подробнее, как реализовать это поведение, не нарушая логику работы всей системы.

Понимание механизма представления ссылочных данных

Для начала проанализируем ситуацию: почему 1С настойчиво показывает наименование? В системе тип данных СправочникСсылка — это не строка и не число, а уникальный идентификатор (GUID), состоящий из 36 символов. Программа никогда не показывает пользователю сам GUID. Вместо него выводится так называемое Основное представление. По умолчанию для большинства справочников в конфигураторе установлено представление "В виде наименования".

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

Способ 1. Изменение пути к данным на управляемой форме

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

  1. Откроем форму списка или форму записи регистра в конфигураторе.
  2. Найдем в списке элементов формы поле, отвечающее за наш реквизит (например, КодНаправления).
  3. Посмотрим на свойство ПутьКДанным. Обычно там указано имя реквизита, например: Запись.Направление.
  4. Чтобы отобразить код, нам нужно "провалиться" внутрь ссылки. Попробуем изменить путь на Запись.Направление.Код.

Важный нюанс: иногда платформа выдает ошибку "Неправильный путь к данным". Это происходит, если система не может динамически получить доступ к реквизиту через точку в конкретном контексте. В этом случае мы можем пойти другим путем: добавим на форму новую колонку (или поле ввода) и в ее свойствах в строке ПутьКДанным вручную пропишем путь через точку к коду. Старое поле, которое показывает наименование, можно сделать невидимым или вовсе удалить с формы. Для реализации различных вариантов добавления полей в списки можно изучить методы доработки динамических списков.

Способ 2. Изменение основного представления в метаданных

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

Чтобы применить этот метод:

  1. В дереве метаданных откроем нужный Справочник.
  2. Перейдем на вкладку Данные.
  3. В нижней части окна найдем группу Основное представление.
  4. Установим переключатель в положение В виде кода.

Внимание: этот способ крайне не рекомендуется использовать в типовых конфигурациях ("Бухгалтерия предприятия", "ERP", "УТ"), так как это затруднит последующее обновление и может запутать пользователей в других разделах программы. При обслуживании большого количества типовых баз можно автоматизировать архивацию и обновление 1С в тихом режиме без участия пользователя.

Способ 3. Программное переопределение через модуль менеджера

Рассмотрим более профессиональный и гибкий подход. В платформе 1С 8.3 существует возможность программно управлять тем, что будет выведено в качестве строкового представления объекта. Для этого используется обработчик ОбработкаПолученияПредставления в модуле менеджера справочника.

Посмотрим на пример реализации такого кода:


Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    // Отключаем стандартный вывод наименования
    СтандартнаяОбработка = Ложь;
    
    // Формируем свое представление (только код)
    Представление = Данные.Код;
    
КонецПроцедуры

Этот метод позволяет внедрить даже сложную логику. Например, мы можем выводить "Код + Наименование" или менять представление в зависимости от того, какой пользователь открыл форму. Однако помните, что этот код выполняется очень часто, поэтому он должен быть максимально оптимизирован и не содержать тяжелых запросов к базе данных.

Почему данные пропадают в отчетах и печатных формах?

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

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

Настройка поиска по коду

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

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

← На главную