• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Считать информацию из файлов в Лоцмане массово

Автор danver, 20.02.19, 11:24:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

danver

Здравствуйте!
Есть задача. В Лоцман либо уже загружены, либо будут загружены программно файлы Вертикали (.vtp). Данные с загруженных в Лоцман файлов требуется считать повторно, не заходя в каждый объект, и не выбирая руками пункт "получить информацию", и не делать вообще никаких ручных манипуляций. Можно ли как-то автоматизировать?

Задал этот вопрос техподдержке Аскона, получил ответ:
ЦитироватьПри создании плагина есть возможность при помощи API (LoadDocument) интегратора получать информацию из всех требуемых файлов последовательно.
Справка:
C:\Program Files (x86)\ASCON\Loodsman\SDK\Integrator\Integrator.chm

Работал до этого только с API сервера приложений, читаю справку по API интегратора, и никак не могу прикрутить этот его метод LoadDocument к плагину Лоцмана, как советует техподдержка. Подскажите, как это должно быть реализовано?

Chaa

LoadDocument открывает файл в инструменте.
Меню "Получить информацию" соответствует ReadDocument.

Итак, у вас есть чекаут, идентфикатор родительского объекта ParentVersionID, идентфикатор версии VersionID, идентификаторы типов этиъ объектов ParentTypeID, TypeID, имя их связи LinkName, и имя и путь к файлу.
1. Вызываете GetProxyUseCases, получаете идентификатор случая использования UseCaseID (поле _ID в наборе данных).

var
    LDataSet: IDataSet;
begin
    LDataSet := PluginCall.GetDataSet('GetProxyUseCases', VarArrayOf([0, ParentVersionID, VersionID]));
end;

2. Создаете интегратор или используете возможности Лоцмана по вызову интегратора, см. ниже. ConnectionString - строка подключения к СП, обычно имя компьютера, Base - имя базы данных, CheckOutID - идентификатор чекаута, в котором вы заблокировали оба описанных выше объекта для изменений.

var
    Integrator: IIntegrator;
begin
    Integrator := CreateComObject(CLASS_Integrator) as IIntegrator;
    Integrator.Connect(ConnectionString, Base, CheckOutID, '', '');
end;

3. Вызываете CreateDocument/ReadDocument.

    Integrator.ReadDocument(ParentVersionID, VersionID, LinkName,
        FileName, FilePath, C_Default, UseCaseID);

В клиенте Лоцмана есть т.н. методы API клиента, например IntegratorCreateDoc/IntegratorReadDoc. Там все то же самое, только шаг 2 сделает за вас клиент. Подробнее в LoodsmanClientApi.chm.
+ Благодарностей: 1

Chaa

Немного неправильно написал про GetProxyUseCases, там нужно передавать идентификаторы не самих объектов, а типов объектов.

var
    LDataSet: IDataSet;
begin
    LDataSet := PluginCall.GetDataSet('GetProxyUseCases', VarArrayOf([0, ParentTypeID, TypeID]));
end;

danver

ЦитироватьIntegrator.Connect(ConnectionString, Base, CheckOutID, '', '');

ConnectionString - как этот параметр должен выглядеть? Нигде ни в мануале, ни в примерах не увидел

Chaa

Обычно это список имен серверов приложений через точку с запятой.
Брать лучше всего из реестра Software\ASCON\Loodsman\SP или Software\ASCON\Loodsman\ClientSP (в зависимости от галочки "Использовать общий список серверов приложений").

Подробнее:
https://achechulin.blogspot.com/2012/06/remote-connection-params.html
https://github.com/achechulin/loodsman/blob/master/Loodsman/Loodsman.Infrastructure.Config.pas