Типы встроенного языка, порождаемые элементом проекта вида «РегистрСведений»

После того как вы добавили в проект регистр сведений и дали ему имя, создаст несколько типов встроенного языка. Например, для регистра сведений с именем Цены будут созданы следующие типы:

  • Цены
  • Цены.КлючЗаписи
  • Цены.Запись
  • Цены.НаборЗаписей
  • Цены.КлючРазрешенийИзмерений
  • Цены.КлючОсновногоФильтра

В общем случае имена этих типов выглядят следующим образом:

  • имя-регистра-сведений
  • имя-регистра-сведений.КлючЗаписи
  • имя-регистра-сведений.Запись
  • имя-регистра-сведений.НаборЗаписей
  • имя-регистра-сведений.КлючРазрешенийИзмерений
  • имя-регистра-сведений.КлючОсновногоФильтра

Тип «имя-регистра-сведений»

Это тип-одиночка.

Тип имя-регистра-сведений содержит методы, которые позволяют, например, блокировать записи по измерениям, указанным в ключе или фильтре.

Также он позволяет пересчитать разрешения доступа: ПересчитатьРазрешенияДоступа, ПересчитатьРазрешенияДоступаДляОбъектов (подробнее).

Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:

// Получить менеджера регистра «Цены»
пер МенеджерРегистра = Цены

// Пересчитать разрешения доступа для регистра «Цены»
Цены.ПересчитатьРазрешенияДоступа()

Модуль регистра сведений

В проекте модуль, расширяющий тип имя-регистра-сведений, называется модулем регистра сведений.

В этом модуле вы можете обработать события вычисления разрешений доступа: ВычислитьРазрешенияДоступа, ВычислитьРазрешенияДоступаДляОбъектов, ВычислитьКлючиДоступаДляЧтения и ВычислитьКлючиДоступаДляИзменения (подробнее).

Совет: В модуле регистра сведений может находиться реализация контракта сервиса.

Тип «имя-регистра-сведений.КлючЗаписи»

Тип имя-регистра-сведений.КлючЗаписи доступен и на клиенте, и на сервере. Он предназначен для указания на какую-то конкретную запись регистра.

Он имеет конструктор новый имя-регистра-сведений.КлючЗаписи(), который позволяет создать новый ключ записи по значениям всех измерений, и метод ЗагрузитьЗапись(), который есть только на сервере и позволяет получить запись (имя-регистра-сведений.Запись) из ключа (имя-регистра-сведений.КлючЗаписи).

Модуль ключа записи

В проекте модуль, расширяющий тип имя-регистра-сведений.КлючЗаписи, называется модулем ключа записи. Он исполняется и на клиенте, и на сервере.

Тип «имя-регистра-сведений.КлючОсновногоФильтра»

Тип имя-регистра-сведений.КлючОсновногоФильтра доступен только на сервере. Он представляет из себя структуру, описывающую ключ основного фильтра регистра сведений. В отличие от ключа регистра сведений, содержит только измерения, которые включены в основной фильтр. Для периодического регистра сведений также может содержать поле Период, если период включен в основной фильтр.

Присутствует как поле в таблице регистра сведений и таблице изменений данных регистра сведений. Это позволяет разработчику проекта удобно фильтровать изменения по данным регистра сведений.

Данный тип имеет конструктор новый имя-регистра-сведений.КлючОсновногоФильтра(), который позволяет создать новый ключ основного фильтра по значениям всех измерений, включенных в основной фильтр.

Данный тип используется в программном интерфейсе для работы с изменениями данных регистров сведений.

Тип имя-регистра-сведений.КлючОсновногоФильтра формируется по элементу проекта всегда, даже если регистр сведений не включен в состав плана обмена или нет измерений, включаемых в основной фильтр.

Тип «имя-регистра-сведений.Запись»

Тип имя-регистра-сведений.Запись доступен на клиенте и сервере.

Он содержит данные одной записи и предназначен для создания, изменения или удаления одной записи.

Он имеет несколько конструкторов новый имя-регистра-сведений.Запись(), которые позволяют создать новую запись. Заполнив эту запись данными, вы можете затем сохранить ее в базе данных.

При записи данных вызываются события типа имя-регистра-сведений.НаборЗаписей, поскольку перед записью автоматически трансформирует эту запись в набор записей, содержащий одну запись и необходимый для этого фильтр.

Модуль записи

В проекте модуль, расширяющий тип имя-регистра-сведений.Запись, называется модулем записи. Он исполняется на сервере.

В нем вы можете обработать такие события, как:

  • ПриЗаполнении,
  • ПриКопировании.
Совет: В модуле записи может находиться реализация методов контракта типа.

Тип «имя-регистра-сведений.НаборЗаписей»

Тип имя-регистра-сведений.НаборЗаписей доступен на сервере.

Он содержит данные нескольких записей и предназначен для их создания, изменения или удаления в соответствии с некоторым фильтром.

Он имеет конструктор новый имя-регистра-сведений.НаборЗаписей(), который позволяет создать пустой набор. Заполнив этот набор записями, вы можете затем сохранить их все в базе данных. Также вы можете прочитать в пустой набор те записи из базы данных, которые соответствуют фильтру, установленному в пустом наборе записей.

Модуль набора записей

В проекте модуль, расширяющий тип имя-регистра-сведений.НаборЗаписей, называется модулем набора записей. Он исполняется на сервере.

В нем вы можете обработать такие события, как:

  • ПередЗаписью,
  • ПослеЗаписи.
Например:
@Обработчик
метод ПередЗаписью(Замещать: Булево,
                   ПараметрыЗаписи: МойРегистрСведений.ПараметрыЗаписи)
    // Действия, которые выполняются перед записью 
    // набора записей регистра сведений
;

Во время записи набора записей открывает в базе данных транзакцию записи и вызывает следующие события:

Тип «имя-регистра-сведений.КлючРазрешенийИзмерений»

Тип имя-регистра-сведений.КлючРазрешенийИзмерений доступен на сервере и порождается только в том случае, если регистр периодический и используется разрешение РазрешенияВычисляютсяДляКаждогоОбъекта.

Он указывает на группу записей с одинаковыми значениями измерений, указанных в настройке РасчетРазрешенийПо. Такие группы записей нужны в системе прав доступа для установки права Чтение на записи периодического регистра сведений.

Экземпляры этого типа передает в обработчик события ВычислитьКлючиДоступаДляЧтения. Для вычисления ключей доступа на чтение в тип имя-регистра-сведений.КлючРазрешенийИзмерений записывается только подмножество измерений, указанных в свойстве РасчетРазрешенийПо (подробнее).

В коде объекты типа КлючРазрешенийИзмерений можно создать тремя способами:
  • в качестве параметра указать объект типа ДанныеРасчетаРазрешений:
    метод КонструкторИзДанныхРасчетаРазрешений()
        // Создаем новую запись регистра сведений КурсыВалют
        // и заполняем ее поля
        пер НоваяЗапись = новый КурсыВалют.Запись(
            Валюта = "RUB",   // измерение, которое используется для расчета разрешений
            Курс = 100,
            Кратность = 1
        )
    
        // Создаем экземпляр типа ДанныеРасчетаРазрешений по записи НоваяЗапись
        пер ДанныеРасчетаРазрешений = новый КурсыВалют.ДанныеРасчетаРазрешений(НоваяЗапись)
    
        // Создаем экземпляр типа КлючРазрешенийИзмерений,
        // который содержит измерения, указанные в настройке РасчетРазрешенийПо
        пер КлючРазрешенийИзмерений = новый КурсыВалют.КлючРазрешенийИзмерений(ДанныеРасчетаРазрешений)
    
        пер ИзмерениеНовойЗаписи = КлючРазрешенийИзмерений.Валюта   // "RUB"
    ;
  • в качестве параметра указать запись регистра сведений имя-регистра-сведений.Запись:
    метод КонструкторИзЗаписи()
        // Создаем новую запись регистра сведений КурсыВалют
        // и заполняем ее поля
        пер НоваяЗапись = новый КурсыВалют.Запись(
            Валюта = "RUB",   // измерение, которое используется для расчета разрешений
            Курс = 100,
            Кратность = 1
        )
    
        // Создаем экземпляр типа КлючРазрешенийИзмерений по записи НоваяЗапись;
        // КлючРазрешенийИзмерений содержит измерения, указанные в настройке РасчетРазрешенийПо
        пер КлючРазрешенийИзмерений = новый КурсыВалют.КлючРазрешенийИзмерений(НоваяЗапись)
    
        пер ИзмерениеНовойЗаписи = КлючРазрешенийИзмерений.Валюта   // "RUB"
    ;
  • в качестве параметра указать ключ записи регистра сведений имя-регистра-сведений.КлючЗаписи:
    метод КонструкторИзКлючаЗаписи()
        // Создаем новую запись регистра сведений КурсыВалют
        // и заполняем ее поля
        пер НоваяЗапись = новый КурсыВалют.Запись(
            Валюта = "RUB",   // измерение, которое используется для расчета разрешений
            Курс = 100,
            Кратность = 1
        )
    
        // Создаем экземпляр типа КлючРазрешенийИзмерений по ключу записи НоваяЗапись;
        // КлючРазрешенийИзмерений содержит измерения, указанные в настройке РасчетРазрешенийПо
        пер КлючРазрешенийИзмерений = новый КурсыВалют.КлючРазрешенийИзмерений(НоваяЗапись.КлючЗаписи)
    
        пер ИзмерениеНовойЗаписи = КлючРазрешенийИзмерений.Валюта   // "RUB"
    ;

Тип «РегистрыСведений»

Независимо от того, есть в проекте регистры сведений или нет, во встроенном языке существует тип РегистрыСведений. Он предназначен для обхода всех регистров сведений и вызова пересчета разрешений доступа (подробнее), например:
для Регистр из РегистрыСведений
    Регистр.ПересчитатьРазрешенияДоступа()
;
Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа.