/// <summary>
 /// псевдодесериализация object[] в FunctionalLanguageDef
 /// В конце выполняется синхронизация параметров функции с параметрами текущего объекта (параметрам функции присвоятся параметры текущего объекта при совпадении имён)
 /// </summary>
 /// <param name="Value"></param>
 /// <param name="fld"></param>
 public void FromSimpleValue(object Value, FunctionalLanguageDef fld)
 {
     object[] obj = (object[])Value;
     Name = (string)obj[0];
     object[] Pars = (object[])obj[1];
     Parameters = new ParameterDef[Pars.Length];
     for (int i = 0; i < Pars.Length; i++)
     {
         Parameters[i] = new ParameterDef();
         Parameters[i].FromSimpleValue(Pars[i], fld);
     }
     Function            = fld.FunctionFromSimpleStruct(obj[2]);
     FormCustomizeString = (string)obj[3];
     paramValues         = (SortedList)obj[4];
     SyncParams(Function);
 }
 /// <summary>
 /// Синхронизация параметров функции с параметрами текущего объекта (параметрам функции присвоятся параметры текущего объекта при совпадении имён)
 /// </summary>
 /// <param name="func"></param>
 private void SyncParams(FunctionalLanguage.Function func)
 {
     for (int i = 0; i < func.Parameters.Count; i++)
     {
         object o = func.Parameters[i];
         if (o is FunctionalLanguage.Function)
         {
             SyncParams(o as FunctionalLanguage.Function);
         }
         else if (o is ParameterDef)
         {
             ParameterDef op = o as ParameterDef;
             foreach (ParameterDef pd in Parameters)
             {
                 if (pd.ParamName == op.ParamName)
                 {
                     func.Parameters[i] = pd;
                     break;
                 }
             }
         }
     }
 }