Как вывести уникальный идентификатор (GUID) в типовом отчете 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Управленческий учет
← На главную

В процессе работы с типовыми конфигурациями, такими как ЗУП 3.1 или ERP, часто возникает необходимость выгрузки данных во внешние системы. Ключевым полем для такой синхронизации обычно выступает не код или наименование (которые могут дублироваться), а Уникальный Идентификатор (GUID). Рассмотрим ситуацию, когда типовой отчет нас полностью устраивает по набору данных, но в него требуется добавить колонку с идентификатором ссылки, не прибегая к серьезному изменению конфигурации.

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

Способ 1. Использование функции XMLСтрока в схеме СКД

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

  1. Откроем схему компоновки данных (СКД) нужного отчета.
  2. Перейдем на вкладку Вычисляемые поля.
  3. Добавим новое поле, например, с заголовком GUID_Сотрудника.
  4. В колонке «Выражение» пропишем функцию:

XMLСтрока(Сотрудник)

Функция XMLСтрока возвращает строковое представление ссылки в формате UUID. Важно помнить, что этот метод работает стабильно именно в контексте схемы компоновки данных. Однако у этого способа есть ограничение: он требует работы в конфигураторе. Если же отчет является типовым, а база находится на строгом замороженном сопровождении (или в облаке), нам придется искать способы решения задачи в пользовательском режиме.

Способ 2. Вывод GUID через пользовательские поля (режим Предприятие)

Рассмотрим более сложную, но гибкую ситуацию: нам нужно вывести идентификатор прямо здесь и сейчас, используя только стандартные настройки отчета. В пользовательском режиме функция XMLСтрока зачастую недоступна напрямую в конструкторе выражений пользовательских полей. Здесь на помощь приходит использование навигационных ссылок.

Проанализируем структуру навигационной ссылки в 1С. Она содержит в себе идентификатор объекта, но в «перемешанном» виде (из-за разницы в порядке байтов в 1С и стандарте RFC). Чтобы получить привычный вид GUID (например, 550e8400-e29b-41d4-a716-446655440000), нам необходимо извлечь части строки и собрать их в правильной последовательности.

Выясним причину сложности формулы. Внутреннее хранение GUID в 1С отличается от текстового представления. Навигационная ссылка возвращает строку, в конце которой находится идентификатор. Нам нужно отсечь лишнее и переставить блоки символов местами.

Для создания такого поля в отчете выполним следующие действия:

  1. Зайдем в «Настройки» отчета, перейдем на вкладку «Пользовательские поля».
  2. Создадим новое «Поле-выражение».
  3. В выражение детальных записей вставим следующую конструкцию (заменив ИмяПоля на ваше поле, например, Сотрудник):

Подстрока(Подстрока(ПолучитьНавигационнуюСсылку(ИмяПоля, ""), ДлинаСтроки(ПолучитьНавигационнуюСсылку(ИмяПоля, "")) - 31, 32), 25, 8)
+ "-"
+ Подстрока(Подстрока(ПолучитьНавигационнуюСсылку(ИмяПоля, ""), ДлинаСтроки(ПолучитьНавигационнуюСсылку(ИмяПоля, "")) - 31, 32), 21, 4)
+ "-"
+ Подстрока(Подстрока(ПолучитьНавигационнуюСсылку(ИмяПоля, ""), ДлинаСтроки(ПолучитьНавигационнуюСсылку(ИмяПоля, "")) - 31, 32), 17, 4)
+ "-"
+ Подстрока(Подстрока(ПолучитьНавигационнуюСсылку(ИмяПоля, ""), ДлинаСтроки(ПолучитьНавигационнуюСсылку(ИмяПоля, "")) - 31, 32), 1, 4)
+ "-"
+ Подстрока(Подстрока(ПолучитьНавигационнуюСсылку(ИмяПоля, "")) - 31, 32), 5, 12)

Разберем по шагам, что делает этот код:

Почему это работает и какие есть риски?

Рассмотрим подробнее, почему метод с навигационной ссылкой считается универсальным. Функция ПолучитьНавигационнуюСсылку является глобальной и доступна практически в любом контексте управляемого приложения. Это позволяет обходить ограничения на использование чисто программных методов (типа УникальныйИдентификатор()) в интерфейсе пользователя.

Важные моменты при использовании данного метода:

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

Таким образом, мы посмотрели, как гибкость платформы 1С 8.3 позволяет решать технические задачи даже в условиях закрытого кода, предоставляя инструменты для манипуляции строковыми данными и метаданными объектов.

← На главную