Адрес этой странички : http://doc-prg.narod.ru/art_00014/art_00014.htm 
Дата обновления : 15.10.2007
 

(c) Sergey Popov, Usinsk, Komi, 2007

© 15.10.2007 Сергей Попов

Здесь следует отметить, что приведенная ниже статья носит чисто иллюстративный характер и не претендует на бОльшее.
Для серьезной и углубленной проработки специальных вопросов информационного обмена крайне рекомендуется использовать фирменное техническое описание системы 1Cv8.

1Cv8 + Delphi-5.
OLE (COM).
Формирование списка зарегистрированных и активных Пользователей. 
 

Статью в виде файла (485 кб) можно скачать здесь: art_00014.zip


В 1Cv8 (в отличие от 1Cv7) предусмотрена возможность формирования (при программировании) списков зарегистрированных и активных Пользователей  открытой информационной базы.

Для этого могут быть использованы объект 

    ПользователиИнформационнойБазы

и метод 

    ПолучитьСоединенияИнформационнойБазы

глобального контекста системы.

Подробно о них можно почитать в спец. литературе по системе 1Cv8.

 

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

Создадим Delphi-проект (Get_ListUser_RegAct_1Cv8.dpr).
Форма проекта представлена на рис. 1.


Рис 1. Форма Delphi-проекта Get_ListUser_RegAct_1Cv8.dpr

 

В данном примере для  соединения  с 1Cv8 (COM-соединение) будем использовать соотв. Delphi-компонент :

    TConnectTo1Cv8

Подробно о создании этого компонента можно прочитать здесь и здесь.
Исходные тексты компонента можно скачать здесь (43 кб).
В принципе, в данном случае можно обойтись и без этого компонента, используя наработки из предыдущих статей ...

Создадим обработчик события: нажатие на кнопку: "Запуск 1С (COM-соединение)" :

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    Label_YesConnect.Visible:=false;
    ConnectTo1Cv81.Active:=false;
    //Полный путь к файлам базы данных
    ConnectTo1Cv81.FilePath:=Trim(Edit_DirDB.Text);
    //Имя Пользователя
    ConnectTo1Cv81.UserName:=Trim(Edit_User.Text);
    //Пароль Пользоватедя
    ConnectTo1Cv81.Password:=Trim(Edit_PSW.Text);
    //Открыть COM-соединения
    ConnectTo1Cv81.Active:=true;
    if ConnectTo1Cv81.Active then begin
        Label_YesConnect.Visible:=true;
    end;
end;


Создадим обработчик события: нажатие на кнопку "Список зарегистр. Пользователей" :

 Все пояснения - в тексте обработчика.

 

Проверим, как это работает.
Скомпилируем наш проект и запустим его на выполнение.
Установим COM-соединение с программой 1С:Предприятие (по кнопке "Запуск 1С (COM-соединение)").
Сформируем список зарегистрированных Пользователей открытой информационной базы (по кнопке "Список зарегистр. Пользователей") :


Рис 2. Список зарегистрированных Пользователей
открытой информационной базы.

 

Для сравнения, на рис.3 представлен этот же список, как он визуализирован в Конфигураторе 1С:Предприятие.

 


Рис 3. Список зарегистрированных Пользователей
открытой информационной базы 
(как это представлено в Конфигураторе).

 

Теперь попробуем получить список ролей для каждого Пользователя.
Прежде всего, откроем Конфигуратор 1С:Предприятие и доработаем нашу конфигурацию homelib_07.zip .
Добавим в общий модуль (spLib_OLE) конфигурации следующую функцию :

 

 

 

 

 

Назначение этой функции - конвертировать Коллекции в Массивы (чтобы особо не заморачиваться при переборе элементов коллекции в контексте Delphi).

Теперь внесем изменения в обработчик события: нажатие на кнопку "Список зарегистр. Пользователей" :

...
...
...
//Выводим строку
Memo1.Lines.Add(Sx);
//----------------------------------------------------
//Формирование списка ролей для очередного Пользоватедя
if CheckBox1.Checked then begin
    //Читаем коллекцию ролей Пользователя
    vList_Roles := vUser.Роли;
    if YesLinkToVariant(vList_Roles) then begin

        //Конвертируем коллекцию в массив
        vList_Roles_m := ConnectTo1Cv81.ole1Cv8.Конвертировать_Коллекцию_в_Массив_OLE(vList_Roles);

        //---------------------------------------
        //Обрабатываем массив ролей Пользователя
        Count2 := vList_Roles_m.Количество();
        if Count2>0 then begin
            j := -1;
            while j<(Count2-1) do
            begin
                j := j + 1;

                //Читаем очередную роль
                vRole:=vList_Roles_m.Получить(j);

                //Визуализируем свойство "Имя" Роли
                Memo1.Lines.Add(' > Роль='+Trim(vRole.Имя));
            end;
        end;
        //---------------------------------------

    end;
end;
//----------------------------------------------------
...
...
...

Полный текст обработчика представлен ниже :

 

На рис.4 представлен результат тестирования проекта.


Рис 4. Список зарегистрированных Пользователей и их Ролей 
в открытой информационной базе.

 

Теперь попробуем прочитать список Активных Пользователей открытой информационной базы.
Для этого создадим обработчик события: нажатие на кнопку "Список активных Пользователей".

 Все пояснения - в тексте обработчика.

Тексты вспомогательных (не существенных) функций здесь не приводятся.
Кто пожелает - может посмотреть в исходных текстах примера (26 кб).

На рис.5 представлен результат тестирования нашего проекта.
Как видно, среди Активных Соединений (Пользователей)  присутствует только наш проект ...


Рис 5. Список активных Пользователей в открытой информационной базе.

 

Теперь запустим программу и Конфигуратор 1С:Предприятие от имени разных Пользователей.
Все активные соединения будут отражены в контексте нашего проекта (рис.6).


Рис 6. Список активных Пользователей в открытой информационной базе.

 

Для сравнения, на рис.7 представлен этот же список, как он визуализирован в программе 1С:Предприятие.



Рис 7. Список активных Пользователей в открытой информационной базе,
как
это представлено в программе 1С:Предприятие.

 


Исходные тексты этого примера (26 кб) можно скачать здесь : get_listuser_regact_1cv8.zip
Исходные тексты Delphi-компонента TConnectTo1Cv8 можно скачать здесь (43 кб).
Учебную конфигурацию можно скачать здесь (41 кб).


Дополнительно по этой теме можно найти информацию в специальной литературе по системе 1Cv8.

Например, в книге :

    1С:Предприятие 8.0 Простые примеры разработки. А.П. Габец, Д.И. Гончаров, М., Издательство ООО "1С-Паблишинг".

 

© 15.10.2007 Сергей Попов

 


Hosted by uCoz
-->