public static void Перенумеровать(IObjectSpace os, КнигаПрод book)
        {
            Int32 cur_num = 1;

            foreach (var line in book.КнПродСтр.OrderBy(x => x.ДатаСчФПрод))
            {
                line.НомерПор = cur_num++;
            }
        }
        public void Перенумеровать()
        {
            IObjectSpace os_cur = CommonMethods.FindObjectSpaceByObject(this);

            using (IObjectSpace os = os_cur.CreateNestedObjectSpace()) {
                КнигаПрод book = os.GetObject <КнигаПрод>(this);
                Перенумеровать(os, book);
                os.CommitChanges();
            }
        }
        public static void Обновить(IObjectSpace os, КнигаПрод book)
        {
            os.Delete(book.КнПродСтр);
            Int32 cur_num = 1;

            book.Книга.СтрокиКниги.Sorting.Add(new SortProperty("Основание.Дата", DevExpress.Xpo.DB.SortingDirection.Ascending));
            foreach (var line in book.Книга.СтрокиКниги)
            {
                КнПродСтр doc_line = os.CreateObject <КнПродСтр>();
                book.КнПродСтр.Add(doc_line);
                doc_line.КнигаСтрока = line;
                doc_line.НомерПор    = cur_num++;
                foreach (Операция oper in line.Операции)
                {
                    if (oper.Основание.Тип == Основание.ТипОснования.СФА)
                    {
                        ДокПдтвОпл pay_doc = null;
                        foreach (ДокПдтвОпл doc in doc_line.ДокПдтвОпл)
                        {
                            if (doc.НомДокПдтвОпл == oper.ПДНомер && doc.ДатаДокПдтвОпл == oper.ПДДата)
                            {
                                pay_doc = doc;
                                break;
                            }
                        }
                        if (pay_doc == null)
                        {
                            pay_doc = os.CreateObject <ДокПдтвОпл>();
                            doc_line.ДокПдтвОпл.Add(pay_doc);
                            pay_doc.НомДокПдтвОпл  = oper.ПДНомер;
                            pay_doc.ДатаДокПдтвОпл = oper.ПДДата;
                        }
                    }
                    if (oper.СуммаСтоимость != 0)
                    {
                        doc_line.КодВидОпер = oper.ОфицВидОперации;
                    }
                    if (oper.Ставка == СтавкаНДС.НЕОБЛ)
                    {
                    }
                    if (oper.Ставка == СтавкаНДС.ОБЛ_0)
                    {
                        doc_line.СтоимПродСФ0 += oper.СуммаСтоимость;
                    }
                    if (oper.Ставка == СтавкаНДС.ОБЛ_10)
                    {
                        if (oper.Основание != null && oper.Основание.Тип != Основание.ТипОснования.СФА)
                        {
                            doc_line.СтоимПродСФ10 += oper.СуммаСтоимость;
                        }
                        doc_line.СумНДССФ10 += oper.СуммаНДСБаза;
                    }
                    if (oper.Ставка == СтавкаНДС.ОБЛ_18)
                    {
                        if (oper.Основание != null && oper.Основание.Тип != Основание.ТипОснования.СФА)
                        {
                            doc_line.СтоимПродСФ18 += oper.СуммаСтоимость;
                        }
                        doc_line.СумНДССФ18 += oper.СуммаНДСБаза;
                    }
                }
                if (doc_line.СумНДССФ18 == 0 && doc_line.СтоимПродСФ18 == 0 &&
                    doc_line.СтоимПродСФ10 == 0 && doc_line.СумНДССФ10 == 0 &&
                    doc_line.СтоимПродСФ0 == 0)
                {
                    os.Delete(doc_line);
                    cur_num--;
                }
            }
        }