В процессе разработки на платформе 1С:Предприятие 8.3 многие разработчики сталкиваются с ситуацией, когда при создании регистра сведений или другого объекта метаданных измерение (или реквизит) с типом УникальныйИдентификатор игнорируется платформой при автоматической генерации форм. В режиме «Предприятие» поле просто отсутствует, что вызывает закономерные вопросы. Давайте разберемся, почему так происходит и какие методы решения существуют.
Основная причина заключается в архитектурных особенностях платформы. Тип УникальныйИдентификатор является примитивным, но узкоспециализированным типом данных, предназначенным преимущественно для внутренних механизмов работы с базой данных (идентификации ссылок). В отличие от типов Строка, Число или Дата, для типа УникальныйИдентификатор не предусмотрено стандартного элемента управления в автоформах.
Платформа 1С при автоматической генерации интерфейса ожидает, что каждый отображаемый элемент можно будет отредактировать с помощью встроенных инструментов. Так как для GUID (Global Unique Identifier) не существует стандартного визуального редактора «из коробки» в рамках управляемых форм, 1С просто исключает этот реквизит из списка доступных для вывода полей, чтобы избежать ошибок ввода и некорректного отображения.
Рассмотрим, как можно вывести или отредактировать данные этого типа, если ваша задача требует использования именно УникальныйИдентификатор.
Самый простой и эффективный способ для отображения данных — это использование типа Строка. Если вам нужно только показать значение пользователю, вы можете создать на форме реквизит строкового типа и выводить туда представление идентификатора.
Если же данные нужно передать обратно в систему как идентификатор, используйте конструктор типа, который позволяет преобразовать строковое представление в системный объект:
// Пример преобразования строки в УникальныйИдентификатор
СтроковоеЗначение = "550e8400-e29b-41d4-a716-446655440000";
GUID = Новый УникальныйИдентификатор(СтроковоеЗначение);
Этот подход позволяет хранить данные в логике программы в нужном формате, а на форме — работать с удобным для пользователя и платформы строковым полем.
Если автоматическая генерация формы вас не устраивает и вы создаете форму вручную, вы можете вывести реквизит типа УникальныйИдентификатор. Однако помните, что стандартное поле ввода для него может вести себя некорректно в режиме редактирования. В таких случаях лучше выводить значение через элемент формы ПолеНадписи (в режиме «Только просмотр»):
УникальныйИдентификатор.Вид элемента в значение ПолеНадписи, если редактирование не требуется.Вы могли заметить, что внутри ТаблицаЗначений или табличных частей реквизиты с типом УникальныйИдентификатор иногда отображаются. Это происходит потому, что в табличных полях платформа пытается вызвать принудительное приведение типа к строке для визуализации. Однако попытка редактирования в такой колонке может привести к невозможности ввода корректного значения, так как система не предоставит стандартный диалог выбора или маску ввода для 36 символов GUID.
Для обеспечения стабильной работы интерфейса придерживайтесь следующих правил:
УникальныйИдентификатор напрямую как поле ввода в динамических формах, если не планируете писать собственный сложный обработчик событий ввода (например, ПриИзменении или ОбработкаВыбора).Строка(ВашИдентификатор).Подводя итог, можно сказать, что ограничение платформы является защитным механизмом. Программисту 1С при работе с такими данными всегда стоит помнить о разделении «системного хранения» (тип УникальныйИдентификатор) и «представления данных» (тип Строка).