Правила объектов системы 

Ксения Останина
Дата создания: 26 октября 2010 в 17:08

У каждого объекта системы есть список правил, т.е. требований для исполнения неких условий, реализующих внутреннюю логику системы. Этот список можно получить с помощью свойства IObject.Rules. По умолчанию для объекта системы проверяются все правила списка. В справке описано 3 наиболее востребованных правила, но есть и другие правила, которые могут быть полезны.

Получить список всех правил, например, справочника можно так:

  Ref = CreateReference('<Имя типа справочника>')
  // Создать представление, чтобы получить полный набор правил
  View = Ref.CreateView(Ref.MainViewCode)
  // Получить правила справочника
  RuleList = Ref.Rules
  // Посмотреть ИД и описания всех правил
  foreach Rule in RuleList
    ShowMessage(Rule.ID)
    ShowMessage(Rule.Description)
  endforeach  

Если выполнить представленный выше код, то будут получены 20  правил:

ИД

Описание

SET_OURFIRM_BOUNDS_RULE_ID

 

При установленном контексте организации в набор данных компоненты, имеющей реквизит "НашаОрг", должны попадать только записи, удовлетворяющие установленному контексту.

CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID

 

Для утверждения записи должны быть заполнены все обязательные реквизиты.

SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID

 

При показе формы-списка курсор должен быть установлен на первую запись набора данных.

SET_DEFAULT_FIRM_CONTEXT_RULE_ID

Если есть только одна Наша Организация, то ее контекст должен быть установлен.

SET_OURFIRM_REQUISITE_RULE_ID

Значение реквизита "НашаОрг" должно заполняться автоматически из установленного контекста.

CHECK_CODE_REQUISITE_RULE_ID

Значение реквизита "Код" не должно содержать символов ".".

AUTO_NUMERATION_RULE_ID

Значение реквизита "Код" для автонумеруемых компонент должно заполняться значением "АВТОНОМЕР" при добавлении новой записи.

SET_DEPARTMENT_SECTION_BOUNDS_RULE_ID

В набор данных компоненты, имеющей реквизит "УчРазд", должны попадать записи, удовлетворяющие установленному модулю.

SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID

На время открытия записи набора данных, имеющего реквизит "НашаОрг", должен быть установлен контекст организации, равный значению из реквизита "НашаОрг" открытой записи.

CANT_CHANGE_ID_REQUISITE_RULE_ID

Нельзя изменять значение реквизита "ИД".

Идентификатор записи набора данных назначается только один раз при ее создании.

CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID

Нельзя изменять значение реквизита "НашаОрг".

Значение реквизита назначается только один раз при создании записи.

CHECK_FILTRATER_CHANGES_RULE_ID

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

MAKE_RECORD_UNRATIFIED_RULE_ID

Сделать запись неутвержденной.

SET_NEXT_CODE_VALUE_RULE_ID

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

RESTORE_AUTO_NUMERATION_RULE_ID

Значение реквизита "Код" для автонумеруемых компонент должно восстанавливаться в значение "АВТОНОМЕР" при ошибках сохранения новой записи.

19

Дата начала действия записи не может быть больше даты окончания действия записи!

CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID

Нельзя изменять запись, так как она уже используется.

CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID

Нельзя удалять запись, так как она уже используется.

CHECK_REFERENCE_INTERVAL_RULE_ID

Период действия записи (%0:s) должен пересекаться с периодами действия используемых записей справочников.

SET_IDSPS_VALUE_RULE_ID

При установке IDSPS произошла ошибка.

Каждое правило проверяется при наступлении определенных событий. Программно можно отключать сразу все правила (IRuleList.DisableAll) или только определенные (IRule.Enabled  = FALSE).  Отключать некоторые правила опасно, например, отключение правила “Нельзя удалять запись, так как она уже используется.” может привести к нарушению ссылочной целостности. Но для оптимизации или для реализации нестандартной логики правила можно отключать.  

Например:

  • SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID– организация пользовательского выбора из справочника, чтобы курсор был установлен на выбранную ранее запись.
  • CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID– в коннекторах, когда при приеме данных и создании записи могут быть заполнены не все обязательные реквизиты.
  • CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID– в ТР «Управление персональными данными», когда нужно очистить значения обязательных реквизитов, содержащие персональные данные, при этом эти записи уже могут где-то использоваться.

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

 

Предлагаю поделиться вашими примерами отключения правил с описанием проблемы, которую помогло решить отключение правила.

понравилась 2 пользователям

Находится в рубриках:
Комментарии (9)
Комментарии доступны только для зарегистрированных пользователей.




Теги
4.7 4.8 awards isbl is-builder sql server бизнес-решение введение в is-builder видео дайджест документ интеграция клик настройка отчет разработка сообщество справочник сценарий функция
показать все теги