Справочник предназначен для хранения массивов ссылочных данных. Физически справочник соответствует одной таблице в базе данных и таблицам табличных частей в базе данных.
Справочник содержит:
В свойствах справочника задаются:
Экранные формы:
Если экранные формы не указаны, то система автоматически сгенерирует экранные формы на основе полей и табличных частей справочника.
Поля для отображения – указываются поля для отображения записей справочника в Пользовательском режиме, всегда должно быть выбрано одно поле, например Имя. Если выбрано несколько полей, то они отображаются в Пользовательском режиме через запятую.
Поля для поиска – указываются поля, по которым будет осуществляться поиск среди полей справочника.
Содержит перечень системных полей и полей, заданных пользователем.
Системные поля:
Список табличных частей справочника задает табличные части, принадлежащие этому справочнику.
Табличные части содержат список системных полей и полей, заданных пользователем.
Системные поля:
Содержит список экранных форм справочника.
В модуле программного кода описываются методы и обработчики команд интерфейса
Предопределенные поля модуля:
//Ссылка на объект данных
public BSReference Context;
//Ссылка на объект структуры
public Reference StructureObject;
//Ссылка на объект формы
public Forma ScreenForma;
//Ссылка на объект FormSimple
public FSForm FSFormObject;
//Список объектов формы WinForm
public List<object> ControlsList;
//Абстрактная прослойка для работы объектом
public BSActions Action;
//Ссылка на программный код объекта
public dynamic ObjectModule;
//Список полей объекта, обращение к полю по имени через точку
public dynamic ObjectFields;
//Список полей формы, обращение к полю по имени через точку
public dynamic FormFields;
//Список элементов управления формы, обращение по имени через точку
public dynamic FormControls;
Предопределенные методы формы:
Форма списка справочника
//Вызывается при открытии формы
public void OnShow()
Форма элемента справочника
//Вызывается при получении данных формы
public void OnRefresh()
//Вызывается при открытии формы
public void OnShow()
//Вызывается при записи объекта
public void OnSave()
//Вызывается после записи объекта
public void OnAfterSave()
//Вызывается при закрытии объекта
//Если возвращается true - форма закрывается, false - форма остатется открытой
public bool OnClose()
Форма группы справочника
//Вызывается при получении данных формы
public void OnRefresh()
//Вызывается при открытии формы
public void OnShow()
//Вызывается при записи объекта
public void OnSave()
//Вызывается после записи объекта
public void OnAfterSave()
//Вызывается при закрытии объекта
//Если возвращается true - форма закрывается, false - форма остатется открытой
public bool OnClose()
Содержит список печатных форм справочника.
В модуле справочника описываются методы работы с объектом справочника.
Предопределенные поля:
//Ссылка на объект с данными записи справочника
public BSRererence Context
//Ссылка на объект структуры
public Rererence StructureObject
//Абстрактная прослойка для работы объектом
public BSActions Action
//Список полей объекта, обращение к полю по имени через точку
public dynamic ObjectFields
Предопределенные методы объекта:
//Вызывается при создании объекта
public void OnCreate()
//Вызывается при создании новой записи
public void OnCreateNew()
//Вызывается при копировании записи
public void OnCopy()
//Вызывается при чтении записи из базы
public void OnReadData()
//Вызывается перед записью объекта
public bool OnBeforeSave()
//Вызывается после записи объекта
public void OnAfterSave()
//Вызывается при установке пометки на удаление
public bool OnMarkDelete()
//Вызывается при снятии пометки на удаление
public bool OnUnMarkDelete()
Пример использования объекта Справочник:
//Создание группы справочника
using (var bsRef = new BSReference("ИмяСправочника"))
{
bsRef.CreateGroup("ИмяПапки");
bsRef.Save();
}
//================================================
//Поиск и создание(если не найдено) записи справочника
using (var bsRef = new BSReference("ИмяСправочника"))
{
string имяЗаписи = "Имя элемента"; //Выражение поиска
var finded = bsRef.FindByName(имяЗаписи); //Поиск записи по имени
if (!finded) //Если запись не найдена
{
bsRef.CreateRecord(имяЗаписи); //Создает новую запись справочника
}
bsRef.ObjectModule.ВызываемаяФункция(); //Вызывает функцию модуля объекта
bsRef.ObjectFields.ИмяПоля = Значение; //Устанавливает для поля ИмяПоля значение
bsRef.Save();
}
//================================================
//Получение формы списка справочника
using (var bsRef = new BSReference("ИмяСправочника"))
{
var formList = bsRef.GetFormList(); //Получение формы списка справочника
Action.ShowWindow(formList); //Отображение формы
}
//================================================
//Получение формы списка справочника с фильтом по полям
using (var bsRef = new BSReference("ИмяСправочника"))
{
//Зададим фильтр списка
Filter filter = new Filter();
//Добавим фильтр "Поле фильтрации", "Значение фильтрации", "Метод сравнения"
//Этот фильт выберет все имена, которые начинаются на букву А
filter.AddFilter("Имя", "А%", "LIKE");
var formList = bsRef.GetFormList(filter); //Получение формы списка справочника с фильтром
Action.ShowWindow(formList); //Отображение формы
}
//================================================
//Открытие формы списка справочника с фильтом по полям
public void OnShow()
{
//Получение объекта Filter() списка справочника
var filter = Action.GetListFormFilter();
//Добавим фильтр "Поле фильтрации", "Значение фильтрации", "Метод сравнения"
filter.AddFilter("is_group", false);
//Установим фильтр в списке справочника.
//Последний параметр:
//true - запрещено отключение фильтра на форме,
//false - разрешено отключение фильтра на форме
Action.SetListFormFilter(filter, true);
}
Содержит список запросов, заданных для этого справочника.