private void ShowDialog(int id, BaseObject parent = null, BaseObject child = null)
 {
     try
     {
         BaseObject baseObject = (BaseObject)parentType.GetConstructor(new Type[] { typeof(int), typeof(BaseObject), typeof(BaseObject), typeof(bool) }).Invoke(new object[] { id, parent, child, true });
         if (baseObject.ErrCode != ErrCode.ErrOK)
         {
             MessageBox.Show("Ошибка загрузки данных: " + baseObject.ErrMessage, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
             return;
         }
         BaseObjectDialog baseDialog = (BaseObjectDialog)baseObject.DialogType.GetConstructor(new Type[] { typeof(BaseObject) }).Invoke(new object[] { baseObject });
         baseDialog.ShowDialog(this);
         if (baseDialog.DialogResult == DialogResult.OK)
         {
             if (execute != null)
             {
                 RetrieveForm(baseObject.Id); //Здесь надо включить обновление формы
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("Ошибка открытия формы: " + ex.Message, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
 protected DialogResult ShowDialog(BaseObject baseObject)
 {
     try
     {
         BaseObjectDialog baseDialog = (BaseObjectDialog)baseObject.DialogType.GetConstructor(new Type[] { typeof(BaseObject) }).Invoke(new object[] { baseObject });
         return(baseDialog.ShowDialog(this));
     }
     catch (Exception ex)
     {
         MessageBox.Show("Ошибка открытия формы: " + ex.Message, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return(DialogResult.Abort);
     }
 }