This article describes the standards that apply to inactive objects. All of the listed recommendations are mandatory unless noted otherwise.
This recommendation is optional
1. This recommendation applies to situations when some infobase object becomes permanently or temporarily inactive (an employee leaves the company or takes a maternity leave, a department no longer exists due to reorganization, and so on); and you cannot simply delete the object because this will impact reference integrity (some other objects reference it). For example, a File object must have a reference to an employee in the Author field even if the author left the company.
2. To prevent inactive objects from popping up in auto completion and quick choice lists, use one of the approaches listed below (2.1 or 2.2). They are described on the example of Users catalog, which contains the list of information system users.
For marking inactive users, the Inactive(Boolean) attribute is added to the Users catalog. The default attribute value is False.
2.1. If displaying inactive users must be prohibited in all input fields or in a majority of input fields, make it the default choice.
2.1.1. In the Users catalog manager module, implement the ChoiceDataGetProcessing and FormGetProcessing handlers for setting filter parameters. Example:
Procedure ChoiceDataGetProcessing(ChoiceData, Parameters, StandardProcessing) If Not Parameters.Filter.Property("Inactive") Then Parameters.Filter.Insert("Inactive", False); EndIf; EndProcedure Procedure FormGetProcessing(FormType, Parameters, SelectedForm, AdditionalInformation, StandardProcessing) If FormType = "ChoiceForm" Then ParameterChanged = False; If Not Parameters.Property("Filter") Then Parameters.Insert("Filter", New Structure("Inactive", False)); ParameterChanged = True; ElsIf Not Parameters.Filter.Property("Inactive") Then Parameters.Filter.Insert("Inactive", False); ParameterChanged = True; EndIf; // This code utilizes the changed parameter values If ParameterChanged Then StandardProcessing = False; SelectedForm = "ChoiceForm"; // Passing the choice form name EndIf; EndIf; EndProcedure
2.1.2. For attributes where different application behavior is required (for example, displaying all users or applying another filter), set the ChoiceParameters and ChoiceParameterLinks properties in this context to appropriate values:
2.2. If the use of inactive object filter strongly depends on context (usage scenarios), do not make it the default behavior.
3. We recommend that you add the Show inactive users command to the All actions menu of the user list form. It provides you with the option to open user details and make the user active (for example, you will need this when an employee is back from a maternity leave).
4. We recommend that you use the following formatting for displaying inactive objects in lists: InaccessibleCellTextColor (192,192,192).