Это старая версия документа.
Данный класс используется для работы со списками элементов.
Свойство: КоличествоЭлементов
Тип параметра: Int (целое число).
Свойство содержит число, показывающее количество элементов списка.
Пример кода.
Задача: определить количество в справочнике физических лиц, определить ФИО первого и третьего элемента, удалить и добавить физлицо.
Sub ПримерOLE_РаботаСоСписком()
'БД и редакция Business Studio, с которыми будем работать
СерверБД = "ИмяСервера"
База = "ИмяБазы"
РедакцияBS = "Enterprise"
'Получение объекта приложения
Set oleapp = CreateObject("ByteEnterprise.OleApplication")
'Запустить Business Studio в редакции и базой на сервере, указанными ранее.
'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
Set client_app = oleapp.ЗапуститьКлиентскоеПриложение(СерверБД, База, РедакцияBS)
oleapp.ПоказатьКлиентскоеПриложение 'В панели задач появится приложение
'*****************************************************************
'Начало работы с данными, сортировка списка и удаление по индексу
'*****************************************************************
'Получаем список всех физ.лиц
Set ФизЛицаОПУ = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.ФизЛица")
Set ФизЛицаФильтр = ФизЛицаОПУ.СоздатьФильтр
Set ФизЛицаСписок = ФизЛицаФильтр.Выполнить
'Количество физ.лиц в списке
КолвоФизЛицДоУдаления = ФизЛицаСписок.КоличествоЭлементов
'Запоминаем первое физ.лицо полученного списка
ПервоеФизЛицоДоСортировки = ФизЛицаСписок.ПолучитьЭлемент(0)
'Сортируем список физ.лиц по дате рождения
ФизЛицаСписок.Сортировать ("ДатаРождения")
'Запоминаем 1 и 3-е физ.лицо отсортированного списка
ПервоеФизЛицоПослеСортировки = ФизЛицаСписок.ПолучитьЭлемент(0)
ТретьеФизЛицоПослеСортировки = ФизЛицаСписок.ПолучитьЭлемент(2)
'Удаляем третье физ.лицо списка. При этом в справочнике физ.лиц оно не будет удалено.
ФизЛицаСписок.УдалитьИзСпискаПоИндексу (2)
'Количество физ.лиц в списке
КолвоФизЛицПослеУдаленияПоИдексу = ФизЛицаСписок.КоличествоЭлементов
'*****************************************************************
'Добавление физ.лиц, удаление по объекту
'*****************************************************************
'Добавляем новое физ.лицо с фамилией "Пушкин"
Set НовоеФизЛицо1 = ФизЛицаСписок.Добавить
НовоеФизЛицо1.Фамилия = "Пушкин"
НовоеФизЛицо1.Имя = "Александр"
НовоеФизЛицо1.Отчество = "Сергеевич"
НовоеФизЛицо1.Сохранить 'Физлицом сохраниться в справочнике физ.лиц
'Добавляем новое физ.лицо с фамилией "Дантес".
Set НовоеФизЛицо2 = ФизЛицаСписок.Добавить
НовоеФизЛицо2.Фамилия = "Дантес"
НовоеФизЛицо2.Имя = "Жорж"
НовоеФизЛицо2.Отчество = "Шарль"
НовоеФизЛицо2.Сохранить 'Физлицом сохраниться в справочнике физ.лиц
'Количество физ.лиц в списке после добавления
КолвоФизЛицПослеДобавления = ФизЛицаСписок.КоличествоЭлементов
'Последнее физ.лицо в списке после добавления
ПослФизЛицоСпискаПослеДобавления = _
ФизЛицаСписок.ПолучитьЭлемент(КолвоФизЛицПослеДобавления - 1)
'Удаляем второе добавленное физ.лицо. При этом в справочнике физ.лиц оно не будет удалено.
Set ФизЛицоУдаления = НовоеФизЛицо2
ФизЛицаСписок.УдалитьИзСпискаОбъект (ФизЛицоУдаления)
'Количество физ.лиц в списке после удаления
КолвоФизЛицПослеУдаленияПоОбъекту = ФизЛицаСписок.КоличествоЭлементов
'Последнее физ.лицо в списке после удаления
ПослФизЛицоСпискаПослеУдалПоОбъекту = _
ФизЛицаСписок.ПолучитьЭлемент(КолвоФизЛицПослеУдаленияПоОбъекту - 1)
'Выводим сообщение о проделанной работе
MsgBox "Физические лица" + Chr(13) + Chr(13) + _
"Исходный список физ.лиц" + Chr(13) + _
" Кол-во физ.лиц =" + CStr(КолвоФизЛицДоУдаления) + Chr(13) + _
" Первое физ.лицо: " + ПервоеФизЛицоДоСортировки + Chr(13) + Chr(13) + _
"Список после сортировки по Дате рождения" + Chr(13) + _
" Первое физ.лицо: " + ПервоеФизЛицоПослеСортировки + Chr(13) + Chr(13) + _
"Список после удаления 3-го физ.лица (по индексу)" + Chr(13) + _
" Кол-во физ.лиц = " + CStr(КолвоФизЛицПослеУдаленияПоИдексу) + Chr(13) + _
" Третье физ.лицо '" + ТретьеФизЛицоПослеСортировки + "' было удалено" + Chr(13) + _
Chr(13) + _
"Список после добавления физ.лиц" + Chr(13) + _
" Кол-во физ.лиц = " + CStr(КолвоФизЛицПослеДобавления) + Chr(13) + _
" Добавлены: " + НовоеФизЛицо1.Фамилия + " и " + НовоеФизЛицо2.Фамилия + Chr(13) + _
" Последнее Физ.лицо списка: " + ПослФизЛицоСпискаПослеДобавления + Chr(13) + Chr(13) + _
"Список после удаления физ.лица" + Chr(13) + _
" Кол-во физ.лиц = " + CStr(КолвоФизЛицПослеУдаленияПоОбъекту) + Chr(13) + _
" Удалено физ.лицо: " + ФизЛицоУдаления + Chr(13) + _
" Последнее Физ.лицо списка: " + ПослФизЛицоСпискаПослеУдалПоОбъекту
End Sub
Синтаксис: Добавить()
Возвращаемый результат: Система.МетаКласс (см. п.3.4)
Метод создает объект и добавляет его в качестве элемента в конец списка.
Чтобы добавленный элемент появился в справочнике модели, необходимо выполнить сохранение объекта-владельца списка. (см. метод «Сохранить» в классе «Система.Метакласс», п.3.4.4).
Пример кода. См. код в свойстве «КоличествоЭлементов» (п.3.6.1).
Синтаксис: ДобавитьОбъект(object <Объект>)
Возвращаемый результат: не возвращает.
Метод добавляет к списку элемент на основе уже существующего в базе объекта, в отличие от метода «Добавить» (п.3.6.2), который добавляет полностью новый объект. Может использоваться для формирования вспомогательных временных списков в памяти, не имеющих владельца.
Пример кода.
Задача: получить список, состоящий из всех ролей организации и подразделения-организации (субъект «ИнТехПроект»).
Sub ПримерOLE_РаботаСоСписком()
' БД и редакция Business Studio, с которыми будем работать
СерверБД = "ИмяСервера"
База = "ИмяБазы"
РедакцияBS = "Enterprise"
'Получение объекта приложения
Set oleapp = CreateObject("ByteEnterprise.OleApplication")
'Запустить Business Studio в редакции и базой на сервере, указанными ранее.
'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
Set client_app = oleapp.ЗапуститьКлиентскоеПриложение(СерверБД, База, РедакцияBS)
oleapp.ПоказатьКлиентскоеПриложение 'В панели задач появится приложение
'Сначала создаем список, состоящий из Ролей
Set ПолныйСписок = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "ТипСубъекта", "Роль")
КолвоТолькоРолей = ПолныйСписок.КоличествоЭлементов
'Добавляем в список объект подразделение-организация
'Определяем конкретный объект
Set СписокОрганизация = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "Название", "ИнТехПроект")
Set НужныйСубъект = СписокОрганизация.ПолучитьЭлемент(0) ' Первый элемент из списка
'Добавляем объект к списку
'Данная операция возможна потому, что класс добавляемого в список элемента тот же,
'что и у прочих элементов списка. Если требуется добавить в список объекты разных классов,
'то тип для элементов списка нужно выбирать базовый для всех классов
'добавляемых объектов. См. объектную модель Business Studio.
ПолныйСписок.ДобавитьОбъект (НужныйСубъект)
КолвоЭлементовСписка = ПолныйСписок.КоличествоЭлементов
'Выводим сообщение о проделанной работе
MsgBox "Список из Ролей. Кол-во: " + CStr(КолвоТолькоРолей) + Chr(13) + _
"Полный список. Кол-во: " + CStr(КолвоЭлементовСписка)
End Sub
Синтаксис: ПолучитьЭлемент(int <Номер>)
Возвращаемый результат: Система.МетаКласс (см. п.3.4)
Метод позволяет получить элемент списка по указанному номеру. Первый элемент списка имеет номер 0. В VBA можно использовать вместо ПолучитьЭлемент Item и выбирать элемент не только по номеру, но и по имени.
Пример кода. См. код в свойстве «КоличествоЭлементов» (п.3.6.1).
Синтаксис: УдалитьИзСпискаПоИндексу(int <Номер>)
Возвращаемый результат: не возвращает.
Метод удаляет элемент списка по указанному номеру.
Пример кода. См. код в свойстве «КоличествоЭлементов» (п.3.6.1).
Синтаксис: УдалитьИзСпискаОбъект(object <Объект>)
Возвращаемый результат: не возвращает.
Метод удаляет из списка указанный объект.
Пример кода. См. код в свойстве «КоличествоЭлементов» (п.3.6.1).
Синтаксис: Сортировать(string "<НаборПолей>")
Возвращаемый результат: не возвращает.
Сортирует список по указанному набору полей.
Например: "Поле1,-Поле2", где префикс '-' задает сортировку по убыванию.
Пример кода. См. код в свойстве «КоличествоЭлементов» (п.3.6.1).