

var MasterArhivFunctions(SYS,command,param1){
	nabor={
		"функция",
		"имя в архиве"
		};
	n=nabor.indexOf(command);
	if(n==0)UstanovkaFunctiona(SYS,param1);
	if(n==1){
		if(!SYS->isset("FinArhiv"))return "нет аналога";
		return SYS->FinArhiv.getName();
		}

}



int ControlModuleX(moduleX){
	m=getThisModule().find(moduleX);
	if(typeof(m)!="module"){
		include(moduleX);
		m=getThisModule().find(moduleX);
		if(typeof(m)!="module"){
			m=getThisModule().create(moduleX);
			return 1;
			}
		return 2;
		}
	return 3;
}


string GeneratorUniqueName2(AllNames,n){
	size=(int)'Z'-(int)'A'+1;
	if(n<1)n=1;
	while(1){
		newName="";
		for(i=0;i<n;++i)newName+=(char)((rand()%size)+(int)'A');
		if(AllNames.indexOf(newName)<0)break;
		n+=2;
		}
	return newName;
}



void UstanovkaFunctiona(SYS,func){
	if(typeof(func)=="string")func=getFunction(func);
	if(typeof(func)!="function")return;
	if(typeof(*SYS)!="map")*SYS=(map)0;
	SYS->F=func;
	moduleX="code\\UznikZamkaIF\\ArhivFunctions\\Arhiv.txt";
	n=ControlModuleX(moduleX);
	if(n==1)trace("Архив создан.");
	if(n==2)trace("Архив загружен.");
	m=getThisModule().find(moduleX);
	saveok=1;
	S=m.getAllFunctions();
	for(i=0;i<S.size();++i)if(S[i]==func){
		SYS->FinArhiv=S[i];
		saveok=0;
		break;
		}
	if(saveok){
		UniqueName=GeneratorUniqueName2(m.getAllFunctionNames(),20);
		func=func.copy();
		func.setName(UniqueName);
		SYS->FinArhiv=m.add(func);
		}
	m.controlSave();
}

