Доброе время суток.
Пробегаю в базе по объектам определенного типа, беру их в работу, меняю пару атрибутов и возвращаю.
var
l_DataSet : TClientDataSet;
appServer : IMainSystem;
vRerurnCode,vError : OleVariant;
...
begin
....
if NOT DCOM.Connected then
DCOM.Open;
appServer := DCOM.GetServer as IMainSystem;
appServer.ConnectToDBEx('Base','','',vRerurnCode,vError);
l_DataSet.Data := appServer.FindObjects('Сквозной ТП', // список типов
'XXXX%', // шаблон поиска для ключевого атрибута
'', // шаблон поиска по версиям
'', // список состояний
'', // шаблон поиска по атрибутам
'', // зарезервирован
'', // зарезервирован
vRerurnCode,vError);
while not l_DataSet.Eof do begin
appServer.CheckOut(l_DataSet.FieldByName('_TYPE').AsString, // название типа
l_DataSet.FieldByName('_PRODUCT').AsString, // ключевой атрибут
l_DataSet.FieldByName('_VERSION').AsString, // версия объекта
0, // режим
vRerurnCode,vError
//Вызываю процедуру которая вносит изменения и сохраняет изменения.
SaveToLotsman(l_DataSet.FieldByName('_ID_VERSION').AsInteger);
//Вызываю процедуру в которой CancelCheckOut
CancelToLotsman(l_DataSet.FieldByName('_ID_VERSION').AsInteger);
l_DataSet.Next;
end;
DCOM это глобальная TDCOMConnection
в функциях SaveToLotsman и CancelToLotsman
так же присутствует код такого вида
var
appServer : IMainSystem;
...
begin
....
if NOT DCOM.Connected then
DCOM.Open;
appServer := DCOM.GetServer as IMainSystem;
appServer.ConnectToDBEx('Base','','',vRerurnCode,vError);
Примерно через 5 минут съедаются все лицензии.
Количество объектов которые были взяты в работу, изменены и возвращены в разы больше чем лицензий.
Не могу понять в какой момент берется лицензия.