示例#1
0
        } // ReactionPalleteDo

        /// <summary>
        ///
        /// </summary>
        private void CompletePallete()
        {
            SS.OnReport(new ReportEventArgs("Фиксирую окончание отбора..."));

            //Для начала определим будет ли после отбора сразу выкладка или будет что-то еще
            // я хз как лучше, поэтому буду тянуть информацию из таблички движка, по документу DocAP
            bool   AuthorEmpty = true;
            string TextQuery   = "select top 1 sector0_type sector0_type, sector1_down sector1_down from RT_refill (nolock) where DocAP = :iddoc ";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID);
            DataTable DT;

            SS.ExecuteWithReadNew(TextQuery, out DT);
            if (DT.Rows.Count > 0)
            {
                if ((int)DT.Rows[0]["sector0_type"] == 3 || ((int)DT.Rows[0]["sector1_down"] == 0 && (int)DT.Rows[0]["sector0_type"] == 1))
                {
                    //Это с высокой полки или это на сектор у которого нет спуска
                    // значит мы сразу будем переходить к выкладке, после завершения отбора
                    AuthorEmpty = false;
                }
            }

            //Заполним шапку найденного документа
            SubjectDoc.SetAttributeHeader("ШКПаллеты", PalleteBarcode);
            SubjectDoc.SetAttributeHeader("КолСтрок", DocAP.RowCount);
            SubjectDoc.Save();

            //получим список всех полей табличной части документа адрес перемещения
            string columns;

            //ПО СТАРОМУ
            //SS.GetColumns("DT$АдресПеремещение", out columns);
            //columns = columns.Replace("IDDOC,", "");    //уберем iddoc, его мы перезаписывать не будем
            //КОНЕЦ ПО СТАРОМУ

            //ПО НОВОМУ
            SS.GetColumns("DT$АдресПеремещение", out columns, "min");
            columns = columns.Replace("min(IDDOC),", "");    //уберем iddoc, его мы перезаписывать не будем
            string tmpItem   = SS.QueryParser("$АдресПеремещение.Товар ").Trim();
            string tmpAmount = SS.QueryParser("$АдресПеремещение.Количество ").Trim();

            columns = columns.Replace("min(" + tmpItem + ")", tmpItem);        //группировка по товару
            columns = columns.Replace("min(" + tmpAmount, "sum(" + tmpAmount); //Сумма по количество
            columns = columns.Replace("min(IDDOC),", "");                      //уберем iddoc, его мы перезаписывать не будем
            //Теперь скопируем строки из одного документа в другой, а потом изменим некоторые поля
            //Будем делать так, без транзакции, пока. А то ну его на хуй вставлять с изменениями слишком сложно
            TextQuery =
                "insert into DT$АдресПеремещение " +
                //"select :target," + columns + " from DT$АдресПеремещение where iddoc = :source; " +   //ПО СТАРОМУ
                "select :target," + columns + " from DT$АдресПеремещение " +
                "where " +
                "iddoc = :source " +
                "and $АдресПеремещение.Состояние1 = :goodMove " +
                "and not $АдресПеремещение.Дата1 = :EmptyDate " +
                "group by $АдресПеремещение.Товар ; " +
                "if @@rowcount > 0 begin " +
                "update _1sjourn set $Автор = :employer where iddoc = :target; " +
                "update DT$АдресПеремещение SET " +
                "$АдресПеремещение.Состояние0 = $АдресПеремещение.Состояние1 , " +
                "$АдресПеремещение.Состояние1 = 2 , " +
                "$АдресПеремещение.Сотрудник0 = :EmptyID , " +
                "$АдресПеремещение.Адрес0 = $АдресПеремещение.Адрес1 , " +
                "$АдресПеремещение.Дата0 = :NowDate , " +
                "$АдресПеремещение.Дата1 = :EmptyDate , " +
                "$АдресПеремещение.Время0 = :NowTime , " +
                "$АдресПеремещение.Время1 = 0 , " +
                "$АдресПеремещение.Док = :source " +
                "where iddoc = :target; " +
                "exec WPM_RefillSetComplete :source, :adress0, :barcode_pallete " +
                "end else begin " +
                "update _1sjourn set $Автор = :EmptyID where iddoc = :target; " +
                //флаг под удаление возводим, иначе херня выходит
                "update RT_Refill set flag = 5 where docAP = :source " +
                "end";
            SQL1S.QuerySetParam(ref TextQuery, "target", SubjectDoc.ID);
            SQL1S.QuerySetParam(ref TextQuery, "source", DocAP.ID);
            SQL1S.QuerySetParam(ref TextQuery, "barcode_pallete", PalleteBarcode);
            SQL1S.QuerySetParam(ref TextQuery, "adress0", Adress0.ID);
            SQL1S.QuerySetParam(ref TextQuery, "employer", AuthorEmpty ? SQL1S.GetVoidID() : Employer.ID);
            SQL1S.QuerySetParam(ref TextQuery, "goodMove", 4);  //Хороший движение
            SS.ExecuteWithoutReadNew(TextQuery);
        } // CompletePallete