declare
cursor c_obj is
select b1.ID as ID_HOZ_OP, a1.ID as PRD_ID
from Z#HOZ_OP_ACC b1, Z#PRODUCT a1
where a1.C_ARRAY_DOG_ACC = b1.COLLECTION_ID
and a1.C_DATE_CLOSE is NULL
and a1.CLASS_ID in ('AGR_FACTOR')
and b1.C_ACCOUNT_DOG#1#2 = P#ACC
and b1.C_NAME_ACCOUNT in (18858763)
and exists (
select c1.ID as A$1
from Z#RES_ACC_VAL e1, Z#PRODUCT d2, Z#RES_PORT d1, Z#HOZ_OP_ACC c1
where d1.id=d2.id
and (c1.COLLECTION_ID = b1.COLLECTION_ID
and d1.C_ACCRS = e1.COLLECTION_ID
and c1.C_ACCOUNT_DOG#1#2 = e1.C_RES_ACC
and e1.C_DATE_END is NULL
and (d2.C_DATE_CLOSE is NULL or d2.C_DATE_CLOSE >= ONDATE)
and (d2.C_COM_STATUS is NULL or d2.C_COM_STATUS != 2047865)
and (d2.C_NUM_DOG in ('POS_MFAS_30','POS_MFZS_30','POS_MFABZ_30')))
);
X c_obj%rowtype;
begin
for plp$c_obj in c_obj loop
X := plp$c_obj;
FACT := X.PRD_ID;
GEN := Z#AGR_FACTOR#INTERFACE.get_parent(Z#AGR_FACTOR#INTERFACE.get_object(FACT).collection_id).id;
end loop;
end;