К статье
Практический материал

Администрирование · 9 мин

Ключ реестра документов в 1С: что это такое и как с ним работать

Что такое ключ реестра документов в 1С, где он хранится, как найти ключ записи и ссылку документа, типичные ошибки и способы проверки.

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

На практике ключ нужен в трёх ситуациях: при поиске «потерянного» документа, при разборе ошибок обмена данными между базами и при программной работе с реестрами — например, когда обработка должна найти конкретную запись по ключу. Без понимания, какой именно ключ требуется, легко получить неверную ссылку и испортить сопоставление объектов при синхронизации.

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

Что именно называют ключом реестра документов

Термин не является строгим объектом метаданных платформы, поэтому его значение зависит от задачи. В пользовательском интерфейсе «реестр документов» — это обычно журнал или список документов определённого вида, а ключом строки фактически выступает ссылка на документ. В механизмах обмена и интеграции под ключом почти всегда имеют в виду GUID — 32-символьный шестнадцатеричный идентификатор, который платформа присваивает объекту при создании.

В типовых конфигурациях встречаются и регистры сведений, выполняющие роль реестра: например, регистры, хранящие статусы документов, состояния обмена или дополнительные реквизиты. Ключ такой записи — это комбинация измерений регистра. Если измерение одно (документ), ключ фактически совпадает со ссылкой на документ; если измерений несколько, ключ — это структура из их значений.

Где физически хранится ключ

Ссылка документа хранится в основной таблице документа в базе данных и дублируется во всех таблицах, где документ выступает регистратором или значением реквизита. При файловом режиме работы это таблицы внутри файла 1Cv8.1CD, при клиент-серверном — таблицы в СУБД (MS SQL, PostgreSQL и другие). Прямой доступ к этим таблицам в обход платформы не рекомендуется: платформа кэширует данные, и ручное изменение таблиц приводит к рассогласованию.

Ключ записи регистра хранится в таблице соответствующего регистра сведений. Для непериодического регистра это просто набор значений измерений, для периодического добавляется поле периода. Платформа обеспечивает уникальность ключа автоматически: создать две записи с одинаковым набором измерений штатными средствами нельзя.

Как найти ключ документа в пользовательском режиме

Без прав разработчика получить GUID можно несколькими способами. Самый простой — открыть форму документа и воспользоваться функцией «Вывести список» или скопировать навигационную ссылку, если она включена в настройках. Навигационная ссылка вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=... содержит внутреннее представление ссылки, по которому документ можно однозначно открыть.

Ещё один способ — встроенная обработка или команда «Изменить форму» не подойдёт, а вот консоль запросов в режиме предприятия (если она добавлена администратором) позволяет вывести ссылку напрямую. Также многие типовые конфигурации показывают уникальный идентификатор в специальных отчётах для администраторов.

Порядок действий
  1. 1
    Откройте нужный документ в режиме предприятия
  2. 2
    Скопируйте навигационную ссылку через меню формы или адресную строку веб-клиента
  3. 3
    Извлеките часть после ref= — это внутреннее представление ссылки
  4. 4
    Для получения привычного GUID используйте консоль запросов или конфигуратор
  5. 5
    Проверьте результат, открыв документ по полученной ссылке

Как получить ключ программно в конфигураторе

Разработчику доступны штатные методы встроенного языка. Для ссылки документа используется метод УникальныйИдентификатор() объекта ссылки, а обратное преобразование выполняется через ПолучитьСсылку(). Для ключа записи регистра сведений применяется метод СоздатьКлючЗаписи менеджера регистра с передачей структуры значений измерений.

bsl
// GUID документа
ГУИД = СсылкаНаДокумент.УникальныйИдентификатор();

// Обратное получение ссылки
Ссылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИД));

// Ключ записи регистра сведений
Ключ = РегистрыСведений.СтатусыДокументов.СоздатьКлючЗаписи(Новый Структура("Документ", СсылкаНаДокумент));

При работе с ПолучитьСсылку() есть важный нюанс: если объекта с таким GUID в базе нет, метод вернёт «пустую» ссылку с заданным идентификатором, и обращение к её реквизитам вызовет ошибку. Поэтому после получения ссылки корректно проверять существование объекта запросом или методом ПолучитьОбъект() с обработкой исключения.

Зачем ключ нужен при обмене данными

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

Типичная проблема — дубли документов после обмена. Она возникает, когда объект создавался независимо в обеих базах и получил разные GUID. Система видит два разных ключа и не объединяет записи автоматически. Решение — ручное сопоставление в регистре соответствия объектов либо перенумерация с переносом ссылки штатными средствами конвертации.

Типичные ошибки и как их избежать

Типичные ошибки
01
Поиск документа по номеру вместо ссылки — номер не уникален между видами документов и периодами, поиск даёт чужой объект
02
Использование ПолучитьСсылку без проверки существования — обращение к несуществующему объекту вызывает исключение
03
Ручная правка ключей регистра сведений без анализа измерений — появляются дубли или потерянные записи
04
Перенос документов копированием таблиц СУБД — ключи сохраняются, но нарушаются служебные механизмы платформы
05
Игнорирование регистра соответствия при обмене — после синхронизации появляются дубли документов

Отдельная ошибка — путать ключ записи регистра накопления с ключом регистра сведений. У регистров накопления нет ключа записи в таком виде: строки там идентифицируются регистратором и номером строки. Попытка получить «ключ записи» движения документа штатным методом регистра сведений закончится ошибкой компиляции или исполнения.

Как проверить, что ключ корректен

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

Контрольные точки

Как проверить результат

Открытие документа по ссылке
Норма

Открывается нужный документ с верными номером и датой

Тревожный признак

Открывается другой объект или возникает ошибка «Объект не найден»

Запрос по ключу регистра сведений
Норма

Возвращается ровно одна запись

Тревожный признак

Пустой результат или несколько строк

Сопоставление при обмене
Норма

Документ обновляется в базе-приёмнике без дублей

Тревожный признак

После обмена появляются дубли с разными номерами

Если документ отображается в журнале, но по ссылке не открывается с ошибкой «Объект не найден», это признак битой ссылки — записи в реестре есть, а самого объекта нет. Такое случается после некорректного удаления или сбоя обмена. Лечится тестированием и исправлением базы с включённой проверкой ссылочной целостности.

FAQ

Чем ключ реестра отличается от номера документа?

Номер — это пользовательский реквизит, который может повторяться между видами документов, периодами и организациями. Ключ (ссылка/GUID) — внутренний идентификатор, уникальный в пределах всей базы и не зависящий от нумерации. Для поиска и обменов надёжно использовать только ключ.

Может ли GUID документа измениться?

Штатными средствами — нет: идентификатор присваивается при создании объекта и сохраняется на всё время его жизни. GUID меняется фактически только при создании нового объекта, например при переносе данных с генерацией новых ссылок или при копировании документа.

Как найти документ, зная только его GUID?

Проще всего через конфигуратор или консоль кода: перебрать нужные виды документов и вызвать ПолучитьСсылку с этим GUID, затем проверить существование объекта. Если вид документа неизвестен, используют поиск по всем типам либо специальные обработки поиска по уникальному идентификатору.

Что делать, если после обмена появились дубли документов?

Проверьте регистр соответствия объектов в механизме обмена: вероятно, документы имеют разные GUID и не сопоставлены. Установите соответствие вручную или удалите дубль с переназначением ссылок. После этого повторите синхронизацию и убедитесь, что документ обновляется, а не создаётся заново.

Можно ли получить ключ записи регистра без прав разработчика?

Напрямую — нет, для этого нужны методы встроенного языка. Но пользователь с правами администратора может воспользоваться консолью запросов или универсальным отчётом по регистру сведений, где значения измерений (то есть компоненты ключа) видны в явном виде.

Итог

Что важно запомнить

Ключ реестра документов — это ссылка (GUID) документа или ключ записи регистра сведений. Он уникален, не меняется при редактировании и используется для поиска, обменов и программной работы. Получают его через навигационную ссылку, конфигуратор или запросы, а любые массовые операции с ключами выполняют только после резервного копирования.