Beispiel #1
0
        } // 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
Beispiel #2
0
        } // ReactionKeyDo

        /// <summary>
        ///
        /// </summary>
        /// <param name="e"></param>
        protected override void ReactionSCSectionDo(RefSection e)
        {
            //Проверки зон!!!
            if (!e.AdressZone.Selected)
            {
                Negative("Нельзя! Адбрес без зоны!");
                return;
            }
            DataTable DT;

            string TextQuery = "SELECT VALUE as val FROM _1sconst (nolock) WHERE ID = $Константа.ЗонаВременногоТовара ";

            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return;
            }
            string IDTempZone = DT.Rows[0]["val"].ToString();

            //Проверка
            if (e.AdressZone.ID.ToString() != IDTempZone)
            {
                //НЕ та зона
                Negative("Нельзя! Адрес другой зоны!");
            }

            Adress = e;
            Positive("Адрес принят! Продолжайте ...");
        } // ReactionSCSectionDo
Beispiel #3
0
        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
Beispiel #4
0
        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);
        }
Beispiel #5
0
        } // 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));
                }
            }
        }
Beispiel #6
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal override ABaseMode Init()
        {
            SS.OnReport(new ReportEventArgs("Получаю задание..."));
            string TextQuery = "select * from dbo.WPM_fn_GetTaskAccemtanceCross()";

            if (!SS.ExecuteWithRead(TextQuery, out SS.AcceptedCross))
            {
                Negative("Не удалось получить задание");
                return(JumpTo(new ChoiseWorkAcceptance(SS, this)));
            }
            if (SS.AcceptedCross.Rows.Count == 0)
            {
                Negative("Нет заданий");
                return(JumpTo(new ChoiseWorkAcceptance(SS, this)));
            }
            return(Positive());
        }   // Init
Beispiel #7
0
        } // ReactionSCSectionDo

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private ABaseMode Refresh()
        {
            SS.AcceptedCross = null;
            string TextQuery = "select * from dbo.WPM_fn_GetTaskAccemtanceCross()";

            if (!SS.ExecuteWithRead(TextQuery, out SS.AcceptedCross))
            {
                Negative("Не удалось получить задание");
                return(JumpTo(new ChoiseWorkAcceptance(SS, this)));
            }
            if (SS.AcceptedCross.Rows.Count == 0)
            {
                Negative("Нет заданий");
                return(JumpTo(new ChoiseWorkAcceptance(SS, this)));
            }
            return(Positive());
        } // Refresh
Beispiel #8
0
        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);
        }
Beispiel #9
0
        } // Refresh

        private void RefreshDoc(Doc doc)
        {
            if (doc.TypeDoc != "КонтрольНабора")
            {
                Negative("Не верный тип документа!");
                return;
            }
            string TextQuery =
                "SELECT " +
                "DocCC.$КонтрольНабора.НомерЛиста as Number, " +
                "Sections.descr as Section, " +
                "CAST(LEFT(journ.date_time_iddoc,8) as DateTime) as DateTime, " +
                "journ.DOCNO as DocNumber " +
                "FROM DH$КонтрольНабора as DocCC (nolock) " +
                "LEFT JOIN $Спр.Секции as Sections (nolock) " +
                "ON Sections.id = DocCC.$КонтрольНабора.Сектор " +
                "LEFT JOIN DH$КонтрольРасходной as DocCB (nolock) " +
                "ON DocCB.iddoc = DocCC.$КонтрольНабора.ДокументОснование " +
                "LEFT JOIN DH$Счет as Daemond (nolock) " +
                "ON Daemond.iddoc = DocCB.$КонтрольРасходной.ДокументОснование " +
                "LEFT JOIN _1sjourn as journ (nolock) " +
                "ON journ.iddoc = Daemond.iddoc " +
                "WHERE " +
                "DocCC.iddoc = :iddoc";

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

            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return;
            }
            if (DT.Rows.Count == 0)
            {
                Negative("В сборочном нет строк!");
                return;
            }
            ControlCC      = doc.ID.ToString();
            LabelControlCC = DT.Rows[0]["DocNumber"].ToString() + " от " + ((DateTime)DT.Rows[0]["DateTime"]).ToString("dd.MM.yy") + " СЕКЦИЯ: " + DT.Rows[0]["Section"].ToString().Trim() + "-" + DT.Rows[0]["Number"].ToString();
            Refresh();
            Positive("ВЫБРАН СБОРОЧНЫЙ ЛИСТ " + LabelControlCC);
            IndexTableItem = 0;
        }
Beispiel #10
0
        private bool LoadUnits(string ItemID)
        {
            //Загружает единицы товара в таблицу FUnits
            string TextQuery =
                "SELECT " +
                "Units.id as ID, " +
                "CAST(Units.$Спр.ЕдиницыШК.Коэффициент as int) as Coef, " +
                "Units.$Спр.ЕдиницыШК.Штрихкод as Barcode, " +
                "Units.$Спр.ЕдиницыШК.ОКЕИ as OKEI " +
                "FROM " +
                "$Спр.ЕдиницыШК as Units (nolock) " +
                "WHERE " +
                "Units.parentext = :CurrentItem and Units.ismark = 0";

            SQL1S.QuerySetParam(ref TextQuery, "CurrentItem", ItemID);
            if (!SS.ExecuteWithRead(TextQuery, out FUnits))
            {
                return(false);
            }
            return(true);
        }
Beispiel #11
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private ABaseMode Refresh()
        {
            if (!BoxUnLoad.Selected)
            {
                return(Positive(SS.WhatUNeed(CurrentAction)));
            }
            string TextQuery =
                "Select " +
                "isnull(Sections.descr, 'Пу') as Sector, " +
                "CONVERT(char(8), CAST(LEFT(journForBill.date_time_iddoc, 8) as datetime), 4) as DateDoc, " +
                "journForBill.docno as DocNo, " +
                "DocCC.$КонтрольНабора.НомерЛиста as Number, " +
                "isnull(Adress.descr, 'Пу') as Adress, " +
                "TabBox.CountAllBox as CountAllBox, " +
                "Ref.$Спр.МестаПогрузки.НомерМеста as NumberBox, " +
                "Gate.descr as Gate " +
                "from $Спр.МестаПогрузки as Ref (nolock) " +
                "inner join DH$КонтрольНабора as DocCC (nolock) " +
                "on DocCC.iddoc = Ref.$Спр.МестаПогрузки.КонтрольНабора " +
                "left join $Спр.Секции as Sections (nolock) " +
                "on Sections.id = DocCC.$КонтрольНабора.Сектор " +
                "left join $Спр.Секции as Adress (nolock) " +
                "on Adress.id = Ref.$Спр.МестаПогрузки.Адрес9 " +
                "inner join DH$КонтрольРасходной as DocCB (nolock) " +
                "on DocCB.iddoc = DocCC.$КонтрольНабора.ДокументОснование " +
                "inner JOIN DH$Счет as Bill (nolock) " +
                "on Bill.iddoc = DocCB.$КонтрольРасходной.ДокументОснование " +
                "INNER JOIN _1sjourn as journForBill (nolock) " +
                "on journForBill.iddoc = Bill.iddoc " +
                "left join $Спр.Ворота as Gate (nolock) " +
                "on Gate.id = DocCB.$КонтрольРасходной.Ворота " +
                "left join ( " +
                "select " +
                "DocCB.iddoc as iddoc, " +
                "count(*) as CountAllBox " +
                "from $Спр.МестаПогрузки as Ref (nolock) " +
                "inner join DH$КонтрольНабора as DocCC (nolock) " +
                "on DocCC.iddoc = Ref.$Спр.МестаПогрузки.КонтрольНабора " +
                "inner join DH$КонтрольРасходной as DocCB (nolock) " +
                "on DocCB.iddoc = DocCC.$КонтрольНабора.ДокументОснование " +
                "where " +
                "Ref.ismark = 0 " +
                "group by DocCB.iddoc ) as TabBox " +
                "on TabBox.iddoc = DocCB.iddoc " +
                "where Ref.id = :id";

            SQL1S.QuerySetParam(ref TextQuery, "id", BoxUnLoad.ID);
            DataTable DT;

            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return(Negative("Ошибка запроса! " + SS.WhatUNeed(CurrentAction)));
            }

            if (DT.Rows.Count == 0)
            {
                return(Negative("Не найдено место! " + SS.WhatUNeed(CurrentAction)));
            }

            DocCC.View           = DT.Rows[0]["Sector"].ToString().Trim() + "-" + DT.Rows[0]["Number"].ToString() + " Заявка " + DT.Rows[0]["DocNo"].ToString() + " (" + DT.Rows[0]["DateDoc"].ToString() + ")";
            DocCC.Adress         = DT.Rows[0]["Adress"].ToString();
            DocCC.AllBoxes       = (int)DT.Rows[0]["CountAllBox"];
            DocCC.NumberBill     = DT.Rows[0]["DocNo"].ToString().Trim();
            DocCC.NumberCC       = DT.Rows[0]["Number"].ToString();
            DocCC.MainSectorName = DT.Rows[0]["Sector"].ToString();
            DocCC.Gate           = DT.Rows[0]["Gate"].ToString();
            DocCC.NumberBox      = DT.Rows[0]["NumberBox"].ToString();

            return(Positive(SS.WhatUNeed(CurrentAction)));
        } // Refresh
Beispiel #12
0
        private Mode CheckOrder(Mode NowMode, RefEmployer Who)
        {
            Mode result = NowMode;

            //ЗАДАНИЕ СПУСКА
            if (Who.CanDown)
            {
                string TextQuery =
                    "select top 1 " +
                    "Ref.id " +
                    "from $Спр.МестаПогрузки as Ref (nolock) " +
                    "where " +
                    "Ref.$Спр.МестаПогрузки.Сотрудник4 = :Employer " +
                    "and Ref.ismark = 0 " +
                    "and not Ref.$Спр.МестаПогрузки.Дата40 = :EmptyDate " +
                    "and not Ref.$Спр.МестаПогрузки.Адрес3 = :EmptyID " +
                    "and Ref.$Спр.МестаПогрузки.Дата5 = :EmptyDate ";
                SQL1S.QuerySetParam(ref TextQuery, "Employer", Who.ID);
                DataTable DT;
                if (SS.ExecuteWithRead(TextQuery, out DT))
                {
                    if (DT.Rows.Count > 0)
                    {
                        return(Mode.Down);
                    }
                }
            }
            //ЗАДАНИЕ СВОБОДНОГО СПУСКА/КОМПЛЕКТАЦИИ
            if (Who.CanComplectation)
            {
                string TextQuery =
                    "select top 1 " +
                    "Ref.id " +
                    "from $Спр.МестаПогрузки as Ref (nolock) " +
                    "where " +
                    "Ref.ismark = 0 " +
                    "and (" +
                    "Ref.$Спр.МестаПогрузки.Сотрудник4 = :Employer " +
                    "and Ref.$Спр.МестаПогрузки.Дата5 = :EmptyDate " +
                    "and Ref.$Спр.МестаПогрузки.Адрес3 = :EmptyID " +
                    "and not Ref.$Спр.МестаПогрузки.Дата40 = :EmptyDate" +
                    " or " +
                    "Ref.$Спр.МестаПогрузки.Сотрудник8 = :Employer " +
                    "and Ref.$Спр.МестаПогрузки.Дата9 = :EmptyDate " +
                    "and Ref.$Спр.МестаПогрузки.Адрес7 = :EmptyID " +
                    "and not Ref.$Спр.МестаПогрузки.Дата80 = :EmptyDate)";
                SQL1S.QuerySetParam(ref TextQuery, "Employer", Who.ID);
                DataTable DT;
                if (SS.ExecuteWithRead(TextQuery, out DT))
                {
                    if (DT.Rows.Count > 0)
                    {
                        return(Mode.FreeDownComplete);
                    }
                }
            }
            //ЗАДАНИЕ ОТБОРА КОМПЛЕКТАЦИИ
            if (Who.CanComplectation)
            {
                string TextQuery =
                    "select top 1 " +
                    "Ref.id " +
                    "from $Спр.МестаПогрузки as Ref (nolock) " +
                    "where " +
                    "Ref.ismark = 0 " +
                    "and Ref.$Спр.МестаПогрузки.Сотрудник8 = :Employer " +
                    "and Ref.$Спр.МестаПогрузки.Дата9 = :EmptyDate " +
                    "and not Ref.$Спр.МестаПогрузки.Адрес7 = :EmptyID " +
                    "and not Ref.$Спр.МестаПогрузки.Дата80 = :EmptyDate";
                SQL1S.QuerySetParam(ref TextQuery, "Employer", Who.ID);
                DataTable DT;
                if (SS.ExecuteWithRead(TextQuery, out DT))
                {
                    if (DT.Rows.Count > 0)
                    {
                        return(Mode.NewComplectation);
                    }
                }
            }

            return(result);
        } // CheckOrder
Beispiel #13
0
        } // Cancel

        //Подсасываем всю необходимую инфу для отображения товара (скопипизжено ToModeAcceptedItem())
        protected bool QuestItem()
        {
            //private bool ToModeAcceptedItem(string ItemID, string IDDoc, Mode ToMode, int InPartyCount, bool OnShelf)

            //DataRow[] DR;
            AdressConditionItem = null;

            string    TextQuery = "SELECT VALUE as val FROM _1sconst (nolock) WHERE ID = $Константа.ОснЦентрСклад ";
            DataTable DT;

            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            BufferWarehouse = DT.Rows[0]["val"].ToString();

            //Если был дисконнект, то это проявиться после нижеследующего запроса
            //и дальше будет, не приемка, а редактирование карточки, для этого запрос и помещен в начало
            if (!LoadUnits(Item.InvCode))
            {
                return(false);
            }

            //FExcStr - несет смысл
            AcceptedItem = new StructItem();
            AcceptedItem.GenerateBarcode = false;

            #region Вроде не нужно

            /* if (NewBarcodes == null)
             * {
             *  NewBarcodes = new List<string>();
             * }
             * else
             * {
             *  NewBarcodes.Clear();
             * }*/

            //Определяем имеется ли данный товар в списке принимаемых
            //CurrentRowAcceptedItem = null;
            //int AllCount = 0;


            /* if (ToMode == Mode.Acceptance)
             * {
             *   DR = FNotAcceptedItems.Select("ID = '" + ItemID + "'");
             *   if (DR.Length > 1 && IDDoc != "")
             *   {
             *       foreach (DataRow dr in DR)
             *       {
             *           if (dr["IDDOC"].ToString() == IDDoc)
             *           {
             *               if (CurrentRowAcceptedItem == null)
             *               {
             *                   CurrentRowAcceptedItem = dr;
             *               }
             *           }
             *           AllCount += (int)dr["Count"];
             *       }
             *   }
             *   else if (DR.Length > 0) //Один товар или не указана строка документа
             *   {
             *       CurrentRowAcceptedItem = DR[0];
             *       foreach (DataRow dr in DR)
             *       {
             *           AllCount += (int)dr["Count"];
             *       }
             *   }
             *   //иначе это скан товара не из списка!
             * }*/



            //БЛОКИРУЕМ ТОВАР
            //if (!LockItem(ItemID))
            //{
            //    return false;
            //}
            #endregion

            #region Запрос ОПРЕДЕЛЯЕМ ОСТАТКИ И АДРЕСА
            TextQuery =
                "DECLARE @curdate DateTime; " +
                "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " +
                "SELECT " +
                "CAST(sum(CASE WHEN Main.Warehouse = :MainWarehouse THEN Main.Balance ELSE 0 END) as int) as BalanceMain, " +
                "CAST(sum(CASE WHEN Main.Warehouse = :BufferWarehouse THEN Main.Balance ELSE 0 END) as int) as BalanceBuffer, " +
                "ISNULL((" +
                "SELECT top 1 " +
                "Section.descr " +
                "FROM _1sconst as Const (nolock) " +
                "LEFT JOIN $Спр.Секции as Section (nolock) " +
                "ON Section.id = left(Const.value, 9) " +
                "WHERE " +
                "Const.id = $Спр.ТоварныеСекции.Секция " +
                "and Const.date <= :DateNow " +
                "and Const.OBJID in (" +
                "SELECT id FROM $Спр.ТоварныеСекции " +
                "WHERE " +
                "$Спр.ТоварныеСекции.Склад = :MainWarehouse " +
                "and parentext = :Item)" +
                "ORDER BY " +
                "Const.date DESC, Const.time DESC, Const.docid DESC), '<не задан>') as AdressMain, " +
                "ISNULL((" +
                "SELECT top 1 " +
                "Section.descr " +
                "FROM _1sconst as Const (nolock) " +
                "LEFT JOIN $Спр.Секции as Section (nolock) " +
                "ON Section.id = left(Const.value, 9) " +
                "WHERE " +
                "Const.id = $Спр.ТоварныеСекции.Секция " +
                "and Const.date <= :DateNow " +
                "and Const.OBJID in (" +
                "SELECT id FROM $Спр.ТоварныеСекции " +
                "WHERE " +
                "$Спр.ТоварныеСекции.Склад = :BufferWarehouse " +
                "and parentext = :Item)" +
                "ORDER BY " +
                "Const.date DESC, Const.time DESC, Const.docid DESC), '<не задан>') as AdressBuffer " +
                "FROM (" +
                "SELECT " +
                "$Рег.ОстаткиТоваров.Склад as Warehouse, " +
                "$Рег.ОстаткиТоваров.Товар as Item, " +
                "$Рег.ОстаткиТоваров.ОстатокТовара as Balance " +
                "FROM " +
                "RG$Рег.ОстаткиТоваров (nolock) " +
                "WHERE " +
                "period = @curdate " +
                "and $Рег.ОстаткиТоваров.Товар = :Item " +
                "and $Рег.ОстаткиТоваров.Склад in (:MainWarehouse, :BufferWarehouse) " +
                "UNION ALL " +
                "SELECT " +
                ":MainWarehouse, :Item, 0 " +
                ") as Main " +
                "GROUP BY Main.Item";
            SQL1S.QuerySetParam(ref TextQuery, "DateNow", DateTime.Now);
            SQL1S.QuerySetParam(ref TextQuery, "Item", Item.ID);
            SQL1S.QuerySetParam(ref TextQuery, "BufferWarehouse", BufferWarehouse);
            SQL1S.QuerySetParam(ref TextQuery, "MainWarehouse", Const.MainWarehouse);
            DT.Clear();
            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            #endregion

            AcceptedItem.BalanceMain   = (int)DT.Rows[0]["BalanceMain"];
            AcceptedItem.BalanceBuffer = (int)DT.Rows[0]["BalanceBuffer"];
            AcceptedItem.AdressMain    = DT.Rows[0]["AdressMain"].ToString();
            AcceptedItem.AdressBuffer  = DT.Rows[0]["AdressBuffer"].ToString();
            AcceptedItem.IsRepeat      = false;

            Dictionary <string, object> DataMapWrite = new Dictionary <string, object>();

            #region Запрос Подсосем остатки в разрезе адресов и состояний
            TextQuery =
                "DECLARE @curdate DateTime; " +
                "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " +
                "SELECT " +
                "min(Section.descr) 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, " +
                "cast(sum(RegAOT.$Рег.АдресОстаткиТоваров.Количество ) as int) as Count " +
                "FROM " +
                "RG$Рег.АдресОстаткиТоваров as RegAOT (nolock) " +
                "LEFT JOIN $Спр.Секции as Section (nolock) " +
                "ON Section.id = RegAOT.$Рег.АдресОстаткиТоваров.Адрес " +
                "WHERE " +
                "RegAOT.period = @curdate " +
                "and RegAOT.$Рег.АдресОстаткиТоваров.Товар = :ItemID " +
                "and RegAOT.$Рег.АдресОстаткиТоваров.Склад = :Warehouse " +
                "GROUP BY " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Адрес , " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Товар , " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Состояние " +
                "HAVING sum(RegAOT.$Рег.АдресОстаткиТоваров.Количество ) <> 0 " +
                "ORDER BY Adress, Condition";
            SQL1S.QuerySetParam(ref TextQuery, "DateNow", DateTime.Now);
            SQL1S.QuerySetParam(ref TextQuery, "ItemID", Item.ID);
            SQL1S.QuerySetParam(ref TextQuery, "Warehouse", Const.MainWarehouse);
            if (!SS.ExecuteWithRead(TextQuery, out AdressConditionItem))
            {
                AdressConditionItem = null;
            }
            #endregion

            #region Запрос Я не знаю что это...
            TextQuery =
                "SELECT " +
                "Goods.Descr as ItemName," +
                "Goods.$Спр.Товары.ИнвКод as InvCode, " +
                "Goods.$Спр.Товары.Артикул as Article, " +
                "Goods.$Спр.Товары.КоличествоДеталей as Details, " +
                "Goods.$Спр.Товары.БазоваяЕдиницаШК as BaseUnitID, " +
                "Goods.$Спр.Товары.МинПартия as MinParty, " +
                "Goods.$Спр.Товары.Опт_Цена as Price,  " +
                //"Goods.$Спр.Товары." + (ToMode == Mode.Acceptance ? "Прих_Цена" : "Опт_Цена") + " as Price,  " +
                //"isnull(RefSections.$Спр.ТоварныеСекции.РазмерХранения , 0) as StoregeSize " +
                "isnull(RefSections.$Спр.ТоварныеСекции.РасчетныйРХ , 0) as StoregeSize " +
                "FROM $Спр.Товары as Goods (nolock) " +
                "left join $Спр.ТоварныеСекции as RefSections (nolock) " +
                "on RefSections.parentext = Goods.id and RefSections.$Спр.ТоварныеСекции.Склад = :warehouse " +
                "WHERE Goods.id = :Item ";
            SQL1S.QuerySetParam(ref TextQuery, "Item", Item.ID);
            SQL1S.QuerySetParam(ref TextQuery, "warehouse", Const.MainWarehouse);
            DT.Clear();
            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            #endregion

            AcceptedItem.Details    = (int)(decimal)DT.Rows[0]["Details"];
            AcceptedItem.NowDetails = AcceptedItem.Details;

            AcceptedItem.ID                = Item.InvCode;
            AcceptedItem.Name              = DT.Rows[0]["ItemName"].ToString();
            AcceptedItem.InvCode           = DT.Rows[0]["InvCode"].ToString();
            AcceptedItem.Acticle           = DT.Rows[0]["Article"].ToString();
            AcceptedItem.BaseUnitID        = DT.Rows[0]["BaseUnitID"].ToString();
            AcceptedItem.MinParty          = (int)(decimal)DT.Rows[0]["MinParty"];
            AcceptedItem.Count             = 0;
            AcceptedItem.Price             = (decimal)DT.Rows[0]["Price"];
            AcceptedItem.Acceptance        = false;
            AcceptedItem.ToMode            = OldMode.CurrentMode;
            AcceptedItem.BindingAdressFlag = false;
            AcceptedItem.StoregeSize       = (int)(decimal)DT.Rows[0]["StoregeSize"];
            AcceptedItem.CurrentBalance    = AcceptedItem.BalanceMain;


            #region Если это необходимо, то определяем количество товара для склада инвентаризации
            if (AcceptedItem.ToMode != Mode.Inventory || InventoryWarehouse.ID == Const.MainWarehouse)
            {
                AcceptedItem.CurrentBalance = AcceptedItem.BalanceMain;
            }
            else if (InventoryWarehouse.ID == BufferWarehouse)
            {
                AcceptedItem.CurrentBalance = AcceptedItem.BalanceBuffer;
            }
            else
            {
                //Остатков этого склада нет!
                TextQuery =
                    "DECLARE @curdate DateTime; " +
                    "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " +
                    "SELECT sum(Main.Balance) as Balance " +
                    "FROM " +
                    "(SELECT " +
                    "$Рег.ОстаткиТоваров.Товар as Item, " +
                    "$Рег.ОстаткиТоваров.ОстатокТовара as Balance " +
                    "FROM " +
                    "RG$Рег.ОстаткиТоваров (nolock) " +
                    "WHERE " +
                    "period = @curdate " +
                    "and $Рег.ОстаткиТоваров.Товар = :ItemID " +
                    "and $Рег.ОстаткиТоваров.Склад = :Warehouse " +
                    "UNION ALL " +
                    "SELECT :ItemID, 0 " +
                    ") as Main " +
                    "GROUP BY Main.Item;";
                SQL1S.QuerySetParam(ref TextQuery, "DateNow", DateTime.Now);
                SQL1S.QuerySetParam(ref TextQuery, "ItemID", Item.ID);
                SQL1S.QuerySetParam(ref TextQuery, "Warehouse", InventoryWarehouse.ID);
                if (!SS.ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }
                AcceptedItem.CurrentBalance = (int)(decimal)DT.Rows[0]["Balance"];
            }
            #endregion

            #region А теперь имя склада!
            if (AcceptedItem.ToMode != Mode.Inventory)
            {
                TextQuery =
                    "SELECT descr as Name FROM $Спр.Склады (nolock) WHERE ID = :Warehouse";
                SQL1S.QuerySetParam(ref TextQuery, "Warehouse", Const.MainWarehouse);
                if (!SS.ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }
                AcceptedItem.CurrentWarehouseName = DT.Rows[0]["Name"].ToString();
            }
            else
            {
                AcceptedItem.CurrentWarehouseName = InventoryWarehouse.Name;
            }
            #endregion

            #region c Mode.Transfer думаю пока не нужно

            /*if (OldMode.CurrentMode == Mode.Transfer)
             * {
             *  if (ATDoc.ToWarehouseSingleAdressMode)
             *  {
             *      DR = FTransferReadyItems.Select("ID = '" + AcceptedItem.ID + "'");
             *      if (DR.Length > 0)
             *      {
             *          AcceptedItem.BindingAdress = DR[0]["Adress1"].ToString();
             *          AcceptedItem.BindingAdressName = DR[0]["AdressName"].ToString();
             *          AcceptedItem.BindingAdressFlag = true;
             *      }
             *      else if (!Employer.CanMultiadress && AcceptedItem.CurrentBalance > 0)
             *      {
             *          //ОПРЕДЕЛИМ РЕКОМЕНДУЕМЫЙ АДРЕС
             *          TextQuery =
             *              "SELECT top 1 " +
             *              " left(const.value, 9) as Adress, " +
             *              " section.descr as AdressName " +
             *              "FROM _1sconst as const(nolock) " +
             *              "LEFT JOIN $Спр.Секции as Section (nolock) " +
             *                      "ON Section.id = left(value, 9) " +
             *              "WHERE " +
             *                  "const.id = $Спр.ТоварныеСекции.Секция " +
             *                  "and const.date <= :DateNow " +
             *                  "and const.OBJID in (" +
             *                                 "SELECT id FROM $Спр.ТоварныеСекции (nolock) " +
             *                                  "WHERE " +
             *                                      "$Спр.ТоварныеСекции.Склад = :Warehouse " +
             *                                      "and parentext = :Item) " +
             *              "ORDER BY " +
             *                  "const.date DESC, const.time DESC, const.docid DESC ";
             *          SQL1S.QuerySetParam(ref TextQuery, "DateNow", DateTime.Now);
             *          SQL1S.QuerySetParam(ref TextQuery, "Item", Item.ID);
             *          SQL1S.QuerySetParam(ref TextQuery, "Warehouse", ATDoc.ToWarehouseID);
             *          if (!SS.ExecuteWithRead(TextQuery, out DT))
             *          {
             *              return false;
             *          }
             *          if (DT.Rows.Count == 1)
             *          {
             *              AcceptedItem.BindingAdress = DT.Rows[0]["Adress"].ToString();
             *              AcceptedItem.BindingAdressName = DT.Rows[0]["AdressName"].ToString();
             *              AcceptedItem.BindingAdressFlag = true;
             *          }
             *      }
             *  }
             * }*/
            #endregion

            #region Заполнение FExcStr. Для подпитки это не нужно

            /*if (AcceptedItem.ToMode == Mode.Acceptance)
             * {
             *  FExcStr = "РЕДАКТИРОВАНИЕ КАРТОЧКИ! ТОВАРА НЕТ В СПИСКЕ ПРИНИМАЕМЫХ!";
             * }
             * else if (AcceptedItem.ToMode == Mode.Inventory)
             * {
             *  FExcStr = "РЕДАКТИРОВАНИЕ КАРТОЧКИ!";
             * }
             * else if (AcceptedItem.ToMode == Mode.SampleInventory)
             * {
             *  FExcStr = "ОБРАЗЕЦ! " + FExcStr;
             * }
             * else if (AcceptedItem.ToMode == Mode.SamplePut)
             * {
             *  FExcStr = "ОБРАЗЕЦ (выкладка)! " + FExcStr;
             * }
             * else if (AcceptedItem.ToMode == Mode.Transfer || AcceptedItem.ToMode == Mode.NewInventory || AcceptedItem.ToMode == Mode.Harmonization || AcceptedItem.ToMode == Mode.HarmonizationPut)
             * {
             *  if (OnShelf)
             *  {
             *     // RefItem Item = new RefItem(this); (уже объялен)
             *      Item.FoundID(AcceptedItem.ID);
             *      RefSection BindingAdress = new RefSection(this);
             *      BindingAdress.FoundID(AcceptedItem.BindingAdress);
             *
             *      if (AcceptedItem.BindingAdressFlag)
             *      {
             *          FExcStr = "НА ПОЛКУ! Отсканируйте адрес!"; // по умолчинию так ставим, а ниже условия которые могут этот текст поменять
             *
             *          if (!Item.ZonaHand.Selected && !BindingAdress.AdressZone.Selected)
             *          {
             *              FExcStr = "НА ПОЛКУ! Отсканируйте адрес: " + AcceptedItem.BindingAdressName;
             *          }
             *          else if (Item.ZonaHand.Selected && BindingAdress.AdressZone.Selected)
             *          {
             *              if (Item.ZonaHand.ID == BindingAdress.AdressZone.ID)
             *              {
             *                  FExcStr = "НА ПОЛКУ! Отсканируйте адрес: " + AcceptedItem.BindingAdressName;
             *              }
             *          }
             *      }
             *      else if (AcceptedItem.ToMode == Mode.Harmonization)
             *      {
             *          //ну не пиздец ли это???
             *          FExcStr = "В ТЕЛЕЖКУ! Отсканируйте адрес!";
             *      }
             *      else
             *      {
             *          FExcStr = "НА ПОЛКУ! Отсканируйте адрес!";
             *      }
             *  }
             *  else
             *  {
             *      DR = FTransferReadyItems.Select("ID = '" + AcceptedItem.ID + "'");
             *      if (DR.Length == 0)
             *      {
             *          FExcStr = "В ТЕЛЕЖКУ!";
             *      }
             *      else
             *      {
             *          AcceptedItem.IsRepeat = true;
             *          FExcStr = "ВНИМАНИЕ! УЖЕ СЧИТАЛСЯ! (В ТЕЛЕЖКУ)";
             *      }
             *  }
             *  AcceptedItem.Count      = InPartyCount;
             *  AcceptedItem.OnShelf    = OnShelf;
             * }*/
            #endregion

            #region Пишем в обслуживание скс. Для подпитки - не нужно

            /*
             * FCurrentMode = Mode.AcceptedItem;
             * //begin internal command
             * DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход1"]    = ExtendID(Employer.ID, "Спр.Сотрудники");
             * DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход2"]    = ExtendID(ItemID, "Спр.Товары");
             * DataMapWrite["Спр.СинхронизацияДанных.ДатаВход1"]       = "OpenItem (Открыл карточку)";
             * if (!ExecCommandNoFeedback("Internal", DataMapWrite))
             * {
             *  return false;
             * }
             * //end internal command
             * return true;
             *
             * if (FlagBarcode == 0)
             * {
             *  FExcStr = AcceptedItem.InvCode.Trim() + " найден в ручную!";
             * }
             * else if (FlagBarcode == 1)
             * {
             *  FExcStr = AcceptedItem.InvCode.Trim() + " найден по штрихкоду!";
             * }
             * else //FlagBarcode == 2
             * {
             *  FExcStr = AcceptedItem.InvCode.Trim() + " найден по ШК МЕСТА!";
             * }
             * DataRow[] DRAI = FAcceptedItems.Select("ID = '" + ItemID + "' and IDDOC = '" + IDDoc + "'");
             * if (DRAI.Length > 0)
             * {
             *  FExcStr = "ПОВТОРНАЯ приемка!!! " + FExcStr;
             * }
             * //Добавляем что принимается не все
             * if (AllCount > AcceptedItem.Count)
             * {
             *  int Coef = 1;
             *  DR = FUnits.Select("OKEI = '"  + OKEIPackage + "'");
             *  foreach(DataRow dr in DR)
             *  {
             *      Coef = (int)dr["Coef"];
             *      break;
             *  }
             *  FExcStr += " " + GetStrPackageCount(AcceptedItem.Count, Coef) + " из " + GetStrPackageCount(AllCount, Coef);
             * }
             * //begin internal command
             * DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход1"]    = ExtendID(Employer.ID, "Спр.Сотрудники");
             * DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход2"]    = ExtendID(ItemID, "Спр.Товары");
             * DataMapWrite["Спр.СинхронизацияДанных.ДокументВход"]    = ExtendID(IDDoc, "АдресПеремещение");
             * DataMapWrite["Спр.СинхронизацияДанных.ДатаВход1"]       = "OpenItemAccept (Открыл карточку для приемки)";
             * if (!ExecCommandNoFeedback("Internal", DataMapWrite))
             * {
             *  return false;
             * }*/
            //end internal command
            #endregion

            return(true);
        }