} // TypeMoveDescr public RefPalleteMove(SQL1S ReadySS) : base(ReadySS) { //TypeObj = "ПеремещенияПаллет"; HaveCode = false; HaveName = false; } // RefPalleteMove (constructor)
} // ReactionKeyDo /// <summary> /// /// </summary> /// <param name="e"></param> protected override void ReactionSCDo(ReactionSCEventArgs e) { if (CurrentAction == ActionSet.ScanAdress) { if (e.Ref.GetType() != new RefSection(SS).GetType()) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } RefSection Section = e.Ref as RefSection; AdressUnLoad.FoundID(Section.ID); string TextQuery = "UPDATE $Спр.МестаПогрузки " + "SET " + "$Спр.МестаПогрузки.Адрес9 = :AdressID ," + "$Спр.МестаПогрузки.Сотрудник8 = :EmployerID ," + "$Спр.МестаПогрузки.Дата9 = :Date ," + "$Спр.МестаПогрузки.Время9 = :Time " + "WHERE "; if (DocUnload.Selected) { TextQuery += " $Спр.МестаПогрузки .КонтрольНабора = :DocUnload "; SQL1S.QuerySetParam(ref TextQuery, "DocUnload", DocUnload.ID); } else { TextQuery += " $Спр.МестаПогрузки .ID = :ID "; SQL1S.QuerySetParam(ref TextQuery, "ID", BoxUnLoad.ID); } SQL1S.QuerySetParam(ref TextQuery, "AdressID", AdressUnLoad.ID); SQL1S.QuerySetParam(ref TextQuery, "EmployerID", Employer.ID); SQL1S.QuerySetParam(ref TextQuery, "Date", DateTime.Now); SQL1S.QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond()); if (!SS.ExecuteWithoutRead(TextQuery)) { Negative("Не удалось зафиксировать! " + SS.WhatUNeed(CurrentAction)); return; } CurrentAction = ActionSet.ScanBox; Refresh(); return; } else if (CurrentAction != ActionSet.ScanBox) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } if (e.Ref.GetType() != new RefBox(SS).GetType()) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } RefBox Box = e.Ref as RefBox; BoxUnLoad.FoundID(Box.ID); DocUnload = new Doc(SS); CurrentAction = ActionSet.ScanAdress; AdressUnLoad = new RefSection(SS); Refresh(); }
private ABaseMode Refresh() { if (ControlCC == null) { return(Positive()); } GoodsCC.Clear(); IndexTableItem = 0; String TextQuery = "SELECT " + "DocCC.LineNo_ as Number, " + "Goods.$Спр.Товары.Артикул as Artikul, " + "Goods.Descr as NameItem, " + "Goods.ID as ID, " + "DocCC.$КонтрольНабора.Количество as Count " + "FROM DT$КонтрольНабора as DocCC (nolock) " + "JOIN $Спр.Товары as Goods (nolock) " + "ON Goods.Id = DocCC.$КонтрольНабора.Товар " + "WHERE " + "DocCC.iddoc = :iddoc"; SQL1S.QuerySetParam(ref TextQuery, "iddoc", ControlCC); if (!SS.ExecuteWithRead(TextQuery, out GoodsCC)) { return(Negative()); } if (GoodsCC.Rows.Count == 0) { return(Negative("В сборочном нет товара!")); } return(Positive()); } // Refresh
} // Ranges /// <summary> /// constructor /// </summary> /// <param name="ReadySS"></param> public RefGates(SQL1S ReadySS) : base(ReadySS) { //TypeObj = "Ворота"; HaveCode = true; HaveName = true; } // RefGates (constructor)
} //Зона в адресах машинного набора public RefItem(SQL1S ReadySS) : base(ReadySS) { //TypeObj = "Товары"; HaveCode = true; HaveName = true; } // RefItem (constructor)
} // RefItem (constructor) public bool FoundBarcode(string Barcode) { string TextQuery = "select top 1 PARENTEXT as ID from $Спр.ЕдиницыШК (nolock) where $Спр.ЕдиницыШК.Штрихкод = :barcode"; SQL1S.QuerySetParam(ref TextQuery, "barcode", Barcode); DataTable DT; if (!SS.ExecuteWithRead(TextQuery, out DT)) { return(false); } if (DT.Rows.Count == 0) { return(false); } FID = DT.Rows[0]["ID"].ToString(); FName = null; Refresh(); if (FName != null) { return(true); } else { return(false); } } // FoundBarcode
} //Зона адреса public RefSection(SQL1S ReadySS) : base(ReadySS) { //TypeObj = "Секции"; HaveCode = false; HaveName = true; } // RefSection (constructor)
} // ReactionDocDo internal override ABaseMode Init() { if (!SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата3"))) { return(Negative("Сборочный уже скомплектован!")); } if (SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата2"))) { return(Negative("Сборочный не собран!")); } if (!SS.LockDoc(DocCC.ID)) { return(Negative(SS.ExcStr)); } if (SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата4")) && TransferWindow.Selected) { //Если предкомплектация еще не задана, а окно выдачи уже задано, то делаем предкомплектацию DocCC.SetAttributeHeader("Дата4", DateTime.Now); DocCC.SetAttributeHeader("Время4", APIManager.NowSecond()); DocCC.SetAttributeHeader("Комплектовщик2", Employer.ID); DocCC.Save(); //Если окно задано - то даем команду выводить на табло SendToTablo(1); } return(Positive()); } // ReactionSCEmployersDo
/// <summary> /// /// </summary> /// <param name="ReadySS">prepared for use object</param> public ConstantsDepot(SQL1S ReadySS) { FUpdateInterval = 600; //Раз в 10 минут FSettingsMOD = "0000000000000000000000000000000000000000000000000000000"; //default value SS = ReadySS; Refresh(); }
} // Обратная совместимость /// <summary> /// Преобразует имя поля или таблицы SQL в имя 1С /// </summary> /// <param name="SQLName"></param> /// <returns></returns> protected string To1CName(string SQLName) { string result = ""; foreach (KeyValuePair <string, string> pair in SynhMap) { if (pair.Value == SQLName) { result = pair.Key; return(result); } } SQL1S tmpSS = new SQL1S(ServerName, DBName); //нихуя не найдено, подсосем из базы! string TextQuery = "select top 1 Name1C as Name1C from RT_Aliases (nolock) where NameSQL = :SQLName"; QuerySetParam(ref TextQuery, "SQLName", SQLName); DataTable DT; if (!tmpSS.ExecuteWithRead(TextQuery, out DT)) { throw new Exception("Cant connect for load this SQL name! Sheet!"); } if (DT.Rows.Count == 0) { throw new Exception("Cant find this SQL name! Sheet!"); } tmpSS.MyConnection.Close(); result = DT.Rows[0]["Name1C"].ToString().Trim(); SynhMap[result] = SQLName; //add in dictionary return(result); }
} // Init internal override ABaseMode Cancel() { string TextQuery; if (Task.TypeMove == 1) { //Это отмена задания на спуск - удаляем физически, т.к. при запросе задания запись создастся вновь TextQuery = "delete from $Спр.ПеремещенияПаллет where id = :id"; } else if (Task.TypeMove == 2 || Task.TypeMove == 3 || Task.TypeMove == 4 || Task.TypeMove == 5) { //А это отмена задания подъема или спуска с антресоли. Т.к. при выдаче задания ничего не создается, // а просто заполняется данными, то и при отмене нужно просто очистить все TextQuery = "update $Спр.ПеремещенияПаллет set " + "$Спр.ПеремещенияПаллет.Сотрудник1 = :EmptyID, " + "$Спр.ПеремещенияПаллет.ФлагОперации = 0, " + "$Спр.ПеремещенияПаллет.Дата10 = :EmptyDate, " + "$Спр.ПеремещенияПаллет.Время10 = 0 " + "where id = :id"; } else { return(Negative("Нельзя отменить данный тип задания")); } SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID); SS.ExecuteWithoutReadNew(TextQuery); return(base.Cancel()); } // Cancel
public bool GetColumns(string table_name, out string columns, string SQLfunc) { string separator = ","; string tail = ""; //В конце что добавим columns = ""; if (SQLfunc != null) { separator = ")," + SQLfunc + "("; columns = SQLfunc + "("; tail = ")"; } string TextQuery = "declare @ColumnList varchar(1000); " + "select @ColumnList = COALESCE(@ColumnList + '" + separator + "', '') + column_name " + "from INFORMATION_SCHEMA.Columns " + "where table_name = :table_name; " + "select @ColumnList as ColumnList"; SQL1S.QuerySetParam(ref TextQuery, "table_name", table_name + " "); //Пробел в конце, чтобы парсер нормально отработал DataTable DT; ExecuteWithReadNew(TextQuery, out DT); if (DT.Rows.Count == 0) { return(false); } columns += DT.Rows[0]["ColumnList"].ToString(); columns += tail; return(true); } // GetColumns
public bool RefreshAMT() { string TextQuery = "SELECT " + "DocAT.lineno_ as Number, " + "Goods.SP1036 as InvCode, " + "Sections.descr as Adress, " + "DocAT.SP4313 as Count " + "FROM " + "_1sjourn as journ (nolock) " + "INNER JOIN DT$АдресПеремещение as DocAT (nolock)" + "ON journ.iddoc = DocAT.iddoc " + "INNER JOIN $Спр.Товары as Goods (nolock) " + "ON Goods.id = DocAT.SP4312 " + "INNER JOIN $Спр.Секции as Sections (nolock) " + "ON Sections.id = DocAT.$АдресПеремещение.Адрес0 " + "WHERE " + "DocAT.iddoc = :Doc "; SQL1S.QuerySetParam(ref TextQuery, "Doc", DocSet.ID); if (!ExecuteWithRead(TextQuery, out ATTable)) { return(false); } return(true); } // RefreshAMT()
} // ReactionKeyDo //------------------------------ /// <summary> /// /// </summary> /// <returns></returns> protected bool FindDocAP(bool IsSet) { string TextQuery = "select top 1 " + (IsSet ? "substring(DocAP.$АдресПеремещение.ДокументОснование , 5, 9)" : " DocAP.iddoc") + " as iddoc " + "from _1sjourn as journ (nolock) " + "inner join DH$АдресПеремещение as DocAP (nolock) " + "on DocAP.iddoc = journ.iddoc " + "left join DT$АдресПеремещение as DocAPTab (nolock) " + "on DocAP.iddoc = DocAPTab.iddoc " + "where " + "journ.date_time_iddoc < '19800101Z' " + "and journ.ismark = 0 " + "and journ.$Автор = :employer " + "and DocAP.$АдресПеремещение.ТипДокумента = 13 " + "and DocAP.$АдресПеремещение.Склад = :warehouse " + //От параметра IsSet зависит что мы ищем набор или выкладку "and DocAPTab.iddoc " + (IsSet ? "is null" : "is not null"); SQL1S.QuerySetParam(ref TextQuery, "employer", Employer.ID); SQL1S.QuerySetParam(ref TextQuery, "warehouse", Employer.Warehouse.ID); DataTable DT; SS.ExecuteWithReadNew(TextQuery, out DT); if (DT.Rows.Count == 0) { return(false); } DocAP = Doc.GiveDocById(DT.Rows[0]["iddoc"].ToString(), SS); return(DocAP.Selected); } // FindDocAP
private bool RefreshAmount() { string TextQuery = "select " + "count(*) Amount " + "from " + "DT$АдресПеремещение as Doc (nolock) " + "where " + "Doc.iddoc =:Doc " + "and Doc.$АдресПеремещение.Дата1 = :EmptyDate " + "and Doc.$АдресПеремещение.Количество > 0 "; //TextQuery = TextQuery.Replace(":Docs", Helper.ListToStringWithQuotes(DocsSet)); SQL1S.QuerySetParam(ref TextQuery, "Doc", DocSet.ID); SQL1S.QuerySetParam(ref TextQuery, "EmptyDate", SQL1S.GetVoidDate()); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } if (DT.Rows.Count > 0) { AllSetsRow = (int)DT.Rows[0]["Amount"]; } else { AllSetsRow = 0; } return(true); }
} // FixTask (int MoveType) private void GetTaskLoaderDown() { string TextQuery = "exec WPM_GetTaskLoaderDown :Employer "; SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID); SS.ExecuteWithoutReadNew(TextQuery); FindTaskId(); } // GetTaskLoaderDown
} // Init() //protected override void ReactionSCSectionDo(RefSection e) //{ // if (CurrentAction != ActionSet.ScanAdress) // { // Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); // return; // } // if (e.ID != Task.Adress0.ID) // { // Negative("Неверный адрес!"); // return; // } // CurrentAction = ActionSet.ScanPallete; // Positive(SS.WhatUNeed(CurrentAction)); //} // ReactionSCSectionDo //protected override void ReactionPalleteDo(string barcode) //{ // if (CurrentAction != ActionSet.ScanPallete) // { // Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); // return; // } // if (Task.PalleteBarcode != barcode) // { // Negative("Неверная паллета! Где вы это взяли?"); // return; // } // PalleteBarcode = barcode; // TaskEnd(); //} // ReactionPalleteDo override protected bool TaskComplete() { string TextQuery = "declare @result int; exec WPM_TaskLoaderDownAntrisoleComplete :id, :Adress1, @result out; select @result;"; SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID); SQL1S.QuerySetParam(ref TextQuery, "Adress1", Adress1.ID); return((int)SS.ExecuteScalar(TextQuery) == 0 ? false : true); } // DownTaskComplete
protected override void ReactionSCSectionDo(RefSection Section) { //подтянем данные адреса string TextQuery = "DECLARE @curdate DateTime; " + "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " + "SELECT " + "RegAOT.$Рег.АдресОстаткиТоваров.Товар as ID, " + "min(Goods.descr) as ItemName, " + "min(Goods.$Спр.Товары.ИнвКод ) as InvCode, " + "min(Goods.$Спр.Товары.Артикул ) as Article, " + "cast(sum(RegAOT.$Рег.АдресОстаткиТоваров.Количество ) as int) as Count, " + "min(RegAOT.$Рег.АдресОстаткиТоваров.Адрес ) as Adress, " + "CASE " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = -10 THEN '-10 Автокорректировка' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = -2 THEN '-2 В излишке' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = -1 THEN '-1 В излишке (пересчет)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 0 THEN '00 Не существует' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 1 THEN '01 Приемка' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 2 THEN '02 Хороший на месте' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 3 THEN '03 Хороший (пересчет)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 4 THEN '04 Хороший (движение)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 7 THEN '07 Бракованный на месте' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 8 THEN '08 Бракованный (пересчет)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 9 THEN '09 Бракованный (движение)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 12 THEN '12 Недостача' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 13 THEN '13 Недостача (пересчет)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 14 THEN '14 Недостача (движение)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 17 THEN '17 Недостача подтвержденная' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 18 THEN '18 Недостача подт.(пересчет)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 19 THEN '19 Недостача подт.(движение)' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 22 THEN '22 Пересорт излишек' " + "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 23 THEN '23 Пересорт недостача' " + "ELSE rtrim(cast(RegAOT.$Рег.АдресОстаткиТоваров.Состояние as char)) + ' <неизвестное состояние>' END as Condition, " + "min(Sections.descr) as AdressName " + "FROM " + "RG$Рег.АдресОстаткиТоваров as RegAOT (nolock) " + "LEFT JOIN $Спр.Товары as Goods (nolock) " + "ON Goods.ID = RegAOT.$Рег.АдресОстаткиТоваров.Товар " + "LEFT JOIN $Спр.Секции as Sections (nolock) " + "ON Sections.ID = RegAOT.$Рег.АдресОстаткиТоваров.Адрес " + "WHERE " + "RegAOT.period = @curdate " + "and RegAOT.$Рег.АдресОстаткиТоваров.Адрес = :Address " + "GROUP BY RegAOT.$Рег.АдресОстаткиТоваров.Товар , " + "RegAOT.$Рег.АдресОстаткиТоваров.Состояние " + "ORDER BY min(Goods.$Спр.Товары.ИнвКод )"; SQL1S.QuerySetParam(ref TextQuery, "Address", Section.ID); if (SS.ExecuteWithRead(TextQuery, out SS.AddressCardItems)) { //покажем содержание адреса SS.OnReport(new ReportEventArgs("Задача выбрана...")); JumpTo(new ChoiseWorkAddressCard(SS, this)); } base.ReactionSCSectionDo(Section); }
/// <summary> /// return ready object or generate exception /// </summary> /// <param name="ID">iddoc</param> /// <param name="SS"> Ready SQL connect object</param> /// <returns></returns> static public Doc GiveDocById(string ID, SQL1S SS) { Doc result = new Doc(SS); if (!result.FoundID(ID)) { throw new NullReferenceException("Doc with iddoc = '" + ID + "' - not find!!!"); } return(result); }
} // Cancel //---------------------------------- /// <summary> /// /// </summary> private void CorrectLine() { string TextQuery = "begin tran; " + "update DT$АдресПеремещение " + "set $АдресПеремещение.Количество = :count " + "where DT$АдресПеремещение .iddoc = :iddoc and DT$АдресПеремещение .lineno_ = :currline; " + "if @@rowcount > 0 begin " + "insert into DT$АдресПеремещение ($АдресПеремещение.Товар , $АдресПеремещение.Количество ," + "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент , $АдресПеремещение.Состояние0 ," + "$АдресПеремещение.Состояние1 , $АдресПеремещение.Сотрудник0 , $АдресПеремещение.Адрес0 , $АдресПеремещение.Адрес1 ," + "$АдресПеремещение.Дата0 , $АдресПеремещение.Дата1 , $АдресПеремещение.Время0 , $АдресПеремещение.Время1 ," + "$АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " + "$АдресПеремещение.ЕдиницаШК , lineno_, iddoc) " + "select $АдресПеремещение.Товар , :CountCorrect ," + "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент , $АдресПеремещение.Состояние0 ," + ":AdressCode , :Employer , $АдресПеремещение.Адрес0 , $АдресПеремещение.Адрес0 ," + "$АдресПеремещение.Дата0 , :NowDate , $АдресПеремещение.Время0 , :NowTime ," + "$АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " + "$АдресПеремещение.ЕдиницаШК , (select max(lineno_) + 1 from DT$АдресПеремещение where iddoc = :iddoc), iddoc " + "from DT$АдресПеремещение as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " + "if @@rowcount > 0 begin " + //Удалим строчку если она иссякла... "delete from DT$АдресПеремещение " + "where iddoc = :iddoc and lineno_ = :currline and $АдресПеремещение.Количество <= 0 " + " commit tran " + "end else rollback tran " + "end " + "else rollback"; SQL1S.QuerySetParam(ref TextQuery, "count", Amount - InputedCount); SQL1S.QuerySetParam(ref TextQuery, "CountCorrect", InputedCount); SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID); SQL1S.QuerySetParam(ref TextQuery, "currline", lineno_); SQL1S.QuerySetParam(ref TextQuery, "Reason", " 2EV "); SQL1S.QuerySetParam(ref TextQuery, "AdressCode", 17); SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID); SS.ExecuteWithoutReadNew(TextQuery); PreviousAction = "Корректировка принята " + Item.InvCode + " - " + InputedCount.ToString() + " шт. (недостача)"; //Все скорректировали к хуям! if (Amount - InputedCount <= 0) { Dictionary <string, object> DataMapWrite = new Dictionary <string, object>(); DataMapWrite["Спр.СинхронизацияДанных.ДокументВход"] = SS.ExtendID(DocAP.ID, "АдресПеремещение"); DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход1"] = SS.ExtendID(Employer.ID, "Спр.Сотрудники"); string resultMessage; SS.ExecCommandOnlyResultNew("RefillSetAddItem2", DataMapWrite, out resultMessage); } Cancel(); } // CorrectLine
} // TaskEnd /// <summary> /// /// </summary> /// <returns></returns> virtual protected bool TaskComplete() { string TextQuery = "update $Спр.ПеремещенияПаллет set " + "$Спр.ПеремещенияПаллет.Дата1 = :NowDate, " + "$Спр.ПеремещенияПаллет.Время1 = :NowTime, " + "$Спр.ПеремещенияПаллет.ФлагОперации = 2 " + "where id = :id; " + "select @@rowcount;"; SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID); return((int)SS.ExecuteScalar(TextQuery) == 0 ? false : true); } // DownTaskComplete
} // ReactionSCSectionDo /// <summary> /// /// </summary> /// <returns></returns> private ABaseMode Refresh() { string TextQuery = "select " + "DocAP.$АдресПеремещение.Адрес0 as Adress0, " + "RefSections.descr as Adress, " + "DocAP.$АдресПеремещение.Количество as Amount, " + "DocAP.$АдресПеремещение.Товар as Item, " + "RefItems.Descr as Name, " + "RefItems.$Спр.Товары.ИнвКод as InvCode, " + "DocAP.lineno_ as lineno_ " + "from DT$АдресПеремещение as DocAP (nolock) " + "left join $Спр.Товары as RefItems (nolock) " + "on RefItems.id = DocAP.$АдресПеремещение.Товар " + "left join $Спр.Секции as RefSections (nolock) " + "on RefSections.id = DocAP.$АдресПеремещение.Адрес0 " + "where " + "DocAP.$АдресПеремещение.Дата1 = :EmptyDate " + "and DocAP.iddoc = :iddoc"; SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID); RemainItems.Clear(); SS.ExecuteWithReadNew(TextQuery, out RemainItems); if (RemainItems.Rows.Count == 0) { return(JumpTo(new RefillLayoutComplete(SS, this))); } string tmpBarcodePallete = DocAP.GetAttributeHeader("ШКПаллеты").ToString(); TextQuery = "select top 1 " + "Ref.id as id " + "from $Спр.ПеремещенияПаллет as Ref (nolock) " + "where " + "Ref.$Спр.ПеремещенияПаллет.ШКПаллеты = :PalleteBarcode " + "and Ref.ismark = 0 " + "order by " + "Ref.id desc "; SQL1S.QuerySetParam(ref TextQuery, "PalleteBarcode", tmpBarcodePallete); DataTable DT; SS.ExecuteWithReadNew(TextQuery, out DT); if (DT.Rows.Count > 0) { LastMove.FoundID(DT.Rows[0]["id"].ToString()); } CurrentAction = ActionSet.ScanItem; return(Positive(SS.WhatUNeed(CurrentAction))); } // Refresh
} // ReactionKeyDo protected override void ReactionSCDo(ReactionSCEventArgs e) { if (e.Ref.GetType() == new RefBox(SS).GetType()) { RefBox Box = e.Ref as RefBox; Doc doc = new Doc(SS); doc.FoundID(Box.GetAttribute("КонтрольНабора").ToString()); RefreshDoc(doc); return; } else if (e.Ref.GetType() == new RefItem(SS).GetType()) { Item = e.Ref as RefItem; string ItemID = Item.ID.ToString(); string LabelItem = Item.InvCode.ToString().Trim() + " " + Item.Name.ToString().Trim(); if (ControlCC == null) { Negative("Не выбран сборочный лист!"); return; } String TextQuery = "SELECT " + "Goods.$Спр.Товары.ИнвКод as InvCode, " + "DocCC.$КонтрольНабора.Количество as Count " + "FROM DT$КонтрольНабора as DocCC (nolock) " + "JOIN $Спр.Товары as Goods (nolock) " + "ON Goods.Id = DocCC.$КонтрольНабора.Товар " + "WHERE " + "Goods.id = :ItemID " + "and DocCC.iddoc = :iddoc"; SQL1S.QuerySetParam(ref TextQuery, "ItemID", ItemID); SQL1S.QuerySetParam(ref TextQuery, "iddoc", ControlCC); DataTable DT; if (!SS.ExecuteWithRead(TextQuery, out DT)) { return; } if (DT.Rows.Count == 0) { Negative("В сборочном нет " + LabelItem); return; } else { JumpTo(new ItemCard(SS, this)); } } }
} // ReactionKeyDo internal override ABaseMode Init() { Task = new RefPalleteMove(SS); if (FindTaskId()) { return(JumpTo(new Loader(SS, this))); } TaskList = null; string TextQuery = "select * from WPM_fn_ToModeLoaderChoise(:Employer)"; SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID); SS.ExecuteWithReadNew(TextQuery, out TaskList); return(Positive("Выберите что будете делать...")); } // Init()
} // FixTask (int MoveType, string Tail) private void FixTask(int MoveType) { string Tail = "select top 1 Ref.id from $Спр.ПеремещенияПаллет as Ref (nolock) " + "where " + "Ref.$Спр.ПеремещенияПаллет.ФлагОперации = 0 " + "and Ref.$Спр.ПеремещенияПаллет.ТипДвижения = :MoveType " + "and Ref.ismark = 0 " + "and Ref.$Спр.ПеремещенияПаллет.Склад = :warehouse " + "order by Ref.id"; SQL1S.QuerySetParam(ref Tail, "warehouse", Employer.Warehouse.ID); FixTask(MoveType, Tail); } // FixTask (int MoveType)
} // GoTransportTask private void FixTask(int MoveType, string Tail) { string TextQuery = "update $Спр.ПеремещенияПаллет " + "set $Спр.ПеремещенияПаллет.Сотрудник1 = :Employer, " + "$Спр.ПеремещенияПаллет.Дата10 = :NowDate, " + "$Спр.ПеремещенияПаллет.Время10 = :NowTime, " + "$Спр.ПеремещенияПаллет.ФлагОперации = 1 " + "where id in (" + Tail + ")"; SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID); SQL1S.QuerySetParam(ref TextQuery, "MoveType", MoveType); SS.ExecuteWithoutReadNew(TextQuery); FindTaskId(); } // FixTask (int MoveType, string Tail)
} // ReactionSCItemDo /// <summary> /// /// </summary> /// <returns></returns> internal override ABaseMode Init() { if (!DocAP.Selected) { SS.OnReport(new ReportEventArgs("Получаю задание...")); string TextQuery = "select top 1 DocAP.iddoc as iddoc " + "from _1sjourn as journ (nolock) " + "inner join DH$АдресПеремещение as DocAP (nolock) " + "on DocAP.iddoc = journ.iddoc " + "inner join DT$АдресПеремещение as DocAPTab (nolock) " + "on DocAP.iddoc = DocAPTab.iddoc " + //Условие ниже, чтобы с пустой табличной частью отсеить документы "inner join _1sjourn as sub_journ (nolock) " + "on substring(DocAP.$АдресПеремещение.ДокументОснование , 5, 9) = sub_journ.iddoc " + "left join $Спр.ПеремещенияПаллет as Ref (nolock) " + "on Ref.$Спр.ПеремещенияПаллет.ШКПаллеты = DocAP.$АдресПеремещение.ШКПаллеты " + "and Ref.$Спр.ПеремещенияПаллет.ФлагОперации in (0, 1) " + "and Ref.ismark = 0 " + "where " + "journ.date_time_iddoc < '19800101Z' " + "and journ.ismark = 0 " + "and journ.$Автор = :EmptyID " + "and DocAP.$АдресПеремещение.ТипДокумента = 13 " + "and Ref.id is null " + "order by sub_journ.date_time_iddoc"; DataTable DT; SS.ExecuteWithReadNew(TextQuery, out DT); if (DT.Rows.Count == 0) { return(Negative("Не удалось найти заданий выкладки!")); } //Будем вешать на себя это задание TextQuery = "update _1sjourn set " + "$Автор = :employer " + "where iddoc = :iddoc; "; SQL1S.QuerySetParam(ref TextQuery, "iddoc", DT.Rows[0]["iddoc"].ToString()); SQL1S.QuerySetParam(ref TextQuery, "employer", Employer.ID); SS.ExecuteWithoutReadNew(TextQuery); //Если задание получилось, то if (!FindDocAP(false)) { return(Negative("Не удалось зафиксировать задание выклдаки!")); } } return(Refresh()); } // Init
} // GoUpTask protected ABaseMode GoLiftTask(string sector) { Task = new RefPalleteMove(SS); string Tail = "select top 1 Ref.id from $Спр.ПеремещенияПаллет as Ref (nolock) " + "where " + "Ref.$Спр.ПеремещенияПаллет.ФлагОперации = 0 " + "and Ref.$Спр.ПеремещенияПаллет.ТипДвижения = :MoveType " + "and Ref.$Спр.ПеремещенияПаллет.Адрес1_Сектор = :sector " + "and Ref.ismark = 0 " + "order by Ref.id"; SQL1S.QuerySetParam(ref Tail, "sector", sector); FixTask(5, Tail); return(GoLodaer()); } // GoUpTask
} // GetTaskLoaderDown protected bool CheckPallete(string barcode) { string TextQuery = "select count(*) from $Спр.ПеремещенияПаллет (nolock) " + "where " + "$Спр.ПеремещенияПаллет.ФлагОперации in (1,0) " + "and $Спр.ПеремещенияПаллет.ШКПаллеты = :barcode " + "and ismark = 0"; SQL1S.QuerySetParam(ref TextQuery, "barcode", barcode); if ((int)SS.ExecuteScalar(TextQuery) > 0) { Negative("Возможна только одна паллета с одним ШК!"); return(false); } return(true); } // CheckPallete
protected override void ReactionDocDo(Doc doc) { if (CurrentAction != ActionSet.ScanBox) { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } if (doc.TypeDoc == "КонтрольНабора") { //нам нужны все места этого документа, запомним документ и найдем первое место DocUnload.FoundID(doc.ID); string TextQuery = "SELECT TOP 1 Ref.ID as ID " + "FROM " + "$Спр.МестаПогрузки as Ref (nolock) " + "WHERE " + "$Спр.МестаПогрузки.КонтрольНабора = :DocUnload "; SQL1S.QuerySetParam(ref TextQuery, "DocUnload", DocUnload.ID); DataTable DT; if (!SS.ExecuteWithRead(TextQuery, out DT)) { Negative("Ошибка запроса! " + SS.WhatUNeed(CurrentAction)); return; } if (DT.Rows.Count == 0) { Negative("Не найдено место! " + SS.WhatUNeed(CurrentAction)); return; } BoxUnLoad.FoundID(DT.Rows[0]["ID"].ToString()); CurrentAction = ActionSet.ScanAdress; AdressUnLoad = new RefSection(SS); Refresh(); } else { Negative("Неверно! " + SS.WhatUNeed(CurrentAction)); return; } base.ReactionDocDo(doc); }