inserted_corec = cor_CreateEmpty(cnx);
            NIds1 = coa_GetElementCount(cnx, ids_first_class);
            NIds2 = coa_GetElementCount(cnx, ids_second_class);
            for(i=0; i<NIds1; i++)
            {
                str_id1 = coa_GetStringElement(cnx, ids_first_class, i);
                for(j=0; j<NIds2; j++)
                {
                    str_id2 = coa_GetStringElement(cnx, ids_second_class, j);
                    // create new record, then select it and add to result
                    create_params = coa_Create( cnx );
                    coa_AppendElement( cnx, create_params, prop_first_class);
                    coa_AppendElement( cnx, create_params, str_id1);
                    coa_AppendElement( cnx, create_params, prop_second_class);
                    coa_AppendElement( cnx, create_params, str_id2);
                    @co_lcall(par_area, par_class, "createAndSet",                         par_area=>par_area, par_class=>par_class, par_id=>par_id,                         create_params=>create_params, callback=>'""');
                    __GET_RETURNED_INTEGER(id_new);
                    __CREATE_QUERY("SELECT * FROM co_%s_%s WHERE id=%d",
                        par_area, par_class, id_new)
                    __SQL_GET_RESULT
                    cor_AppendRecordset(cnx, inserted_corec, corec);
                    __CLEAR_RESULT
                }
            }
            __CREATE_JS_FROM(inserted_corec)
            __RETURN_RECORDSET(inserted_corec)