Показать сообщение отдельно
Старый 30.12.2008, 17:52   #2  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
? SysSetupFormRun
Вариант с навешиванием функциональности на SysSetupFormRun рассматривается?:

Classes\SysSetupFormRun\dimensionDenyEdit(...):
X++:
void dimensionDenyEdit( SysDimension _sysDimension )
{
    FormDataSource  formDataSource  ;
    FormDataObject  formDataObject  ;

    SysDictTable    sysDictTable    ;
    SysDictField    sysDictField    ;

    Counter         counterSource   ;
    Counter         counterFields   ;
    int             dimArrayIdx = Dimensions::code2ArrayIdx( _sysDimension ) ;
    ;

    for( counterSource=1; counterSource<=this.dataSourceCount(); counterSource++ )
    {
        formDataSource = this.dataSource( counterSource ) ;
        sysDictTable = new SysDictTable( formDataSource.table() ) ;

        for( counterFields=1; counterFields <= sysDictTable.fieldCntWithoutSys(); counterFields++ )
        {
            sysDictField = sysDictTable.fieldObject( sysDictTable.fieldCnt2Id( counterFields ) ) ;
            if( sysDictField.typeId() == extendedTypeNum( Dimension ) )
            {
                formDataObject = formDataSource.object( fieldId2Ext( sysDictField.id(), dimArrayIdx ) ) ;
                if( formDataObject )
                {
                    formDataObject.allowEdit( false ) ;
                    // formDataObject.enabled( false ) ;
                }
            }
        }
    }
}
Classes\SysSetupFormRun\init():
X++:
public void init()
{
    super();
    SysSecurityFormSetup::loadSecurity(this);

    this.dimensionDenyEdit( SysDimension::Department ) ;
}
За это сообщение автора поблагодарили: Sada (2).