Класс "Система.Список"

Данный класс используется для работы со списками элементов.

Внимание! При работе со списком используйте циклы 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войство КоличествоЭлементов).

« ПредыдущаяНа уровень вышеСледующая »
 
Driven by DokuWiki