Данный класс используется для работы со списками элементов.
Внимание! При работе со списком используйте циклы for и while, а не foreach.
Свойство: КоличествоЭлементов
Тип параметра: Int (целое число).
Свойство содержит число, показывающее количество элементов списка.
Пример кода.
Задача: определить количество в справочнике физических лиц, определить ФИО первого и третьего элемента, удалить и добавить физлицо.
Sub ПримерOLE_РаботаСоСписком() 'БД и редакция Business Studio, с которыми будем работать СерверБД = "ИмяСервера" База = "ИмяБазы" Редакция = "РедакцияПрограммы" 'Получение объекта приложения Set oleapp = CreateObject("ByteEnterprise.OleApplication") 'Запустить Business Studio в той редакции и с выбором того сервера и базы, какие указаны ранее. 'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно. Set client_app = oleapp.ЗапуститьКлиентскоеПриложение(СерверБД, База, Редакция) 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
Синтаксис: Добавить()
Возвращаемый результат: Система.МетаКласс (см. Класс "Система.МетаКласс")
Метод создает объект и добавляет его в качестве элемента в конец списка.
Чтобы добавленный элемент появился в справочнике модели, необходимо выполнить сохранение объекта-владельца списка. (см. Mетод Сохранить).
Пример кода. См. код в свойстве "КоличествоЭлементов" (Cвойство КоличествоЭлементов).
Синтаксис: ДобавитьОбъект(object <Объект>)
Возвращаемый результат: не возвращает.
Метод добавляет к списку элемент на основе уже существующего в базе объекта, в отличие от метода "Добавить" (Mетод Добавить), который добавляет полностью новый объект. Может использоваться для формирования вспомогательных временных списков в памяти, не имеющих владельца.
Пример кода.
Задача: получить список, состоящий из всех ролей организации и подразделения-организации (субъект "ИнТехПроект").
Sub ПримерOLE_РаботаСоСписком() ' БД и редакция Business Studio, с которыми будем работать СерверБД = "ИмяСервера" База = "ИмяБазы" Редакция = "РедакцияПрограммы" 'Получение объекта приложения Set oleapp = CreateObject("ByteEnterprise.OleApplication") 'Запустить Business Studio в той редакции и с выбором того сервера и базы, какие указаны ранее. 'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно. Set client_app = oleapp.ЗапуститьКлиентскоеПриложение(СерверБД, База, Редакция) oleapp.ПоказатьКлиентскоеПриложение 'В панели задач появится приложение Set guidРолей = "44c21176-c927-47f6-93d8-730fbf096a00" 'В объектной модели можно посмортреть ID класса "Роль" 44c21176-c927-47f6-93d8-730fbf096a00 'Сначала создаем список, состоящий из Ролей Set ПолныйСписок = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "ObjectClassID", guidРолей) КолвоТолькоРолей = ПолныйСписок.КоличествоЭлементов 'Добавляем в список объект подразделение-организация 'Определяем конкретный объект Set СписокОрганизация = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "Название", "ИнТехПроект") Set НужныйСубъект = СписокОрганизация.ПолучитьЭлемент(0) ' Первый элемент из списка 'Добавляем объект к списку 'Данная операция возможна потому, что класс добавляемого в список элемента тот же, 'что и у прочих элементов списка. Если требуется добавить в список объекты разных классов, 'то тип для элементов списка нужно выбирать базовый для всех классов 'добавляемых объектов. См. объектную модель Business Studio. ПолныйСписок.ДобавитьОбъект (НужныйСубъект) КолвоЭлементовСписка = ПолныйСписок.КоличествоЭлементов 'Выводим сообщение о проделанной работе MsgBox "Список из Ролей. Кол-во: " + CStr(КолвоТолькоРолей) + Chr(13) + _ "Полный список. Кол-во: " + CStr(КолвоЭлементовСписка) End Sub
Синтаксис: ПолучитьЭлемент(int <Номер>)
Возвращаемый результат: Система.МетаКласс (см. Класс "Система.МетаКласс")
Метод позволяет получить элемент списка по указанному номеру. Первый элемент списка имеет номер 0. В VBA можно использовать вместо ПолучитьЭлемент Item и выбирать элемент не только по номеру, но и по имени.
Пример кода. См. код в свойстве "КоличествоЭлементов" (Cвойство КоличествоЭлементов).
Синтаксис: УдалитьИзСпискаПоИндексу(int <Номер>)
Возвращаемый результат: не возвращает.
Метод удаляет элемент списка по указанному номеру.
Пример кода. См. код в свойстве "КоличествоЭлементов" (Cвойство КоличествоЭлементов).
Синтаксис: УдалитьИзСпискаОбъект(object <Объект>)
Возвращаемый результат: не возвращает.
Метод удаляет из списка указанный объект.
Пример кода. См. код в свойстве "КоличествоЭлементов" (Cвойство КоличествоЭлементов).
Синтаксис: Сортировать(string "<НаборПолей>")
Возвращаемый результат: не возвращает.
Сортирует список по указанному набору полей.
Например: "Поле1,-Поле2", где префикс '-' задает сортировку по убыванию.
Пример кода. См. код в свойстве "КоличествоЭлементов" (Cвойство КоличествоЭлементов).