При разработке конфигураций на платформе 1С:Предприятие часто возникает задача изменить стандартное отображение данных. По умолчанию система выводит в полях ввода и списках Наименование элемента справочника. Однако в специфических задачах (например, при работе с направлениями деятельности, бюджетными классификаторами или артикулами) пользователям гораздо удобнее видеть Код. Рассмотрим подробнее, как реализовать это поведение, не нарушая логику работы всей системы.
Для начала проанализируем ситуацию: почему 1С настойчиво показывает наименование? В системе тип данных СправочникСсылка — это не строка и не число, а уникальный идентификатор (GUID), состоящий из 36 символов. Программа никогда не показывает пользователю сам GUID. Вместо него выводится так называемое Основное представление. По умолчанию для большинства справочников в конфигураторе установлено представление "В виде наименования".
Если мы просто создадим реквизит в регистре сведений с типом ссылки на справочник, 1С будет отображать в форме именно то, что задано в настройках этого справочника. Выясним причину, почему обычное переименование реквизита или попытка "вписать" туда код вручную не работают: данные в базе хранятся как ссылка, а визуализация — это лишь надстройка над ними.
Это самый простой и быстрый метод, который подходит для управляемого интерфейса. Он позволяет отобразить код, не меняя глобальных настроек справочника. Разберем по шагам, как это сделать:
КодНаправления).Запись.Направление.Запись.Направление.Код.Важный нюанс: иногда платформа выдает ошибку "Неправильный путь к данным". Это происходит, если система не может динамически получить доступ к реквизиту через точку в конкретном контексте. В этом случае мы можем пойти другим путем: добавим на форму новую колонку (или поле ввода) и в ее свойствах в строке ПутьКДанным вручную пропишем путь через точку к коду. Старое поле, которое показывает наименование, можно сделать невидимым или вовсе удалить с формы. Для реализации различных вариантов добавления полей в списки можно изучить методы доработки динамических списков.
Если специфика вашей конфигурации такова, что данный справочник везде и всегда должен отображаться как код, можно воспользоваться глобальной настройкой. Проанализируем последствия: это изменение затронет все формы, все отчеты и все документы, где используется этот справочник.
Чтобы применить этот метод:
Справочник.Внимание: этот способ крайне не рекомендуется использовать в типовых конфигурациях ("Бухгалтерия предприятия", "ERP", "УТ"), так как это затруднит последующее обновление и может запутать пользователей в других разделах программы. При обслуживании большого количества типовых баз можно автоматизировать архивацию и обновление 1С в тихом режиме без участия пользователя.
Рассмотрим более профессиональный и гибкий подход. В платформе 1С 8.3 существует возможность программно управлять тем, что будет выведено в качестве строкового представления объекта. Для этого используется обработчик ОбработкаПолученияПредставления в модуле менеджера справочника.
Посмотрим на пример реализации такого кода:
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
// Отключаем стандартный вывод наименования
СтандартнаяОбработка = Ложь;
// Формируем свое представление (только код)
Представление = Данные.Код;
КонецПроцедуры
Этот метод позволяет внедрить даже сложную логику. Например, мы можем выводить "Код + Наименование" или менять представление в зависимости от того, какой пользователь открыл форму. Однако помните, что этот код выполняется очень часто, поэтому он должен быть максимально оптимизирован и не содержать тяжелых запросов к базе данных.
Часто разработчики сталкиваются с проблемой: в форме регистра код виден, а в печатной форме или отчете на базе СКД вместо кода — пустота или наименование. Выясним причину. Когда мы меняем Путь к данным на форме, мы меняем только "картинку" для пользователя. Физически в базе данных в реквизите по-прежнему лежит Ссылка.
Для корректного отображения кода в отчетах и печатных формах используйте следующие рекомендации:
Область.Параметры.Направление = СсылкаНаОбъект.Код;.Код, и тогда в отчете вместо названия всегда будет выводиться код.НаправлениеКод с типом Строка. При записи основной ссылки программно копируют туда значение кода. Это гарантирует наличие данных в любой ситуации.Если ваша задача — не только видеть код, но и быстро выбирать элементы, вводя цифры с клавиатуры, необходимо проверить настройки поиска. В конфигураторе на вкладке Данные справочника убедитесь, что поле Код включено в Поля поиска. Также в свойствах поля ввода на форме проверьте параметр Способ выбора. Совместное использование поиска по коду и отображения кода в списке сделает работу пользователя максимально эффективной.
Подводя итог, можно сказать, что выбор метода зависит от масштаба задачи. Для разовой правки конкретной формы идеально подходит изменение ПутьКДанным, а для системного изменения поведения справочника лучше использовать возможности модуля менеджера.