コード例 #1
0
ファイル: Misc.cs プロジェクト: jlovenpk1/LOJ
        static bool AddRemote(DataBase db, StartupLogo_Form.Loading_class Loading, string Name, string AlterName, ref DataBase.ITable Table, ref DataBase.ISTable SubTable, AddCols_delegate AddCols, bool Dedicate)
        {
            if (Loading != null)
            {
                Loading.LoadingComment = Name;
            }

            if (CheckTablesExist && Table != null)
            {
                throw new Exception("Таблица уже существует!");
            }

            Table = db.Tables.Add(Encoding.GetEncoding(866), Name, AlterName);

            AddCols(Table);

            Table.AutoSave(Dedicate, DataBase.TypeOfTable.Remote);

            if (Table.Parent.DataSourceEnabled || Table.Parent.type == DataBase.RemoteType.Local)
            {
                SubTable = Table.CreateSubTable();
                return(true);
            }
            else
            {
                if (Loading != null)
                {
                    Loading.LoadingComment = "Ошибка";
                }
                return(false);
            }
        }
コード例 #2
0
ファイル: Base.cs プロジェクト: jlovenpk1/LOJ
        public static void DataBaseLoadFT(DataBase db, StartupLogo_Form.Loading_class Loading)
        {
            if (Loading != null)
            {
                Loading.LoadingComment = "Виртуальные таблицы";
            }
            {
                T.UType = db.Tables.Add(Encoding.GetEncoding(1251), "UType", "Тип учетной записи");
                T.UType.Columns.AddString("Name", "Наименование", 15);

                G.UType = T.UType.CreateSubTable();

                G.UType.Rows.Add(new object[] { "Админ" });
                G.UType.Rows.Add(new object[] { "Сооружение" });
                G.UType.Rows.Add(new object[] { "Центр" });
                G.UType.Rows.Add(new object[] { "Объединение" });

                T.VarType = db.Tables.Add(Encoding.GetEncoding(1251), "VarType", "Тип значения");
                T.VarType.Columns.AddString("Name", "Наименование", 15);

                G.VarType = T.VarType.CreateSubTable();

                G.VarType.Rows.Add(new object[] { "Десятичное" });
                G.VarType.Rows.Add(new object[] { "Целое" });
                G.VarType.Rows.Add(new object[] { "Булево" });

                T.TResp = db.Tables.Add(Encoding.GetEncoding(1251), "TResp", "Тип ответственности");
                T.TResp.Columns.AddString("Name", "Наименование", 20);

                G.TResp = T.TResp.CreateSubTable();

                G.TResp.Rows.Add(new object[] { "Материальная" });
                G.TResp.Rows.Add(new object[] { "Лабор.анализы" });
                G.TResp.Rows.Add(new object[] { "Пробоотбор" });

                T.PnMean = db.Tables.Add(Encoding.GetEncoding(1251), "PnMean", "Значение профессии");
                T.PnMean.Columns.AddString("Name", "Наименование", 15);
                G.PnMean = T.PnMean.CreateSubTable();

                G.PnMean.Rows.Add(new object[] { "Начальник" });
                G.PnMean.Rows.Add(new object[] { "Заместитель" });
                G.PnMean.Rows.Add(new object[] { "Технолог сооружения" });
                G.PnMean.Rows.Add(new object[] { "Сотрудник" });

                T.SGroup = db.Tables.Add(Encoding.GetEncoding(1251), "SGroup", "Тип протокола");
                T.SGroup.Columns.AddString("Name", "Наименование", 30);
                T.SGroup.Columns.AddString("ShrName", "Краткое наименование", 5);
                G.SGroup = T.SGroup.CreateSubTable();

                G.SGroup.Rows.Add(1, new object[] { "Усредненный", "" });                   //1
                G.SGroup.Rows.Add(2, new object[] { "Сводный", "" });                       //2
                G.SGroup.Rows.Add(3, new object[] { "Единичный", "" });                     //3
                G.SGroup.Rows.Add(5, new object[] { "Атмосферный воздух", "АВ" });          //5
                G.SGroup.Rows.Add(8, new object[] { "Рабочая зона", "РЗ" });                //8
                G.SGroup.Rows.Add(10, new object[] { "Колодец\\Шламонакопитель", "" });     //10
                G.SGroup.Rows.Add(11, new object[] { "АКВА-АУРАТ", "Р" });                  //11
                G.SGroup.Rows.Add(12, new object[] { "Кагулянт сульфат алюминия", "Р" });   //12
                G.SGroup.Rows.Add(13, new object[] { "Токсичность1.Очищеная вода", "Т" });  //13
                G.SGroup.Rows.Add(4, new object[] { "Токсичность2", "Т" });                 //4

                T.PSG = db.Tables.Add(Encoding.GetEncoding(1251), "PSG", "Группа складов"); //Sample point type
                T.PSG.Columns.AddString("Name", "Наименование", 15);
                G.PSG = T.PSG.CreateSubTable();

                G.PSG.Rows.Add(new object[] { "Стандарт" });
                G.PSG.Rows.Add(new object[] { "Водоснабжение" });
                G.PSG.Rows.Add(new object[] { "Водоотведение" });

                T.NType = db.Tables.Add(Encoding.GetEncoding(1251), "NType", "Тип нормы"); //Sample point type
                T.NType.Columns.AddString("Name", "Наименование", 22);
                G.NType = T.NType.CreateSubTable();

                G.NType.Rows.Add(new object[] { "Показатель" });
                G.NType.Rows.Add(new object[] { "Сооружение водопровода" });
                G.NType.Rows.Add(new object[] { "Сооружение канализации" });
                G.NType.Rows.Add(new object[] { "Сооружение любое" });
                G.NType.Rows.Add(new object[] { "Выпуск" });
            }

            if (!AddRemote(db, Loading, "Podr", "Подразделение", ref T.Podr, ref G.Podr,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.PSG, "Name");
                newTable.Columns.AddString("ShrName", "Короткое наименование", 25);
                newTable.Columns.AddString("FllName", "Полное наименование", 95);
                newTable.Columns.AddString("Contact", "Контакты", 95);
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddBool("ShowP", "Скрыть/Показать");
                newTable.Columns.AddInt32("Xloc", "Положение X");
                //newTable.Columns.AddInt32("Zloc", "Положение Z");
                newTable.Columns.AddInt32("Yloc", "Положение Y");

                newTable.Columns.Add_Unique("ShrName");
                newTable.Columns.Add_Unique("FllName");
            }, false))
            {
                return;
            }

            G.Podr.Add(C.Podr.PSG);
            G.Podr.Add(C.Podr.ShrName);
            G.Podr.Add(C.Podr.FllName);
            G.Podr.Add(C.Podr.ShowP);

            G.Podr.Rows.SetAddForm(C.Podr.GetEdit);
            G.Podr.Rows.SetEditForm(C.Podr.GetEdit);

            if (!AddRemote(db, Loading, "User", "Пользователь", ref T.User, ref G.User,
                           newTable =>
            {
                newTable.Columns.AddString("Login", "Логин", 25);
                newTable.Columns.AddString("Pass", "Пароль", 25, DataBase.ColLocation.Remote, true, "", true);
                newTable.Columns.AddRelation(T.UType, "Name");                      //User Type
                newTable.Columns.AddString("PCName", "Имя компьютера", 50, true);   //
                newTable.Columns.AddString("PCUser", "Имя пользователя", 50, true); //
                newTable.Columns.AddAutoUpdate("IsHere", "Используется");
                newTable.Columns.AddString("Mail", "Почта", 50);
                newTable.Columns.AddInt32("YM", "Период");
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));      //Podr
                newTable.Columns.AddInt32("Round", "Точность", 9, DataBase.ColLocation.Local, true, 5, false);

                newTable.Columns.AddInt32("SPC1", "Колонка 1", 20, DataBase.ColLocation.Local, true, 80);                    //Column 1
                newTable.Columns.AddInt32("SPC2", "Колонка 2", 20, DataBase.ColLocation.Local, true, 80);                    //Column 2
                newTable.Columns.AddInt32("SPC3", "Колонка 3", 20, DataBase.ColLocation.Local, true, 80);                    //Column 3
                newTable.Columns.AddInt32("SPC4", "Колонка 4", 20, DataBase.ColLocation.Local, true, 80);                    //Column 4
                newTable.Columns.AddInt32("SPC5", "Колонка 5", 20, DataBase.ColLocation.Local, true, 80);                    //Column 5
                newTable.Columns.AddInt32("SPC6", "Колонка 6", 20, DataBase.ColLocation.Local, true, 80);                    //Column 6

                newTable.Columns.AddInt32("SC1", "Колонка 1", 20, DataBase.ColLocation.Local, true, 80);                     //Column 1
                newTable.Columns.AddInt32("SC2", "Колонка 2", 20, DataBase.ColLocation.Local, true, 80);                     //Column 2
                newTable.Columns.AddInt32("SC3", "Колонка 3", 20, DataBase.ColLocation.Local, true, 80);                     //Column 3
                newTable.Columns.AddInt32("SC4", "Колонка 4", 20, DataBase.ColLocation.Local, true, 80);                     //Column 4
                newTable.Columns.AddInt32("SC5", "Колонка 5", 20, DataBase.ColLocation.Local, true, 80);                     //Column 5
                newTable.Columns.AddInt32("SC6", "Колонка 6", 20, DataBase.ColLocation.Local, true, 80);                     //Column 6
                newTable.Columns.AddInt32("SCM", "Колонки показателей", 20, DataBase.ColLocation.Local, true, 80);           //Column Marks
                newTable.Columns.AddInt32("SpntH", "Высота записей точек отбора", 20, DataBase.ColLocation.Local, true, 20); //Row Height
                newTable.Columns.AddInt32("SplH", "Высота записей замеров", 20, DataBase.ColLocation.Local, true, 20);       //Row Height

                newTable.Columns.AddInt32("SplDist", "Дистанция разделения", 20, DataBase.ColLocation.Local, true, 350);     //Row Height
                newTable.Columns.AddString("ok1", "открыто", 1000, DataBase.ColLocation.Remote, false, "", true);
                newTable.Columns.AddString("ck1", "закрыто", 1800, DataBase.ColLocation.Remote, false, "", true);

                newTable.Columns.AddBool("CNP", "Создавать новый протокол");

                newTable.Columns.AddInt32("YMDSND", "День отправки");
                newTable.Columns.AddInt32("Period", "Периодичность, в днях");
                newTable.Columns.AddBool("AlowToGSU", "Разрешить отправку/приём"); //Alow to Get/Send Updates
                newTable.Columns.AddBool("UAll", "Обновлять всем");                //Update All
                newTable.Columns.AddInt32("UP", "Период обновления");              //Update Period

                newTable.Columns.AddBool("Enabled", "Разрешено использовать", DataBase.ColLocation.Remote, false, true);
                newTable.Columns.AddString("Cause", "Причина закрытия", 55, DataBase.ColLocation.Remote, false, "");

                newTable.Columns.Add_Unique("Login");
            }, false))
            {
                return;
            }


            G.User.Rows.SetAddForm(C.User.GetEdit);
            G.User.Rows.SetEditForm(C.User.GetEdit);

            G.User.Add(C.User.Login);
            G.User.Add(C.User.UType);
            G.User.Add(C.User.Podr);
            G.User.Add(C.User.Mail);

            //вынужденная мера, чтоб автотестами поддерживалось
            T.UTable = db.Tables.Add("UTable", "Выгружаемые таблицы");
            T.UTable.Columns.AddString("Name", "Наименование", 15);
            T.UTable.Columns.AddBool("Add", "Добавление", DataBase.ColLocation.Local, true, true);
            T.UTable.Columns.AddBool("Update", "Изменение", DataBase.ColLocation.Local, true, true);
            T.UTable.Columns.AddBool("Delete", "Удаление", DataBase.ColLocation.Local, true, true);
            T.UTable.Columns.AddBool("Use", "Задействовать", DataBase.ColLocation.Local, true, true);
            T.UTable.AutoSave(false, DataBase.TypeOfTable.Remote);
            G.UTable = T.UTable.CreateSubTable(false);

            T.SPool = db.Tables.Add("SPool", "Пул синхронизаций");
            T.SPool.Columns.AddRelation(T.User.GetColumn(C.User.Login), "A", T.User.AlterName + " автор");
            T.SPool.Columns.AddRelation(T.User.GetColumn(C.User.Login), "S", T.User.AlterName + " отправитель");
            T.SPool.Columns.AddBool("local", "создано локально");
            T.SPool.Columns.AddDATE("StartDate", "Дата создания");
            T.SPool.AutoSave(false, DataBase.TypeOfTable.Remote);
            G.SPool = T.SPool.CreateSubTable(false);

            var serializeProviders = GetSerializeProviders(db);

            data.SynchPool = new SynchPoolManager(db, serializeProviders.Last().Name, serializeProviders);
        }
コード例 #3
0
ファイル: Main.cs プロジェクト: SmashDream0/LOJ
        public static void DataBaseLoad(DataBase db, StartupLogo_Form.Loading_class Loading)
        {
            if (Loading != null)
            {
                Loading.LoadingComment = "SPool";
            }

            if (data.SynchPool != null)
            {
                data.SynchPool.Prepare();
            }

            /*
             *  река(речные нормы)
             *  питьевая(питьевые нормы)
             *  разводящая(питьевые нормы)
             *  промывочная(промывочные нормы)
             *  река выше стока(речные нормы)
             *  река ниже стока(речные нормы)
             *  поступило на очистку(пдк)
             *  очищенное в воду(нормы на очищенное)
             */

            if (!AddRemote(db, Loading, "Prfssn", "Професия", ref T.Prfssn, ref G.Prfssn,
                           newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 85);
                newTable.Columns.AddRelation(T.PnMean.GetColumn(C.PnMean.Name));

                newTable.Columns.Add_Unique("Name");
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "People", "Сотрудник", ref T.People, ref G.People,
                           newTable =>
            {
                newTable.Columns.AddString("Name1", "Фамилия", 30);
                newTable.Columns.AddString("Name2", "Имя", 30);
                newTable.Columns.AddString("Name3", "Отчество", 30);
                newTable.Columns.AddRelation(T.Prfssn.GetColumn(C.Prfssn.Name));

                //newTable.Columns.Add_Unique(C.People.name1, C.People.name2, C.People.name3, C.People.Prfssn);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "PSGM", "Метод для группы", ref T.PSGM, ref G.PSGM,
                           newTable =>
            {
                newTable.Columns.AddInt32("YM", "Период начала использования");
                newTable.Columns.AddRelation(T.PSG.GetColumn(C.PSG.Name));
                newTable.Columns.AddString("Name", "Наименование", 200);
                newTable.Columns.AddRelation(T.People.GetColumn(C.People.name1));

                newTable.Columns.Add_Unique(C.PSGM.YM, C.PSGM.PSG);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "PodrPpl", "Сотрудник в подразделении", ref T.PodrPpl, ref G.PodrPpl,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));       //
                newTable.Columns.AddRelation(T.People.GetColumn(C.People.name1));     //

                newTable.Columns.Add_Unique(C.PodrPpl.People, C.PodrPpl.Podr);
            }, false))
            {
                return;
            }

            G.PodrPpl.Rows.SetEditForm(C.PodrPpl.GetEdit);
            G.PodrPpl.Rows.SetAddForm(C.PodrPpl.GetEdit);

            T.PodrPpl.Add("Сотрудник", 2, true, true,
                          (R) => { return(Misc.GetPWP(T.PodrPpl.Rows.Get_UnShow <uint>(R.ID, C.PodrPpl.People))); });
            T.PodrPpl.Add(C.PodrPpl.Podr);

            if (!AddRemote(db, Loading, "Resp", "Ответственность", ref T.Resp, ref G.Resp,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.PodrPpl.GetColumn(C.PodrPpl.People)); //
                newTable.Columns.AddRelation(T.TResp.GetColumn(C.TResp.Name));       //

                newTable.Columns.Add_Unique(C.Resp.PodrPpl, C.Resp.TResp);
            }, false))
            {
                return;
            }

            T.Resp.Add("Подразделение", (R) => { return(T.Resp.Rows.Get <string>(R.ID, C.Resp.PodrPpl, C.PodrPpl.Podr, C.Podr.ShrName)); });
            T.Resp.Add("Сотрудник", (R) => { return(Misc.GetShortFIO(T.Resp.Rows.Get_UnShow <uint>(R.ID, C.Resp.PodrPpl, C.PodrPpl.People))); });
            T.Resp.Add(C.Resp.TResp);

            if (!AddSynch(db, Loading, "EdType", "Единица измерений", ref T.EdType, ref G.EdType,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 25);
                newTable.Columns.AddString("MZero", "Значит пусто", 25);

                newTable.Columns.Add_Unique(C.EdType.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "BackGrd", "Группа фона", ref T.BackGrd, ref G.BackGrd,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 25);

                newTable.Columns.Add_Unique(C.BackGrd.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "OPType", "Единица измерений вывода", ref T.OPType, ref G.OPType,
                          newTable =>
            {
                newTable.Columns.AddDOUBLE("Multy", "Множитель");
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name), "T", "Единица измерений ввода");
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name), "F", "Единица измерений вывода");

                newTable.Columns.Add_Unique(C.OPType.EdTypeT, C.OPType.EdTypeF);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Mark", "Показатель", ref T.Mark, ref G.Mark,
                          newTable =>
            {
                newTable.Columns.AddInt32("Code", "Код");
                newTable.Columns.AddString("Name", "Наименование", 55);
                newTable.Columns.AddByte("Round", "Округление", 1);
                newTable.Columns.AddBool("Exp", "Экспотенциальный");
                newTable.Columns.AddRelation(T.VarType.GetColumn(C.VarType.Name));
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name));
                newTable.Columns.AddRelation(T.OPType.GetColumn(C.OPType.EdTypeF));
                newTable.Columns.AddByte("Number", "Номер");           //позиция показателя
                newTable.Columns.AddBool("ShowZr", "Показывать ноль"); //Show Zero

                newTable.Columns.Add_Unique(C.Mark.Name);
            }, false))
            {
                return;
            }

            T.Mark.Rows.SetAddForm(C.Mark.GetEdit);
            T.Mark.Rows.SetEditForm(C.Mark.GetEdit);

            if (!AddSynch(db, Loading, "PType", "Тип пробы", ref T.PType, ref G.PType, //Probe Type
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);

                newTable.Columns.Add_Unique(C.PType.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "SCause", "Цель испытания", ref T.SCause, ref G.SCause, //Probe Cause
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 200);

                newTable.Columns.Add_Unique(C.SCause.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Norm", "Норматив", ref T.Norm, ref G.Norm,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);
                newTable.Columns.AddDATE("DFrom", "Действует от");
                newTable.Columns.AddDATE("DTo", "Действует до");
                newTable.Columns.AddRelation(T.NType.GetColumn(C.NType.Name));
                newTable.Columns.AddBool("Enabled", "Задействовать");
                newTable.Columns.AddBool("Show", "Развернуто");

                newTable.Columns.Add_Unique(C.Norm.Name);
            }, false))
            {
                return;
            }

            T.Norm.Add(C.Norm.Name);
            T.Norm.Add(C.Norm.NType);
            T.Norm.Add(C.Norm.DFrom);
            T.Norm.Add(T.Norm.GetColumn(C.Norm.DTo).AlterName, (R) =>
            {
                if (T.Norm.Rows.Get <DateTime>(R.ID, C.Norm.DTo).Ticks == 0)
                {
                    return("");
                }
                else
                {
                    return(T.Norm.Rows.Get <string>(R.ID, C.Norm.DTo));
                }
            });
            T.Norm.Add(C.Norm.Enabled);

            if (!AddSynch(db, Loading, "Method", "Метод", ref T.Method, ref G.Method,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 55);
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));

                newTable.Columns.Add_Unique(C.Method.Norm, C.Method.Mark);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "MError", "Точность измерений", ref T.MError, ref G.MError,
                          newTable =>
            {
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));
                newTable.Columns.AddDOUBLE("From", "Значение от");
                newTable.Columns.AddDOUBLE("To", "Значение до");
                newTable.Columns.AddDOUBLE("Volume", "Значение");
                newTable.Columns.AddBool("Percent", "Это процент");

                newTable.Columns.Add_Unique(C.MError.Norm, C.MError.Mark, C.MError.From, C.MError.To);
            }, false))
            {
                return;
            }
            G.MError.Get_Default();

            if (!AddSynch(db, Loading, "OLocation", "Место", ref T.OLocation, ref G.OLocation,   //Object location
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);
                newTable.Columns.AddString("ShrName", "Краткое наименование", 5);
                newTable.Columns.AddBool("Volumed", "Использовать объём");

                newTable.Columns.Add_Unique(C.OLocation.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "OType", "Тип объекта", ref T.OType, ref G.OType,   //Object Type
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 25);

                newTable.Columns.Add_Unique(C.OType.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Object", "Объект испытания", ref T.Object, ref G.Object,   //Object Type
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 100);
                newTable.Columns.AddRelation(T.OType.GetColumn(C.OType.Name));
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name), "From", "Источник");
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name), "To", "Сброс");
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));

                newTable.Columns.Add_Unique(C.Object.Name);
                newTable.Columns.Add_Unique(C.Object.Name, C.Object.OLocationFrom, C.Object.OLocationTo);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "PMNorm", "Значение нормы", ref T.PMNorm, ref G.PMNorm, //Podr Mark
                          newTable =>
            {
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.ShrName));
                newTable.Columns.AddDOUBLE("LFrom", "От");
                newTable.Columns.AddDOUBLE("LTo", "До");
                //newTable.Columns.AddBool("BckGrnd", "+ Фон");

                newTable.Columns.Add_Unique(C.PMNorm.Norm, C.PMNorm.Mark, C.PMNorm.Podr, C.PMNorm.OLocation);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Area", "Район", ref T.Area, ref G.Area,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);

                newTable.Columns.Add_Unique(C.Area.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "MVolume", "Объём выпуска", ref T.MVolume, ref G.MVolume, //Month Group
                          newTable =>
            {
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name));
                newTable.Columns.AddInt32("YM", "Номер периода");
                newTable.Columns.AddDOUBLE("Volume", "Объём");

                newTable.Columns.Add_Unique(C.MVolume.OLocation, C.MVolume.YM);
            }, false))
            {
                return;
            }

            T.MVolume.Rows.SetEditForm(C.MVolume.GetEdit);
            T.MVolume.Rows.SetAddForm(C.MVolume.GetEdit);

            T.MVolume.Add(C.MVolume.OLocation);
            T.MVolume.Add(T.MVolume.GetColumn(C.MVolume.YM).AlterName, (R) => ATMisc.GetDateTimeFromYM(G.MVolume.Rows.Get <int>(R, C.MVolume.YM)).ToShortDateString());
            T.MVolume.Add(C.MVolume.Volume);

            if (!AddSynch(db, Loading, "PaPoS", "План и место отбора образцов", ref T.PaPoS, ref G.PaPoS, //Plan and place of sampling
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 75);

                newTable.Columns.Add_Unique(C.PaPoS.Name);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "SPoint", "Точка отбора", ref T.SPoint, ref G.SPoint, //Sample point
                           newTable =>
            {                                                                                 //
                newTable.Columns.AddInt32("Number", "Номер");
                newTable.Columns.AddString("Name", "Наименование", 500);
                newTable.Columns.AddRelation(T.Area.GetColumn(C.Area.Name));
                newTable.Columns.AddBool("BckGnd", "Фоновый");         //Background
                newTable.Columns.AddBool("UsBckGnd", "Применять фон"); //Use Background
                newTable.Columns.AddRelation(T.PType.GetColumn(C.PType.Name));
                newTable.Columns.AddRelation(T.Object.GetColumn(C.Object.Name));
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddInt32("YMDS", "Начало действия");                 //Year Month Day Start
                newTable.Columns.AddInt32("YMDE", "Окончание действия");              //Year Month Day End
                newTable.Columns.AddBool("IMLst", "Игнорировать список показателей"); //Ignore Mark List
                newTable.Columns.AddRelation(T.SGroup.GetColumn(C.SGroup.Name));      //One of Two
                newTable.Columns.AddInt32("SGNum", "Номер группы");                   //Sample Point Group Name
                newTable.Columns.AddRelation(T.BackGrd.GetColumn(C.BackGrd.Name));
                newTable.Columns.AddBool("Union", "Объединена");                      //Union
                newTable.Columns.AddRelation(T.PaPoS.GetColumn(C.PaPoS.Name));
                //newTable.Columns.AddBool("CanChange", "Можно редактировать", DataBase.ColLocation.Local, true, true);

                //newTable.Columns.Add_Unique(C.SPoint.Union, C.SPoint.Name, C.SPoint.Podr, C.SPoint.YMDS);
            }, false))
            {
                return;
            }
            T.SPoint.Rows.SetEditForm(C.SPoint.GetEdit);
            T.SPoint.Rows.SetAddForm(C.SPoint.GetEdit);

            if (!AddRemote(db, Loading, "Sample", "Замер", ref T.Sample, ref G.Sample,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.SPoint.GetColumn(C.SPoint.Name));
                newTable.Columns.AddInt32("Number", "Номер");                //
                newTable.Columns.AddInt32("Loc", "Порядок создания");        //
                newTable.Columns.AddInt32("CYMD", "Дата отбора");            //Creation YearMonthDay
                newTable.Columns.AddInt32("AYMD", "Дата(начала) испытаний"); //Analis YearMonthDay
                newTable.Columns.AddRelation(T.Resp.GetColumn(C.Resp.PodrPpl), "", "Пробоотборщик");
                newTable.Columns.AddRelation(T.SCause.GetColumn(C.SCause.Name));

                //newTable.Columns.Add_Unique(C.Sample.SPoint, C.Sample.Loc);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "TestCond", "Тип условия испытания", ref T.TestCond, ref G.TestCond, //Test condition
                          newTable =>
            {
                newTable.Columns.AddRelation(T.SPoint.GetColumn(C.SPoint.Name));
                newTable.Columns.AddString("Name", "Наименование", 20);
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name));

                newTable.Columns.Add_Unique(C.TestCond.SPoint, C.TestCond.Name);
            }, false))
            {
                return;
            }

            T.TestCond.Rows.SetAddForm(C.TestCond.GetEdit);
            T.TestCond.Rows.SetEditForm(C.TestCond.GetEdit);

            if (!AddSynch(db, Loading, "TCS", "Условие испытания", ref T.TCS, ref G.TCS, //Test condition sample
                          newTable =>
            {
                newTable.Columns.AddRelation(T.Sample.GetColumn(C.Sample.CYMD));
                newTable.Columns.AddRelation(T.TestCond.GetColumn(C.TestCond.Name));
                newTable.Columns.AddString("Value", "Значение свойства", 100);

                newTable.Columns.Add_Unique(C.TCS.Sample, C.TCS.TestCond);
            }, false))
            {
                return;
            }

            T.TCS.Rows.SetAddForm(C.TCS.GetEdit);
            T.TCS.Rows.SetEditForm(C.TCS.GetEdit);

            if (!AddRemote(db, Loading, "SMS", "Показатель к точке отбора", ref T.SMS, ref G.SMS,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.SPoint.GetColumn(C.SPoint.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));

                newTable.Columns.Add_Unique(C.SMS.SPoint, C.SMS.Mark);
            }, false))
            {
                return;
            }

            T.Sample.Rows.SetAddForm(C.Sample.GetEdit);
            T.Sample.Rows.SetEditForm(C.Sample.GetEdit);

            if (!AddRemote(db, Loading, "SM", "Концентрация к показателю", ref T.SM, ref G.SM,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.Sample.GetColumn(C.Sample.AYMD));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));
                newTable.Columns.AddDOUBLE("Amount", "Значение");

                newTable.Columns.Add_Unique(C.SM.Sample, C.SM.Mark);
            }, false))
            {
                return;
            }

            T.SM.Add(T.Sample.AlterName, (R) => R.ID);
            T.SM.Add(C.SM.Mark);
            T.SM.Add(C.SM.Amount);

            G.SMMiddle = T.SM.CreateSubTable();

            if (!AddRemote(db, Loading, "Prt", "Протокол", ref T.Prt, ref G.Prt,
                           newTable =>
            {
                newTable.Columns.AddInt32("YM", "Месяц");
                newTable.Columns.AddInt32("Time", "Время");
                newTable.Columns.AddInt32("Number", "Номер протокола");
                newTable.Columns.AddBool("Union", "Объединение");
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name));
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddRelation(T.Area.GetColumn(C.Area.Name));
                newTable.Columns.AddRelation(T.Object.GetColumn(C.Object.Name));
                newTable.Columns.AddInt32("SCount", "Количество за период");
                newTable.Columns.AddRelation(T.SGroup.GetColumn(C.SGroup.Name));
                newTable.Columns.AddRelation(T.PaPoS.GetColumn(C.PaPoS.Name));
                newTable.Columns.AddInt32("Taos", "Акт отбора");      //the act of selection
                newTable.Columns.AddByte("Day", "День сохранения");   //

                //newTable.Columns.Add_Unique(C.Prt.YM, C.Prt.Number);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "PrtS", "Отборы протокола", ref T.PrtS, ref G.PrtS,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.Prt.GetColumn(C.Prt.Number));
                newTable.Columns.AddRelation(T.Sample.GetColumn(C.Sample.CYMD));

                newTable.Columns.Add_Unique(C.PrtS.Prt, C.PrtS.Sample);
            }, false))
            {
                return;
            }

            T.PrtS.Add(T.Prt.GetColumn(C.Prt.Number).AlterName, (R) => T.PrtS.Rows.Get <int>(R.ID, C.PrtS.Prt, C.Prt.Number));
            T.PrtS.Add(T.Prt.GetColumn(C.Prt.YM).AlterName, (R) => ATMisc.GetDateTimeFromYM(T.PrtS.Rows.Get <int>(R.ID, C.PrtS.Prt, C.Prt.YM)).ToShortDateString());
            T.PrtS.Add(T.Podr.AlterName, (R) => T.PrtS.Rows.Get <string>(R.ID, C.PrtS.Prt, C.Prt.Podr, C.Podr.ShrName));
            T.PrtS.Add(T.SPoint.AlterName, (R) => T.PrtS.Rows.Get <string>(R.ID, C.PrtS.Sample, C.Sample.SPoint, C.SPoint.Name));
            T.PrtS.Add("Номер отбора", (R) => T.PrtS.Rows.Get <string>(R.ID, C.PrtS.Sample, C.Sample.Number));
            T.PrtS.Add(T.Sample.GetColumn(C.Sample.CYMD).AlterName, (R) => ATMisc.GetDateTime(T.PrtS.Rows.Get <int>(R.ID, C.PrtS.Sample, C.Sample.CYMD)).ToShortDateString());

            if (data.SynchPool != null)
            {
                data.SynchPool.Invalidate(G.UTable);
            }
        }