Перейти к основному содержимому

{ИмяРегистраСведений}

{ИмяРазработчика}::{ИмяПроекта}::{ИмяПодсистемы}::{ИмяРегистраСведений} Тип-одиночка Доступность: КлиентИСервер

Вспомогательный объект с общей для конкретного регистра сведений функциональностью.

Для периодического регистра сведений вызов ПересчитатьРазрешенияДоступаДляОбъектов приводит к инициации вычисления разрешений как на чтение, так и на изменение (вызываются обработчики ComputeAccessKeysForRead и ComputeAccessKeysForUpdate, а тривиальные разрешения из ключей создаются автоматически).

Методы ЗаписатьСЗаменойСуществующей, Записать, УдалитьСПроверкойСуществующей и Удалить предназначены именно для оперирования отдельными записями. В смысле затрат вычислительных ресурсов они менее эффективны (в случае большого количестве записей - существенно) чем использование набора записей.

При этом варианты "без существующей" вообще не обладают ни какой дополнительной функциональностью - т.е. это просто короткий способ создать набор записей, заполнить фильтр из ключа записи, добавить в него запись (только для "Записать") и вызывать метод Записать. Варианты полезны при работе с записями регистра как со ссылочными объектами - с помощью них удобно изменять или удалять отдельные записи (при том что в самом регистре по сути не предусмотрено изменение или удаление - только запись набора записей) - обычно это требуется при реализации UI функциональности (без использования соответствующей стандартной функциональности пользовательского интерфейса).

Сравнение ссылочное

Иерархия типа

Базовые типы: Объект, Одиночка, Стд::РегистрыСведений::РегистрСведений


Методы

ВычислитьКлючиДоступаДляИзменения

Версия 8.0 и выше

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

Примеры

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

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

знч КлючиНаИзменение= <ИмяРегистраСведений.ДанныеРасчетаРазрешений, Массив<КлючДоступа.Объект>>{:}

для Запись из Данные
КлючиНаИзменение.Вставить(Запись, [
новый КлючДоступаПользователя.Объект(Запись.Пользователь)
])
;

возврат КлючиНаИзменение
;

ВычислитьКлючиДоступаДляЧтения

Версия 8.0 и выше

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

Примеры

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

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

знч КлючиНаЧтение = <ИмяРегистраСведений.КлючРазрешенийИзмерений, Массив<КлючДоступа.Объект>>{:}

для Запись из Ключи
КлючиНаЧтение.Вставить(Запись, [
новый КлючДоступаПользователя.Объект(Запись.Пользователь)
])
;

возврат КлючиНаЧтение
;

ВычислитьРазрешенияДоступаДляОбъектов

Версия 8.0 и выше

ВычислитьРазрешенияДоступаДляОбъектов(Элементы: ЧитаемыйМассив<{ИмяРегистраСведений}.ДанныеРасчетаРазрешений>): ЧитаемоеСоответствие<{ИмяРегистраСведений}.ДанныеРасчетаРазрешений,ЧитаемаяКоллекция<РазрешениеДоступа>
Вызывается при необходимости рассчитать разрешения доступа для записей непериодического регистра сведений.

Примеры

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

метод ВычислитьРазрешенияДоступаДляОбъектов(
Данные: ЧитаемыйМассив<ИмяРегистраСведений.ДанныеРасчетаРазрешений>
): Соответствие<ИмяРегистраСведений.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>

знч Разрешения = <ИмяРегистраСведений.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>{:}

для Запись из Данные
Разрешения.Вставить(Запись, [
новый РазрешениеДоступа(
[новый КлючДоступаДляВсех.Объект()], [Сущность.Право.Чтение]),
новый РазрешениеДоступа(
[новый КлючДоступаПользователя.Объект(Запись.Пользователь)],
[Сущность.Право.Создание, Сущность.Право.Изменение, Сущность.Право.Удаление])
])
;

возврат Разрешения
;

Заблокировать

Доступность: Сервер

Заблокировать(КлючЗаписи: {ИмяРегистраСведений}.КлючЗаписи)
Перегрузка:
Заблокировать(КлючЗаписи: ИмяРегистраСведений.КлючЗаписи)

Устанавливает исключительную блокировку на значения измерений заданные в ключе записи до конца транзакции. Если транзакция не активна - выбрасывается исключение ИсключениеНетАктивнойТранзакции.

Примеры

```xbsl e1cTestContextPath="DefaultProject/DefaultDeveloper/DefaultName/informationregister/InformationRegisterModule.xbsl"
метод ЗаблокироватьПоКлючу(Запись: ЦеныТоваров.Запись)
ЦеныТоваров.Заблокировать(Запись.КлючЗаписи)
;

Заблокировать

Доступность: Сервер

Заблокировать(КлючЗаписи: {ИмяРегистраСведений}.КлючЗаписи)
Перегрузка:
Заблокировать(Фильтр: ИмяРегистраСведений.НаборЗаписей.Фильтр)


Заблокировать

Версия 8.0 и выше

Доступность: Сервер

Заблокировать(Filter: InformationRegisterName.RecordSet.Filter)
Перегрузка:
Заблокировать(КлючЗаписи: ИмяРегистраСведений.КлючЗаписи)

Устанавливает исключительную блокировку на значения измерений используемые в фильтре до конца транзакции. Если транзакция не активна - выбрасывается исключение ИсключениеНетАктивнойТранзакции.

Примеры

метод ЗаблокироватьПоФильтру(НаборЗаписей: ЦеныТоваров.НаборЗаписей)
ЦеныТоваров.Заблокировать(НаборЗаписей.Фильтр)
;

Заблокировать

Версия 7.0 и ниже

Доступность: Сервер

Метод заменен на Заблокировать.


Записать

Доступность: Сервер

Пытается записать в БД новую запись или заместить существующую.

Фактически при вызове метода создается набор записей из одной записи Запись с фильтром заполненным из ключа записи Запись, набор записывается с Замещать = Истина

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

Примеры

метод ЗаписатьЦенуТовара(Запись: ЦеныТоваров.Запись)
ЦеныТоваров.Записать(Запись)
;

ЗаписатьСЗаменойСуществующей

Доступность: Сервер

ЗаписатьСЗаменойСуществующей(
Запись: {ИмяРегистраСведений}.Запись,
КлючСуществующейЗаписи: {ИмяРегистраСведений}.КлючЗаписи? = Неопределено,
МеткаВерсииСуществующейЗаписи: Байты? = Неопределено)
Если значение параметра МеткаВерсииСуществующейЗаписи заполнено - оно должно соответствовать метки версии существующей (изменяемой) записи, а не записи Запись.

Записывает новую запись в БД или изменяет существующую. В случае изменения существующей записи, если значение параметра МеткаВерсииСуществующейЗаписи отличается от Неопределено - осуществляется контроль совпадения указанной метки версии с меткой версии записи в БД. Подробнее см. ниже.

Если параметр КлючСуществующейЗаписи имеет значение Неопределено - вызов предназначен для записи новой записи, в этом случае:

  • значение параметр МеткаВерсииСуществующейЗаписи должно иметь значение Неопределено (в противном случае будет выброшено исключение ИсключениеНедопустимыйАргумент)
  • проверяется отсутствие в базе БД записи с ключом равным ключу записи Запись
  • запись Запись записывается в БД

Если параметр КлючСуществующейЗаписи имеет значение отличное от Неопределено - вызов предназначен для изменения существующей записи, в этом случае:

  • если значение параметра МеткаВерсииСуществующейЗаписи имеет значение Неопределено
  • если значение параметра МеткаВерсииСуществующейЗаписи имеет значение отличное от Неопределено
    • проверяется наличие в БД записи с ключом равным ключу записи Запись и меткой версии совпадающей с МеткаВерсииСуществующейЗаписи
  • исходная запись (с ключом КлючСуществующейЗаписи) заменяется в БД на запись Запись, при этом фактически
    • создается пустой набор записей с фильтром заполненным из КлючСуществующейЗаписи, набор записывается с Замещать = Истина
    • создается набор записей из одной записи Запись с фильтром заполненным из ключа записи Запись, набор записывается с Замещать = Истина

Примеры

метод ЗаписатьСЗаменой(Запись: ЦеныТоваров.Запись, ИсходнаяЗапись: ЦеныТоваров.Запись)
ЦеныТоваров.ЗаписатьСЗаменойСуществующей(Запись, ИсходнаяЗапись.КлючЗаписи, ИсходнаяЗапись.ПолучитьМеткуВерсии())
;

ПересчитатьРазрешенияДоступаДляОбъектов

Версия 7.0 и выше

Доступность: Сервер

ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<{ИмяРегистраСведений}.КлючЗаписи>)
Перегрузка:
ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<ИмяРегистраСведений.КлючЗаписи>)
ПересчитатьРазрешенияДоступаДляОбъектов(ИмяИзмерения: InformationSystemsName.Ссылка?)

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

Пересчет разрешений на указанные записи регистра, выраженные ключами.

Примеры

метод ПересчитатьПоНаборуКлючейЗаписи(НаборКлючейЗаписей: Обходимое<ЦеныТоваров.КлючЗаписи>)
ЦеныТоваров.ПересчитатьРазрешенияДоступаДляОбъектов(НаборКлючейЗаписей)
;

ПересчитатьРазрешенияДоступаДляОбъектов

Версия 7.0 и выше

Доступность: Сервер

ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<{ИмяРегистраСведений}.КлючЗаписи>)
Перегрузка:
ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<ИмяРегистраСведений.ДанныеРасчетаРазрешений>)
ПересчитатьРазрешенияДоступаДляОбъектов(ИмяИзмерения: InformationSystemsName.Ссылка?)


ПересчитатьРазрешенияДоступаДляОбъектов

Версия 8.0 и выше

Доступность: Сервер

@ИменованныеПараметры
ПересчитатьРазрешенияДоступаДляОбъектов(ИмяИзмерения: {InformationSystemsName}.Ссылка?)
Перегрузка:
ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<ИмяРегистраСведений.КлючЗаписи>)
ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<ИмяРегистраСведений.ДанныеРасчетаРазрешений>)

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


ПересчитатьРазрешенияДоступаДляОбъектов

Доступность: Сервер

ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<{ИмяРегистраСведений}.ДанныеРасчетаРазрешений>)
Перегрузка:
ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<ИмяРегистраСведений.КлючЗаписи>)
ПересчитатьРазрешенияДоступаДляОбъектов(ИмяИзмерения: InformationSystemsName.Ссылка?)

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

Пересчитывает разрешения доступа по списку данных для расчета разрешений. Разрешения пересчитаются у всех объектов, данные для расчета разрешений которых совпадают с одними из переданных в метод.

Примеры

метод ПересчитатьПоНаборуДанныхДляРасчетаРазрешений(НаборДанныхДляРасчетаРазрешений: Обходимое<ЦеныТоваров.ДанныеРасчетаРазрешений>)
ЦеныТоваров.ПересчитатьРазрешенияДоступаДляОбъектов(НаборДанныхДляРасчетаРазрешений)
;

ПересчитатьРазрешенияДоступаДляОбъектов

Версия 8.0 и выше

Доступность: Сервер

ПересчитатьРазрешенияДоступаДляОбъектов(
<Параметр1>: <ТипПараметра1>,
....<ПараметрN>: <ТипПараметраN>)
Перегрузка:
ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<ИмяРегистраСведений.КлючЗаписи>)
ПересчитатьРазрешенияДоступаДляОбъектов(ИмяИзмерения: InformationSystemsName.Ссылка?)

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

Вызов возможен только с именованными параметрами.

Пересчитывает разрешения доступа на отдельные объекты, значения реквизитов которых совпадают со значениями параметров, переданных в метод. В качестве параметров в метод могут быть переданы любые реквизиты, указанные в настройке РасчетРазрешенийПо элемента проекта.

Примеры

метод ПересчитатьПоЗначениямДляРасчетаРазрешений(ПользовательДляПересчета: Пользователи.Ссылка)
ЦеныТоваров.ПересчитатьРазрешенияДоступаДляОбъектов(Пользователь = ПользовательДляПересчета)
;

ПересчитатьРазрешенияДоступаДляОбъектов

Версия 7.0 и ниже

Доступность: Сервер

@ИменованныеПараметры
ПересчитатьРазрешенияДоступаДляОбъектов(ИмяИзмерения: ИнформационныеСистемы.Ссылка?)
Метод заменен на ПересчитатьРазрешенияДоступаДляОбъектов.


ПересчитатьРазрешенияДоступаДляОбъектов

Версия 6.0 и ниже

Доступность: Сервер

ПересчитатьРазрешенияДоступаДляОбъектов(Объекты: Обходимое<{ИмяРегистраСведений}.Запись>)
Метод заменен на ПересчитатьРазрешенияДоступаДляОбъектов.


СоздатьФормуЗаписи

Версия 8.0 и выше

Доступность: Клиент

Перегрузка:
СоздатьФормуЗаписи(Ключ: ИмяРегистраСведений.КлючЗаписи? = Неопределено): ФормаЗаписи<ИмяРегистраСведений.Запись, неизвестно>

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

Создает форму объекта регистра сведений. Если регистру сведений назначена форма объекта, то будет создана форма ровно этого типа. Иначе будет создана автоматическая форма типа [InformationRegisterName.AutomaticRecordForm]

Параметр Ключ определяет, какой объект будет редактироваться в форме. Если в качестве значения ключа передано Неопределено, то будет открыта форма нового объекта.


СоздатьФормуЗаписи

Доступность: Клиент

СоздатьФормуЗаписи(Ключ: {ИмяРегистраСведений}.КлючЗаписи? = Неопределено): ФормаЗаписи<{ИмяРегистраСведений}.Запись, неизвестно>
Перегрузка:
СоздатьФормуЗаписи(КлючИсточникаКопирования: ИмяРегистраСведений.КлючЗаписи): ФормаЗаписи<ИмяРегистраСведений.Запись, неизвестно>


СоздатьФормуЗаписи

Версия 7.0 и ниже

Доступность: Клиент

Метод заменен на СоздатьФормуЗаписи.


СоздатьФормуСписка

Версия 8.0 и выше

Доступность: Клиент

СоздатьФормуСписка(): ФормаСписка
Создает форму списка регистра сведений. Если регистру сведений назначена форма списка, то будет создана форма ровно этого типа. Иначе будет создана автоматическая форма типа [InformationRegisterName.AutomaticListForm]


СоздатьФормуСписка

Версия 7.0 и ниже

Доступность: Клиент

СоздатьФормуСписка(): ФормаСписка<неизвестно>
Метод заменен на СоздатьФормуСписка.


Удалить

Доступность: Сервер

Удаляет запись из БД без проверки существования

  • запись запись (с ключом КлючЗаписи) удаляется из БД, при этом фактически
    • создается пустой набор записей с фильтром заполненным из КлючЗаписи, набор записывается с Замещать = Истина В отличии от метода УдалитьСПроверкойСуществующей метод Удалить является просто короткой формой создания набора записей, его заполнения и вызова его метода Записать. Ни какой дополнительной функциональностью он не обладает.

Примеры

метод УдалитьЦенуТовара(Запись: ЦеныТоваров.Запись)
ЦеныТоваров.Удалить(Запись.КлючЗаписи)
;

УдалитьСПроверкойСуществующей

Доступность: Сервер

УдалитьСПроверкойСуществующей(
КлючЗаписи: {ИмяРегистраСведений}.КлючЗаписи,
МеткаВерсии: Байты? = Неопределено)
Удаляет запись из БД с контролем совпадения указанной метки версии с меткой версии записи в БД.

  • если МеткаВерсии != Неопредено - проверяется наличие в БД записи с ключом равным ключу записи Запись и меткой версии совпадающей с МеткаВерсии
  • запись (с ключом КлючЗаписи) удаляется из БД, при этом фактически
    • создается пустой набор записей с фильтром заполненным из КлючЗаписи, набор записывается с Замещать = Истина Если МеткаВерсии == Неопределено поведение совпадает с Удалить

Примеры

метод УдалитьСПроверкой(Запись: ЦеныТоваров.Запись)
ЦеныТоваров.УдалитьСПроверкойСуществующей(Запись.КлючЗаписи, Запись.ПолучитьМеткуВерсии())
;

Список унаследованных методов

Объект

ВСтроку, ПолучитьТип, Представление

РегистрСведений

ПересчитатьРазрешенияДоступа, ПересчитатьРазрешенияДоступаДляОбъектов