Вот такой примерно код в DocuView строит MenuButton
	PHP код:
	
		
			
public void init()
{
    #define.ctrlBuildAdd('ctrlAdd')
    docuType                            docuType;
    formBuildMenuButtonControl          menuCtrl;
    formBuildFunctionButtonControl      itemButtonCtrl;
    ;
    DocuType::createDefaults();
    menuCtrl = this.form().design().control(#ctrlBuildAdd);
    while select docuType
        index TypeIdx
    {
        itemButtonCtrl = menuCtrl.addControl(FormControlType::MENUFUNCTIONBUTTON,docuType.TypeId);
        itemButtonCtrl.menuItemType(MenuItemType::Action);
        itemButtonCtrl.menuItemName(menuItemActionStr(DocuActionNew));
        itemButtonCtrl.text(docuType.TypeId);
    }
    super();
} 
		
	
 formBuildFunctionButtonControl-ы вызывают DocuAction, в main которого
	PHP код:
	
		
			
static void main(Args args)
{
    docuAction          action;
    Common              common;
    FormDataSource      datasource;
    switch (args.dataset())
    {
        case TableNum(DocuRef):
            if (args.parm() || args.parmEnum() != DocuCode::Add)
                action = docuAction::newDocuRef(args.record());
            else
                action = docuAction::newArgs(args);
            break;
        case TableNum(DocuType):
            action = docuAction::newDocuType(args.record());
            break;
        default:
            throw error(strFmt("@SYS25538",classId2Name(classIdGet(action))));
    }
    if (! action)
        return;
    action.unpack();
    action.run(args);
    if (args.record())
    {
        common = args.record();
        if (common.dataSource())
        {
            datasource = common.dataSource();
            datasource.reread();
        }
    }
} 
		
	
 Смотрю я на DocuView и не пойму, где же он этот args.dataset() и вообще args инициализирует??