Получение одной записи справочника из набора данных
Чтобы получить набор данных одной записи справочника, выполните код:
// Получить набор данных записи справочника TST с кодом KOD1. Record = References.TST.GetObjectByCode('KOD1') Также можно получить набор данных записи по ее ИД:
// Получить набор данных записи справочника TST с ИД 115064. Record = References.TST.GetObjectByID('115064') |
Получение набора данных с ограничением по значениям реквизитов
Чтобы получить несколько нужных записей справочника из набора данных, в разделе where добавьте условие в код запроса получения данных на SQL-сервере. Пример 1. Добавить ограничение по реквизиту Наименование записи справочника:
// Получить набор данных справочника TST с ограничением по наименованию TEST2. Reference = References.TST.GetComponent() // Сформировать строку для ограничения выборки в SQL-запросе. AddWhere = Format("%s.%s = '%s'"; ArrayOf(Reference.TableName; Reference.Requisites(SYSREQ_NAME).SQLFieldName; 'TEST2')) // Добавить ограничение к SQL-запросу. AddWhereID = Reference.AddWhere(AddWhere) // Открыть набор данных справочника. Reference.Open .. // Закрыть набор данных справочника. Reference.Close // Удалить добавленное ограничение. Reference.DelWhere(AddWhereID) В примере ограничение устанавливается по значению поля таблицы на SQL-сервере. Учитывайте это при формировании ограничений по строковым полям, например, по полю Код записи справочника. Значение, по которому ограничивается набор данных, указывайте в том же формате, в котором оно хранится в таблице. Для этого можно использовать функцию FormatString. Примечание Не используйте в вычислениях явные имена таблиц и полей записей справочника, например, «MBAnalit.NameAn = 'TEST2'». Это может вызвать несовместимость прикладной разработки с новыми версиями системы DIRECTUM. Пример 2. Добавить ограничение по полю Код записи с длиной в 10 символов:
// Получить набор данных справочника TST. Reference = References.TST.GetComponent() // Получить длину значения реквизита «Код». Length = Reference.Requisites(SYSREQ_CODE).Length // Дополнить код ведущими пробелами. FormattedCode = FormatString(Length & '|'; 'KOD2') // Сформировать строку для ограничения выборки в SQL-запросе по полю «Код». AddWhere = Format("%s.%s = '%s'"; ArrayOf(Reference.TableName; Reference.Requisites(SYSREQ_CODE).SQLFieldName; FormattedCode)) // Добавить ограничение к SQL-запросу. AddWhereID = Reference.AddWhere(AddWhere) // Открыть набор данных справочника. Reference.Open ... // Закрыть набор данных справочника. Reference.Close // Удалить добавленное ограничение. Reference.DelWhere(AddWhereID) Пример 3. С помощью фильтра получить группу записей справочника с наименованием, содержащим текст «TEST3»:
// Получить набор данных справочника TST. Reference = References.TST.GetComponent() // Открыть набор данных справочника. Reference.Open // Сформировать строку для ограничения выборки в SQL-запросе. FilterString = Format("%0:s like '%%%1:s%%'"; ArrayOf(SYSREQ_NAME; 'TEST3')) // Добавить условие фильтрации. Reference.Filter = FilterString // Активировать фильтр. Reference.Filtered = TRUE ... // Отключить фильтр. Reference.Filtered = FALSE // Закрыть набор данных справочника. Reference.Close После фильтрации записей и выполнения над ними необходимых действий фильтр можно отключить, присвоив свойству Filtered значение FALSE. Затем продолжать работать с остальными записями набора данных без повторной загрузки данных с сервера. Примечание При выборе варианта ограничения набора данных учитывайте, что метод AddWhere является серверным фильтром, а свойство Filter – клиентским. AddWhere ограничивает объем данных, получаемых с сервера. При использовании Filter с сервера считывается весь набор данных, а затем на клиенте выполняется фильтрация.
Пример 4. Получить набор данных без выполнения событий с помощью свойства Events объекта IReference:
// Получить набор данных справочника TST. Reference = References.TST.GetComponent() // Добавить контрольную точку. Reference.Events.AddCheckPoint // Отключить обработку события «Набор данных. Открытие». Reference.Events.Events(dseBeforeOpen).Enabled = FALSE // Открыть набор данных справочника. Reference.Open ... // Закрыть набор данных справочника. Reference.Close // Удалить контрольную точку и восстановить все события. Reference.Events.ReleaseCheckPoint |
Получение набора данных всех записей справочника
Чтобы получить набор данных всех записей справочника, выполните код:
// Получить набор данных справочника TST. Reference = References.TST.GetComponent() // Открыть набор данных справочника Reference.Open ... // Закрыть набор данных справочника TST. Reference.Close Примечание Получать весь набор данных справочника не рекомендуется, так как это снижает скорость выполнения процессов системы. Следует получать только нужные записи, ограничивая получение набора данных с помощью условия where.
|
Получение набора данных детального раздела (табличной части)
Чтобы получить набор данных детального раздела справочника, выполните код:
// Получить детальный набор данных записи справочника TST с кодом KOD2. Record = References.TST.GetObjectByCode('KOD2') // Проверить наличие детального раздела. if Record.DetailExists(1) // Получить детальный набор данных. ReferenceDDS1 = Record.DetailDataSet(1) endif |
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |