private void button1_Click(object sender, EventArgs e) { AddrInfo addr_info = new AddrInfo(); if (text_ip_addr.Text.Trim() != string.Empty) { addr_info.ip = this.text_ip_addr.Text; } else { MessageBox.Show("ip addr is empty ! "); return; } if (text_port.Text.Trim() != string.Empty) { addr_info.port = this.text_port.Text; } else { MessageBox.Show("port is empty ! "); return; } Thread thread = new Thread(reciveAndListener); //如果线程绑定的方法带有参数的话,那么这个参数的类型必须是object类型,所以讲ip,和端口号 写成一个结构体进行传递 thread.Start(addr_info); }
private void reciveAndListener(object ipAndPort) { AddrInfo addr_info = (AddrInfo)ipAndPort; IPAddress ip = IPAddress.Parse(addr_info.ip); try { server = new TcpListener(ip, int.Parse(addr_info.port)); server.Start();//启动监听 MessageBox.Show("服务端开启侦听....\n "); } catch { MessageBox.Show("服务端侦听失败 "); } // rtboxkehu.Invoke(new showData(rtboxkehu.AppendText), "服务端开启侦听....\n"); while (true) { //获取连接的客户端对象 client = server.AcceptTcpClient(); MessageBox.Show("有客户端请求连接,连接已建立!"); NetworkStream reciveStream = client.GetStream(); #region 循环监听客户端发来的信息 do { byte[] buffer = new byte[buffer_size]; // 前面已定义buffersize=8000,类型为int int msgsize; try { lock (reciveStream) { msgsize = reciveStream.Read(buffer, 0, buffer_size); } if (msgsize == 0) { MessageBox.Show("客户端关闭连接"); break; } recv_buffer = Encoding.UTF8.GetString(buffer, 0, msgsize); MessageBox.Show("接收到数据,请点击显示方式"); } catch { MessageBox.Show("出现异常:连接已关闭 ! "); // rtboxkehu.Invoke(new showData(rtboxkehu.AppendText), "\n 出现异常:连接已关闭"); break; } } while (true); #endregion } }
/// добавление виртуального адреса (поддон/шлюз) private bool MayAddDefaultAdr() { bool ret = true; string sDefAdr; if (xPars.UseAdr4DocMode) { sDefAdr = String.Format("USID{0}{1}", xSm.MACAdr, xSm.sUser); AddrInfo xA = new AddrInfo(sDefAdr, xSm.nSklad); xA.ScanDT = DateTime.Now; if (AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType == AppC.MOVTYPE.PRIHOD) { if (!AppC.xDocTInf[xCDoc.xDocP.nTypD].AdrFromNeed) {// адрес-источник можно установить по умолчанию if (xCDoc.xOper.GetSrc(false).Length == 0) { xCDoc.xOper.SetOperSrc(xA, xCDoc.xDocP.nTypD, false); } } } if (AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType == AppC.MOVTYPE.RASHOD) { if (!AppC.xDocTInf[xCDoc.xDocP.nTypD].AdrToNeed) {// адрес-источник можно установить по умолчанию if (xCDoc.xOper.GetDst(false).Length == 0) { xCDoc.xOper.SetOperDst(xA, xCDoc.xDocP.nTypD, false); } } } } return(ret); }
/// подготовить и отобразить содержимое SSCC private void ShowSSCCContent(DataTable dtZ, string sSSCC, ServerExchange xSE, AddrInfo xA, ref Srv.CurrFuncKeyHandler ehKeybHdl) { const int NP_LEN = 5; int nTotMest, nM; string sNP, sUser = "", sFIO = ""; char cExCh = '='; DataRow xd; DateTime dVyr; List <string> lKMC = new List <string>(), lCur = new List <string>(); FRACT fTotEd, fE; nTotMest = 0; fTotEd = 0; try { string sA = ""; try { sA = xA.AddrShow; } catch { } try { sUser = xSE.AnswerPars["USER"]; if ((sUser == AppC.SUSER) || (sUser == AppC.GUEST)) { sFIO = (sUser == AppC.SUSER) ? "Admin" : "Работник склада"; } else { NSI.RezSrch zS = xNSI.GetNameSPR(NSI.NS_USER, new object[] { sUser }, "NMP"); if (zS.bFind) { sFIO = sUser + '-' + zS.sName; } else { sFIO = sUser; } } } catch { sFIO = ""; } xInf = aKMCName(String.Format("{0} ({1}) {2}", sSSCC.Substring(2), sA, sFIO), false); xInf.Add(aKMCName("", true, cExCh)[0]); if (dtZ.Rows.Count > 0) { DataView dv = new DataView(dtZ, "", "KMC", DataViewRowState.CurrentRows); foreach (DataRowView dva in dv) { xd = dva.Row; try { nM = (int)xd["KOLM"]; } catch { nM = 0; } try { fE = (FRACT)xd["KOLE"]; } catch { fE = 0; } try { dVyr = DateTime.ParseExact((string)xd["DVR"], "yyyyMMdd", null); } catch { dVyr = DateTime.MinValue; } nTotMest += nM; fTotEd += fE; if (!lKMC.Contains((string)xd["KMC"])) { lKMC.Add((string)xd["KMC"]); } lCur.Add(String.Format("{0,4} {1}", xd["KRKMC"], xd["SNM"])); //lCur.Add(String.Format("{0} {1,6} {2,5:F1} {3,6} {4,7}", dVyr.ToString("dd.MM"), xd["NP"], xd["EMK"], nM, fE)); sNP = xd["NP"].ToString(); if (sNP.Length > NP_LEN) { sNP = sNP.Substring(sNP.Length - NP_LEN, NP_LEN); } else { sNP = sNP.PadLeft(NP_LEN); } lCur.Add(String.Format("{0} {1,5} {2,5:F1} {3,6} {4,7}", dVyr.ToString("dd.MM"), sNP, xd["EMK"], nM, fE)); lCur.Add(aKMCName("", true)[0]); } xInf.Add(String.Format("Всего SKU: {0} Мест:{1} Ед.:{2}", lKMC.Count, nTotMest, fTotEd)); xInf.Add(aKMCName("", true, cExCh)[0]); xInf.Add(" Двыр №пт Емк Мест Ед."); xInf.Add(aKMCName("", true, cExCh)[0]); xInf.AddRange(lCur); } else { xInf.Add("Нет сведений!"); Srv.PlayMelody(W32.MB_3GONG_EXCLAM); } //xHelpS.ShowInfo(xInf, ref ehKeybHdl); Srv.HelpShow xSSCCCont = new Srv.HelpShow(this); //xSSCCCont.ShowInfo(xInf, ref ehKeybHdl); xSSCCCont.ShowInfo(null, (tcMain.SelectedIndex == PG_DOC) ? dgDoc : (tcMain.SelectedIndex == PG_SCAN) ? dgDet : null, xInf, ref ehKeybHdl); } catch (Exception ex) { int ggg = 999; } }
public int ProceedSSCC(ScanVarGP xSc, ref PSC_Types.ScDat scD, ServerExchange xSE) { int ret = AppC.RC_OK; // по умолчанию - обработку скана заканчиваем bool bExt, bCallExch = false, bMaySet = true; string sSSCC = ""; DataRow dr = null; RowObj xR; DialogResult dRez; //ServerExchange // xSE = new ServerExchange(this); if (xSE == null) { xSE = new ServerExchange(this); bCallExch = true; } // Внешние SSCC bExt = ((xSc.bcFlags & ScanVarGP.BCTyp.SP_SSCC_EXT) > 0) ? true : false; sSSCC = scD.sSSCC = xCDoc.xOper.SSCC = xSc.Dat; if (bCallExch) { ret = ConvertSSCC2Lst(xSE, xSc.Dat, ref scD, false); } else { ret = (xCLoad.dtZ.Rows.Count == 1) ? AppC.RC_OK : AppC.RC_MANYEAN; } if (xSE.AnswerPars.ContainsKey("ADRCELL")) { AddrInfo xA = new AddrInfo(xSE.AnswerPars["ADRCELL"], xSm.nSklad); if (xA.Addr.Length > 0) { if (!xCDoc.xOper.IsFillSrc()) { xCDoc.xOper.SetOperSrc(xA, xCDoc.xDocP.nTypD, true); } } } switch (xCDoc.xDocP.TypOper) { case AppC.TYPOP_PRMK: case AppC.TYPOP_MARK: if (!bExt && (xCDoc.xDocP.TypOper == AppC.TYPOP_MARK)) { // будет маркировка сборного поддона dr = AddDetSSCC(xSc, xCDoc.nId, ScanVarGP.BCTyp.SP_SSCC_INT, ""); if (dr != null) { drDet = dr; } break; } if (drDet != null) { xR = new RowObj(drDet); if (xR.IsSSCC) { dRez = MessageBox.Show( String.Format("SSCC={0}\nОтменить (Enter)?\n(ESC)-изменить SSCC", xR.sSSCC), "Уже маркирован!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); bMaySet = (dRez == DialogResult.OK) ? false : true; } if (bMaySet) { drDet["SSCC"] = xSc.Dat; SetOverOPR(false, drDet); } } break; case AppC.TYPOP_MOVE: // операция перемещения if (!xCDoc.xOper.IsFillSrc() && !xCDoc.xOper.IsFillDst() && (xSm.xAdrFix1 == null)) { Srv.ErrorMsg("Адрес не указан!", true); return(ret); } if ((ret == AppC.RC_OK) || (ret == AppC.RC_MANYEAN)) { if (xCLoad.dtZ.Rows.Count == 1) { // однородный поддон if (xCDoc.xOper.IsFillSrc() && ((xCDoc.xOper.xAdrSrc.nType & ADR_TYPE.SSCC) > 0)) { Srv.ErrorMsg("SSCC-Адрес недопустим!", true); break; } else { // 090.08.18 //AddDet1(ref scD, out dr); ret = AppC.RC_WARN; } } else { // сборный поддон идет одной строкой dr = AddDetSSCC(xSc, xCDoc.nId, ScanVarGP.BCTyp.SP_SSCC_EXT, ""); if (dr is DataRow) { ret = AppC.RC_OK; if (AppPars.ShowSSCC) { ShowSSCCContent(xCLoad.dtZ, xSc.Dat, xSE, xCDoc.xOper.xAdrSrc, ref ehCurrFunc); } } } } else { // получить расшифровку SSCC от сервера не удалось if ((xSE.ServerRet == AppC.EMPTY_INT) || (xSE.ServerRet == AppC.RC_OK)) { // но это не ошибка на сервере, возможно, сетевая ошибка dr = AddDetSSCC(xSc, xCDoc.nId, ScanVarGP.BCTyp.SP_SSCC_EXT, ""); ret = AppC.RC_OK; } } if (dr != null) { drDet = dr; } //IsOperReady(dr); IsOperReady(); break; case AppC.TYPOP_DOCUM: case AppC.TYPOP_KMPL: // документ или комплектация if ((!xCDoc.xOper.IsFillSrc() && (xPars.UseAdr4DocMode) && (AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType == AppC.MOVTYPE.RASHOD))) { Srv.ErrorMsg("Адрес не указан!", true); return(ret); } if (ret == AppC.RC_OK) { if (xCLoad.dtZ.Rows.Count == 1) { // монопаллет, продолжается обычная обработка скана if (!bCallExch) { AddDet1(ref scD, out dr); } else { ret = AppC.RC_WARN; } } } else if (ret == AppC.RC_MANYEAN) { // для сборного поддона if (AppC.xDocTInf[xCDoc.xDocP.nTypD].MoveType == AppC.MOVTYPE.AVAIL) { // в инвентаризацию - добавление без запроса ret = AddGroupDet(ret, (int)NSI.SRCDET.SSCCT, xSc.Dat); } else { if (AppPars.ShowSSCC) { WaitScan4Func(AppC.F_CNTSSCC, "Содержимое SSCC", "Отсканируйте SSCC", xSc); } } // в любом случае обработку скана заканчиваем ret = AppC.RC_OK; } break; case AppC.TYPOP_OTGR: ret = SSCC4OTG(xSE, xSc, ref scD, (bExt) ? ScanVarGP.BCTyp.SP_SSCC_EXT : ScanVarGP.BCTyp.SP_SSCC_INT); break; } return(ret); }
private int AdrResult(ScanVarGP xSc, ref PSC_Types.ScDat scD, AddrInfo xA) { int nRec, nRet = AppC.RC_OK; DataRow dr; DialogResult dRez; nRet = ConvertAdr2Lst(xA, AppC.COM_ADR2CNT, "ROW", false, NSI.SRCDET.FROMADR); if (nRet == AppC.RC_OK) { nRec = xCLoad.dtZ.Rows.Count; if (nRec == 1) { scD = new PSC_Types.ScDat(new ScannerAll.BarcodeScannerEventArgs(ScannerAll.BCId.NoData, "")); //SetVirtScan(xCLoad.dtZ.Rows[0], ref scD, true, false); SetVirtScan(xCLoad.dtZ.Rows[0], ref scD, true, true); scD.nRecSrc = (int)NSI.SRCDET.FROMADR; xCDoc.xOper.SSCC = scD.sSSCC; // Если пришел адрес назначения if ((scD.xOp.xAdrDst != null) && (scD.xOp.xAdrDst.Addr.Length > 0)) { xCDoc.xOper.xAdrDst_Srv = scD.xOp.xAdrDst; // сохранить рекомендации сервера if (xDestInfo == null) { int FontS = 28, INFWIN_WIDTH = 230, INFWIN_HEIGHT = 90; System.Drawing.Rectangle recInf, screen = Screen.PrimaryScreen.Bounds; recInf = new System.Drawing.Rectangle((screen.Width - INFWIN_WIDTH) / 2, 200, INFWIN_WIDTH, INFWIN_HEIGHT); xDestInfo = new Srv.HelpShow(this, recInf, 1, FontS, 0); } xDestInfo.ShowInfo(new string[] { scD.xOp.xAdrDst.AddrShow }, ref ehCurrFunc); } scD.xOp = (xCDoc.xOper == null) ? new CurOper(false) : xCDoc.xOper; if ((xCDoc.xDocP.TypOper == AppC.TYPOP_DOCUM) || (xCDoc.xDocP.TypOper == AppC.TYPOP_KMPL) || (xCDoc.xDocP.TypOper == AppC.TYPOP_KMSN)) {// будет редактирование количества "отсканированной" продукции return(AppC.RC_CONTINUE); } // далее выполняется только для операций if (xCDoc.xDocP.TypOper == AppC.TYPOP_MOVE) { if (scD.tTyp == AppC.TYP_TARA.TARA_PODDON) {// для поддонов редактирования не будет scCur = scD; if (AddDet1(ref scD, out dr)) { //xCDoc.xOper.bObjOperScanned = true; xCDoc.xOper.SetOperObj(dr, xCDoc.xDocP.nTypD, false); //SetDetFields(false); if (dr != null) { drDet = dr; //dr["SSCC"] = scD.sSSCC; //xCDoc.xOper.SSCC = scD.sSSCC; } } } } //IsOperReady(false); } else if (nRec > 1) {// ROW - добавление группы if (xCDoc.xDocP.TypOper == AppC.TYPOP_DOCUM) { dRez = MessageBox.Show( String.Format("Новых строк {0}\nДобавить (Enter)?\n(ESC)- вывод на экран", xCLoad.dtZ.Rows.Count), "Добавление продукции", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); } else { dRez = DialogResult.Cancel; } if (dRez == DialogResult.OK) { //nRet = AddGroupDet(AppC.RC_MANYEAN, (int)NSI.SRCDET.FROMADR, xA.AddrShow); nRet = AddGroupDet(AppC.RC_MANYEAN, (int)NSI.SRCDET.FROMADR, ""); } else { if (AppC.RC_OK == ConvertAdr2Lst(xA, "TXT")) { // справочная информация, просто выводится xHelpS.ShowInfo(xInf, ref ehCurrFunc); } } } } return(nRet); }
private int SetOverOPR(bool bAfterScan, DataRow drOpr, string sComm) { bool bNeedTrans; int nRet = AppC.RC_OK; ServerExchange xSE = new ServerExchange(this); if (drOpr != null) { bNeedTrans = (((AppC.OPR_STATE)drOpr["STATE"] != AppC.OPR_STATE.OPR_TRANSFERED) || (xCDoc.xDocP.nTypD != AppC.TYPD_OPR)); if (bNeedTrans) { if (bAfterScan) { if ((scCur.sKMC == (string)drDet["KMC"]) && (scCur.nParty == (string)drDet["NP"]) && (scCur.dDataIzg.ToString("yyyyMMdd") == (string)drDet["DVR"])) { bAfterScan = false; } } if (!bAfterScan) { // выгрузка по кнопочке //drOpr["STATE"] = AppC.OPR_STATE.OPR_READY; xCUpLoad = new CurUpLoad(xPars); xDP = xCUpLoad.xLP; xCUpLoad.bOnlyCurRow = true; xCUpLoad.drForUpl = drOpr; xCUpLoad.sCurUplCommand = sComm; if (xPars.OpAutoUpl) { // авто-выгрузка операций string sL = UpLoadDoc(xSE, ref nRet); if (xSE.ServerRet == AppC.RC_OK) { AddrInfo xA = xCDoc.xOper.xAdrSrc; xCDoc.xOper = new CurOper(false); if (IsAutoMark()) { xCDoc.xOper.SetOperSrc(xA, xCDoc.xDocP.nTypD, false); // Имитация вызова //W32.SimulKey(W32.VK_SHIFT, 0); //W32.SimulKey(W32.VK_D1, 2); } //return (nRet); } if (nRet != AppC.RC_OK) { if (nRet == AppC.RC_HALFOK) { Srv.PlayMelody(W32.MB_2PROBK_QUESTION); MessageBox.Show(sL, "Предупреждение!"); } else { Srv.ErrorMsg(sL, true); } } if ((xSE.ServerRet != AppC.EMPTY_INT) && (xSE.ServerRet != AppC.RC_OK)) { // операция выгрузки не прошла на сервере (содержательная ошибка) //if (xSE.ServerRet == 99) // CompareAddrs(xCDoc.xOper.xAdrDst.Addr, String.Format("---{0}-----------После выгрузки", xSE.ServerRet), true); xCDoc.xOper.SetOperDst(null, xCDoc.xDocP.nTypD, true); } } else { xCDoc.xOper = new CurOper(true); } xCUpLoad = null; } } } else { Srv.ErrorMsg("Продукция не определена!"); } return(nRet); }
/// обработка полученного адреса private int ProceedAdrNew(ScanVarGP xSc, ref PSC_Types.ScDat scD) { int nRet = AppC.RC_OK, nSrcOrDst = 0; // 1-From, 2-To bool IsSSCC, bOperReady; string sA1, sA2; AddrInfo xA; // значение адреса (без AI) //scD.sN = xSc.Dat.Substring(2); if ((xSc.bcFlags & ScanVarGP.BCTyp.SP_SSCC) > 0) { IsSSCC = true; scD.sN = xSc.Dat; // SSCC полностью } else { IsSSCC = false; scD.sN = xSc.Dat.Substring(2); // значение адреса (без AI) } if ((xSm.xAdrFix1 != null) && (!IsSSCC)) {// зафиксирован адрес, пришел еще один //if (!xCDoc.xOper.bObjOperScanned) if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) == 0) {// поддон еще не сканировался, сейчас пришел адрес отправителя nSrcOrDst = 1; xCDoc.xOper.SetOperDst(xSm.xAdrFix1, xCDoc.xDocP.nTypD, false); } else {// поддон уже сканировался, сейчас пришел адрес получателя nSrcOrDst = 2; xCDoc.xOper.SetOperSrc(xSm.xAdrFix1, xCDoc.xDocP.nTypD, false); } } else {// фиксированных адресов пока не было nSrcOrDst = SrcOrDest(xSc, ref scD); } // if ((nSrcOrDst == 1) || (nSrcOrDst == 2)) // {// отсканированным адресом следует воспользоваться как адресом отправителя или получателя // AddrInfo xA = new AddrInfo(xSc, xSm.nSklad); // if (!xCDoc.xOper.IsFillSrc()) // nSrcOrDst = 1; // else // { // if (xCDoc.nTypOp == AppC.TYPOP_DOCUM) // nSrcOrDst = 1; // else // { // if (!xCDoc.xOper.IsFillDst() && !xCDoc.xOper.bObjOperScanned) // { // if (xCDoc.xOper.xAdrSrc.Addr != scD.sN) // { // DialogResult drQ = MessageBox.Show("Изменить \"ИЗточник\" (Enter)?\n(ESC) - отмена", // "Снова адрес!", // MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); // if (drQ == DialogResult.OK) // nSrcOrDst = 1; // else // nSrcOrDst = 0; // } // else // nSrcOrDst = 1; // } // else // nSrcOrDst = 2; // } // } //} //if (nSrcOrDst > 0) //{// отсканированным адресом следует воспользоваться как адресом отправителя или получателя // if (nSrcOrDst == 1) // {// это источник // if (xCDoc.xOper.GetDst(false) == xAFromScan.Addr) // xAFromScan = null; // else // xCDoc.xOper.SetOperSrc(xAFromScan, xCDoc.xDocP.nTypD); // } // else // {// это приемник // if (xCDoc.xOper.GetSrc(false) == xAFromScan.Addr) // xAFromScan = null; // else // xCDoc.xOper.SetOperDst(xAFromScan, xCDoc.xDocP.nTypD); // } // if (xAFromScan == null) // Srv.ErrorMsg("Адреса совпадают...", scD.sN, true); // else // { // if (xCDoc.nTypOp != AppC.TYPOP_DOCUM) // { // if (bShowTTN) // { // tEAN.Text = xCDoc.xOper.GetSrc(true); // tDatMC.Text = xCDoc.xOper.GetDst(true); // nRet = IsOperReady(true, drDet); // if (nRet == AppC.RC_OK) // RetAfterTempMove(); // } // else // Srv.ErrorMsg("ТТН!", true); // } // if (nSrcOrDst == 1) // {//для источника определяем содержимое // if (xPars.GetAdrContentFromSrv) // {//если это требуется // nRet = AdrResult(xSc, ref scD, xAFromScan); // } // } // } //} if ((nSrcOrDst == 1) || (nSrcOrDst == 2)) {// отсканированным адресом следует воспользоваться как адресом отправителя или получателя xA = new AddrInfo(xSc, xSm.nSklad); //if (!xCDoc.xOper.bObjOperScanned if (((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) == 0) && (xPars.UseAdr4DocMode)) {// пока только для ... инвентаризации ... if (xCDoc.xOper.nOperState == AppC.OPR_STATE.OPR_EMPTY) { PSC_Types.ScDat scEmp = new PSC_Types.ScDat(new BarcodeScannerEventArgs(BCId.Code128, "")); if (!bInEasyEditWait) { SetDetFields(true, ref scEmp); } } } if (nSrcOrDst == 1) {// это источник xCDoc.xOper.SetOperSrc(xA, xCDoc.xDocP.nTypD, true); sA1 = xA.AddrShow; sA2 = xCDoc.xOper.GetDst(false); } else {// это приемник sA1 = xCDoc.xOper.GetSrc(false); sA2 = xA.AddrShow; if (xA.Addr == sA1) { Srv.ErrorMsg("Адреса совпадают...", sA2, true); return(AppC.RC_CANCEL); } if (xCDoc.xOper.xAdrDst_Srv != null) { // а сервер задавал адрес приемника if (xCDoc.xOper.xAdrDst_Srv.Addr != xA.Addr) { // и они разные DialogResult drQ = MessageBox.Show(String.Format( "(Yes) - {0}\n<<с сервера>>\n(No) - {1}\n<<отсканирован>>\n(ESC) - отмена", xCDoc.xOper.xAdrDst_Srv.Addr, xA.Addr), "Адрес назначения ?!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (drQ == DialogResult.Yes) { xA = xCDoc.xOper.xAdrDst_Srv; // сохраним приемником рекомендованный } else if (drQ == DialogResult.No) { // сохраним приемником отсканированный } else { return(AppC.RC_CANCEL); } } } xCDoc.xOper.SetOperDst(xA, xCDoc.xDocP.nTypD, true); } //var d = ZeroCell(xCDoc.xOper.xAdrSrc, xCDoc.xOper.xAdrDst); //if (d != null) //{ // xCDoc.xOper = new CurOper(xCDoc.xDocP.DType); //} bOperReady = (xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_READY) > 0; if (bOperReady) {// операция готова к отправке, все введено nRet = IsOperReady(); if (nRet == AppC.RC_OK) { if (IsAutoMark()) { } else { if (xCDoc.xDocP.nTypD == AppC.TYPD_OPR) { RetAfterTempMove(); // возможен возврат из временного перемещения } } } } else { //if (!xCDoc.xOper.bObjOperScanned) if ((xCDoc.xOper.nOperState & AppC.OPR_STATE.OPR_OBJ_SET) == 0) { if (nSrcOrDst == 1) { //для источника определяем содержимое if (AppC.xDocTInf[xCDoc.xDocP.nTypD].TryFrom && xPars.UseAdr4DocMode) { //если это требуется if (!IsSSCC) { nRet = AdrResult(xSc, ref scD, xA); } else { nRet = AppC.RC_CONTINUE; } } } else { //tAdrTo.Text = xCDoc.xOper.GetDst(true); } } } } else { if (nSrcOrDst == AppC.RC_NOTADR) { nRet = AppC.RC_CONTINUE; } } return(nRet); }