1. Общие механизмы, понятия и термины
#61

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

В 1С:Предприятии 8 у записи регистра (например, регистра накопления/бухгалтерии/расчета, а также у регистра сведений, если он подчинен регистратору) какое стандартное свойство позволяет понять, каким документом была сделана эта запись?

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

Пояснение

В 1С большинство движений по регистрам создается при проведении документов. Поэтому у записей регистров, которые «подчинены регистратору», платформа автоматически добавляет служебные поля, среди которых ключевое - «Регистратор» (ссылка на документ, сформировавший запись). Дополнительно часто присутствуют «Период» и «НомерСтроки» (порядковый номер записи в наборе записей одного регистратора), а в некоторых регистрах - и другие стандартные реквизиты (например, «Активность», «ВидДвижения» для регистров накопления). Как это применять на практике: - Нужно найти все движения конкретного документа: отбирайте записи регистра по полю «Регистратор = <СсылкаНаДокумент>». Это работает и в запросах, и при работе с наборами записей. - Нужно понять, кто «сделал» запись, найденную в отчете/отладке: откройте значение «Регистратор» - это и будет документ-источник. Важный нюанс про регистры сведений: - Регистр сведений может быть независимым (без регистратора) или подчиненным регистратору. Если регистр сведений независимый, поля «Регистратор» у записи не будет - потому что движения не привязаны к документу. - Если регистр сведений подчинен регистратору (в свойствах задан список регистраторов), тогда у его записей появляется стандартный реквизит «Регистратор», и связь с документом работает так же, как у регистров накопления/бухгалтерии/расчета. Мини-пример сценария: документ «Реализация товаров» провели, и он записал движения в регистр накопления «ТоварыНаСкладах». Чтобы показать все движения именно этого документа, отберите записи регистра по «Регистратор» - и вы получите ровно тот набор строк, который сформирован проведением данного документа.