//[HttpPost]
        public PartialViewResult EditForm(Turgunda6.Models.RecordModel rmodel)
        {
            string chk  = Request.Params["chk"];  // проверка ОДНОЙ введенной связи
            string ok   = Request.Params["ok"];   // фиксация изменений, запоминание в БД
            string canc = Request.Params["canc"]; // Отмена редактирования

            //string p_4 = Request["p_4"];
            //string p_4_ = Request.QueryString["p_4"];

            if (rmodel.firsttime)
            { // формирование формы редактирования
                rmodel.firsttime = false;
                bool replacemode = true;
                if (rmodel.eid == "create888")
                {
                    string eid = Turgunda7.SObjects.AddInvRelation(rmodel.bid, rmodel.iprop, rmodel.etype,
                                                                   (new Turgunda6.Models.UserModel(Request)).Uuser);
                    rmodel.eid  = eid;
                    replacemode = false;
                }
                rmodel.LoadFromDb();
                rmodel.MakeLocalRecord();
                //XElement[] arr = rmodel.GetHeaderFlow().ToArray();
                //rmodel.MakeXResult();
                if (!replacemode)
                {
                    ViewData["insertnewrelation"] = rmodel.eid;
                }
            }
            else if (canc != null)
            {
                rmodel.LoadFromDb();
                rmodel.MakeLocalRecord();
                return(PartialView("EditFormFinal", rmodel));
            }
            else
            { // Собирание данных из реквеста
                XElement   format = rmodel.CalculateFormat();
                XElement[] hrows  = rmodel.GetHeaderFlow().ToArray();
                if (chk != null)
                {   // Проверка. Находим первый ряд такой, что: а) это прямое отношение, б) набран текст и есть тип, в) нет ссылки.
                    // Делаем поисковый запрос через SearchModel. Результаты SearchResult[] помещаем в ViewData под именем searchresults,
                    // а в ViewData["searchindex"] поместим индекс
                    var pair = hrows.Select((hr, ind) => new { hr = hr, ind = ind })
                               .FirstOrDefault(hrind =>
                    {
                        var hr = hrind.hr;
                        if (hr.Name != "d")
                        {
                            return(false);
                        }
                        var ind = hrind.ind;
                        if (string.IsNullOrEmpty(rmodel.GetFValue(ind)) || string.IsNullOrEmpty(rmodel.GetTValue(ind)))
                        {
                            return(false);
                        }
                        if (!string.IsNullOrEmpty(rmodel.GetPValue(ind)))
                        {
                            return(false);
                        }
                        return(true);
                    });
                    if (pair != null)
                    {
                        int ind = pair.ind;
                        // Ничего проверять не буду
                        Turgunda6.Models.SearchModel sm = new Models.SearchModel(rmodel.GetFValue(ind), rmodel.GetTValue(ind));
                        ViewData["searchresults"] = sm.Results;
                        ViewData["searchindex"]   = ind;
                    }
                }
                else if (ok != null)
                { // Запоминание
                    // Соберем получившуюся запись
                    XElement record = new XElement(ONames.GetXName(rmodel.etype),
                                                   new XAttribute(ONames.rdfabout, rmodel.eid),
                                                   hrows.Select((fd, ind) => new { fd = fd, ind = ind })
                                                   .Select(fdind =>
                    {
                        XElement fd = fdind.fd;
                        int ind     = fdind.ind;
                        XName xprop = ONames.GetXName(fd.Attribute("prop").Value);
                        if (fd.Name == "f")
                        {
                            string value = rmodel.GetFValue(ind);
                            if (true || !string.IsNullOrEmpty(value))     // Эта проверка мешает(ла) уничтожению полей
                            {
                                // Надо определить еще нужен ли язык и какой
                                bool istext = TurgundaCommon.ModelCommon.IsTextField(fd.Attribute("prop").Value);
                                return(new XElement(xprop, rmodel.GetFValue(ind),
                                                    istext ? new XAttribute(ONames.xmllang, rmodel.lang) : null));
                            }
                        }
                        else if (fd.Name == "d")
                        {
                            string pvalue = rmodel.GetPValue(ind);
                            if (!string.IsNullOrEmpty(pvalue))
                            {
                                return(new XElement(xprop,
                                                    new XAttribute(ONames.rdfresource, rmodel.GetPValue(ind))));
                            }
                        }
                        return((XElement)null);
                    }));
                    // Пошлем эту запись на изменение
                    Turgunda7.SObjects.PutItemToDb(record, false, (new Turgunda6.Models.UserModel(Request)).Uuser);
                    // Если эта запись является записью типа "DocumentPart", то фиксируем две величины:
                    // ссылку inDocument и идентификатор, имеющийся "за" этой ссылкой
                    if (record.Name.LocalName == "DocumentPart" && record.Name.NamespaceName == "http://fogid.net/o/")
                    {
                        var resource_el = record.Element("{http://fogid.net/o/}inDocument");
                        if (resource_el != null)
                        {
                            string pvalue = resource_el.Attribute(ONames.rdfresource).Value;
                            Session["inDocumentId"] = pvalue;
                            int ind = 0;
                            for (; ind < Turgunda6.Models.RecordModel.nfields; ind++)
                            {
                                if (rmodel.GetPValue(ind) == pvalue)
                                {
                                    break;
                                }
                            }
                            if (ind < Turgunda6.Models.RecordModel.nfields)
                            {
                                //var s1 = rmodel.GetFValue(ind);
                                //var s2 = rmodel.GetPValue(ind);
                                //var s3 = rmodel.GetTValue(ind);
                                //var s4 = rmodel.GetVValue(ind);

                                Session["inDocumentName"] = rmodel.GetVValue(ind);
                            }
                        }
                    }

                    return(PartialView("EditFormFinal", rmodel));
                }
                else if (rmodel.command != null && rmodel.command == "SetVariant")
                { // Выбор варианта значения для связывания
                    string[] parts  = rmodel.exchange.Split('|');
                    int      ind    = Int32.Parse(parts[0]);
                    string   p_id   = parts[1];
                    string   p_name = Server.UrlDecode(parts[2]);
                    rmodel.SetPValue(ind, p_id);
                    rmodel.SetVValue(ind, p_name);
                    rmodel.CalculateFormat();
                }
                else if (rmodel.command != null && rmodel.command == "SetVariantNew")
                { // Связывание с новым значением
                    string[] parts  = rmodel.exchange.Split('|');
                    int      ind    = Int32.Parse(parts[0]);
                    string   p_type = parts[1];
                    string   p_name = Server.UrlDecode(parts[2]);
                    string   nid    = Turgunda7.SObjects.CreateNewItem(p_name, p_type, (new Turgunda6.Models.UserModel(Request)).Uuser);
                    rmodel.SetPValue(ind, nid);
                    rmodel.SetVValue(ind, p_name);
                    rmodel.CalculateFormat();
                }
                else
                { // Остальное
                }
            }
            return(PartialView("EditForm", rmodel));
        }
 //[HttpPost]
 public PartialViewResult SetVariant(Turgunda6.Models.RecordModel rmodel)
 {
     //Turgunda2.Models.RecordModel rmodel = new Models.RecordModel();
     //return PartialView("EditForm", rmodel);
     return(EditForm(rmodel));
 }