В процессе работы с системой 1С:Предприятие, особенно при настройке интеграций между различными базами данных или внешними сервисами, часто возникает необходимость увидеть GUID (уникальный идентификатор) конкретного объекта непосредственно в интерфейсе. По умолчанию это поле является чисто техническим и скрыто от глаз пользователя. Рассмотрим подробно, почему это происходит и как мы можем вывести данную информацию в список контрагентов.
Проанализируем архитектуру платформы. В системе 1С УникальныйИдентификатор не является реквизитом справочника в привычном понимании. Это свойство ссылки Ссылка (или поле Ref на уровне базы данных SQL). Когда мы открываем форму списка, данные в ней чаще всего отображаются с помощью объекта ДинамическийСписок. Если разработчик в запросе этого списка не предусмотрел отдельную колонку для идентификатора, то через стандартную настройку «Изменить форму» пользователь его не увидит, так как платформа «не знает», что это поле нужно вычитывать из базы. В диагностике таких ситуаций может помочь редактор форм в режиме предприятия, позволяющий изучить свойства элементов «на лету».
Ситуация, когда в одной функциональной опции (ФО) поле есть, а в другой нет, обычно объясняется тем, что либо для разных ФО используются разные формы, либо в конфигурации создан специальный дополнительный реквизит «GUID» (строкового типа), видимость которого жестко привязана к настройкам системы. Выясним, как решить эту задачу несколькими способами.
Этот метод является самым правильным с точки зрения производительности. Разберем по шагам, как добавить колонку с идентификатором в конфигураторе:
Контрагенты.ДинамическийСписок.Ссылка в список выбранных полей.Пример модифицированного запроса:
ВЫБРАТЬ
СправочникКонтрагенты.Ссылка КАК Ссылка,
СправочникКонтрагенты.Наименование КАК Наименование,
СправочникКонтрагенты.ИНН КАК ИНН,
СправочникКонтрагенты.КПП КАК КПП
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагенты
После добавления поля Ссылка в список, нам нужно зайти в настройки размещения полей формы и добавить новое поле. В свойствах этого поля на форме можно указать заголовок «GUID». Если вам требуется более сложная логика расположения элементов, изучите программное перемещение колонки динамического списка. Важно понимать, что сама по себе ссылка в 1С при выводе в текстовое поле будет отображаться как Наименование, поэтому для отображения именно набора символов (UUID) потребуется небольшая программная доработка в событии ПриВыводеСтроки или использование вычисляемых полей.
Если ваша база находится на поддержке и вы не хотите вносить изменения в основную конфигурацию, проанализируем вариант с использованием расширения. Это наиболее безопасный и современный метод. В некоторых случаях добавление реквизитов и элементов на управляемые формы можно реализовать даже без глубокого кодирования. Рассмотрим алгоритм действий:
РасширениеКонфигурации.Контрагенты.Строка.ПриПолученииДанныхНаСервере или добавим вычисляемое поле в схему компоновки данных (СКД), которая управляет этим списком.Пример кода для получения строкового представления GUID:
&НаСервере
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавляем вычисляемую колонку, если используем программное формирование
НовыйЭлемент = Элементы.Добавить("GUID_Колонка", Тип("ПолеФормы"), Элементы.Список);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Список.Ссылка"; // Временно привязываем к ссылке
КонецПроцедуры
Чтобы автоматизировать подобные задачи, разработчиками часто применяется готовое решение для программного изменения форм, которое содержит универсальные функции добавления элементов. В современных типовых конфигурациях на базе БСП часто используют механизм дополнительных колонок, где идентификатор получается функцией Строка(Ссылка.УникальныйИдентификатор()).
Если идентификатор нужен вам разово и вы не хотите заниматься программированием, разберем стандартную возможность платформы 8.3. Посмотрим, как это сделать без изменения кода:
# и есть УникальныйИдентификатор.Хотя этот метод не позволяет вывести идентификаторы списком, он крайне полезен для быстрой проверки конкретной записи.
Как упоминалось в обсуждении на форуме, для опытных специалистов существуют инструменты разработчика (ИР). Проанализируем, как это работает. Также вы можете использовать специализированный список GUID объектов справочников и документов — эта обработка не только покажет идентификаторы, но и поможет сгенерировать код для получения ссылки по GUID. В таких инструментах колонка «Идентификатор ссылки» или UUID обычно доступна по умолчанию.
Выясним причину, почему поле может пропадать при смене ФО. В 1С функциональные опции могут управлять видимостью элементов интерфейса. Если разработчик конфигурации добавил поле GUID как реквизит справочника и включил его в состав ФО, то при отключении этой опции поле исчезнет из всех списков и настроек «Изменить форму».
Чтобы проверить это, выполните следующие действия:
Если вам необходимо реализовать вывод GUID в колонку списка программно для всех строк, рассмотрим пример кода, который преобразует техническую ссылку в читаемую строку формата 00000000-0000-0000-0000-000000000000:
// Пример получения строки GUID из ссылки
ИдентификаторОбъекта = Строка(ОбъектСсылка.УникальныйИдентификатор());
// Пример использования в запросе для динамического списка (через СКД)
// В поле "Выражение" настроек компоновки данных:
// "Строка(Ссылка.УникальныйИдентификатор)"
Важный нюанс: Прямое преобразование Строка(Ссылка) выдаст вам наименование контрагента, а не его GUID. Чтобы получить именно идентификатор, нужно обязательно обращаться к методу УникальныйИдентификатор() объекта ссылки.
Подводя итог, отметим: если поле GUID отсутствует в настройках «Изменить форму», значит оно не добавлено в запрос динамического списка. Оптимальным решением будет использование небольшого расширения, которое добавит вычисляемую колонку в список контрагентов, не снимая основную конфигурацию с поддержки.