Почему не отображается измерение с типом УникальныйИдентификатор в форме 1С?

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

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

Разбор причин поведения платформы

Основная причина заключается в архитектурных особенностях платформы. Тип УникальныйИдентификатор является примитивным, но узкоспециализированным типом данных, предназначенным преимущественно для внутренних механизмов работы с базой данных (идентификации ссылок). В отличие от типов Строка, Число или Дата, для типа УникальныйИдентификатор не предусмотрено стандартного элемента управления в автоформах.

Платформа 1С при автоматической генерации интерфейса ожидает, что каждый отображаемый элемент можно будет отредактировать с помощью встроенных инструментов. Так как для GUID (Global Unique Identifier) не существует стандартного визуального редактора «из коробки» в рамках управляемых форм, 1С просто исключает этот реквизит из списка доступных для вывода полей, чтобы избежать ошибок ввода и некорректного отображения.

Способы решения задачи

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

Способ 1: Преобразование в строковое представление

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

Если же данные нужно передать обратно в систему как идентификатор, используйте конструктор типа, который позволяет преобразовать строковое представление в системный объект:


// Пример преобразования строки в УникальныйИдентификатор
СтроковоеЗначение = "550e8400-e29b-41d4-a716-446655440000";
GUID = Новый УникальныйИдентификатор(СтроковоеЗначение);

Этот подход позволяет хранить данные в логике программы в нужном формате, а на форме — работать с удобным для пользователя и платформы строковым полем.

Способ 2: Ручное создание элементов на форме

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

  1. Создайте реквизит формы с типом УникальныйИдентификатор.
  2. Перетащите его на элементы формы.
  3. Установите свойство Вид элемента в значение ПолеНадписи, если редактирование не требуется.

Особенности отображения в таблицах

Вы могли заметить, что внутри ТаблицаЗначений или табличных частей реквизиты с типом УникальныйИдентификатор иногда отображаются. Это происходит потому, что в табличных полях платформа пытается вызвать принудительное приведение типа к строке для визуализации. Однако попытка редактирования в такой колонке может привести к невозможности ввода корректного значения, так как система не предоставит стандартный диалог выбора или маску ввода для 36 символов GUID.

Практические рекомендации

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

Подводя итог, можно сказать, что ограничение платформы является защитным механизмом. Программисту 1С при работе с такими данными всегда стоит помнить о разделении «системного хранения» (тип УникальныйИдентификатор) и «представления данных» (тип Строка).

← На главную