Exemple #1
0
        int FillObjects(string Table, TreeIter root, TableInfo.Params ParametersIn)
        {
            TreeIter DeleteIter, ClearIter, GroupIter, ItemIter;
            int Totalcount = 0;
            int DelCount = 0;
            int ClearCount = 0;
            int GroupCount;
            DbCommand cmd;
            DbDataReader rdr;
            QSMain.CheckConnectionAlive();
            logger.Debug ("Поиск зависимостей для таблицы {0}", Table);
            if(!QSMain.ProjectTables.ContainsKey(Table))
            {
                ErrorString = "Нет описания для таблицы " + Table;
                logger.Error(ErrorString);
                ErrorHappens = true;
                return 0;
            }
            if(QSMain.ProjectTables[Table].DeleteItems.Count > 0)
            {
                if(!ObjectsTreeStore.IterIsValid(root))
                    DeleteIter = ObjectsTreeStore.AppendNode();
                else
                    DeleteIter = ObjectsTreeStore.AppendNode (root);
                foreach(KeyValuePair<string, TableInfo.DeleteDependenceItem> pair in QSMain.ProjectTables[Table].DeleteItems)
                {
                    GroupCount = 0;
                    if(!QSMain.ProjectTables.ContainsKey(pair.Key))
                    {
                        ErrorString = String.Format ("Зависимость удаления у таблицы {1} ссылается на таблицу {0} описания для которой нет.", pair.Key, Table);
                        logger.Error(ErrorString);
                        ErrorHappens = true;
                        return 0;
                    }
                    string sql = QSMain.ProjectTables[pair.Key].SqlSelect + pair.Value.sqlwhere;
                    cmd = QSMain.ConnectionDB.CreateCommand();
                    cmd.CommandText = sql;
                    AddParameters(cmd, pair.Value.SqlParam, ParametersIn);

                    rdr = cmd.ExecuteReader();
                    if(!rdr.HasRows)
                    {
                        rdr.Close ();
                        continue;
                    }
                    GroupIter = ObjectsTreeStore.AppendNode(DeleteIter);
                    int IndexIntParam = 0;
                    int IndexStrParam = 0;
                    if(QSMain.ProjectTables[pair.Key].PrimaryKey.ParamInt != "")
                        IndexIntParam = rdr.GetOrdinal(QSMain.ProjectTables[pair.Key].PrimaryKey.ParamInt);
                    if(QSMain.ProjectTables[pair.Key].PrimaryKey.ParamStr != "")
                        IndexStrParam = rdr.GetOrdinal(QSMain.ProjectTables[pair.Key].PrimaryKey.ParamStr);
                    List<object[]> ReadedData = new List<object[]>();
                    while(rdr.Read())
                    {
                        object[] Fields = new object[rdr.FieldCount];
                        rdr.GetValues(Fields);
                        ReadedData.Add(Fields);
                    }
                    rdr.Close ();

                    foreach(object[] row in ReadedData)
                    {
                        ItemIter = ObjectsTreeStore.AppendValues(GroupIter, String.Format(QSMain.ProjectTables[pair.Key].DisplayString, row));
                        if(QSMain.ProjectTables[pair.Key].DeleteItems.Count > 0 || QSMain.ProjectTables[pair.Key].ClearItems.Count > 0)
                        {
                            TableInfo.Params OutParam = new TableInfo.Params();
                            if(QSMain.ProjectTables[pair.Key].PrimaryKey.ParamInt != "")
                                OutParam.ParamInt = Convert.ToInt32(row[IndexIntParam]);
                            if(QSMain.ProjectTables[pair.Key].PrimaryKey.ParamStr != "")
                                OutParam.ParamStr = row[IndexStrParam].ToString();
                            Totalcount += FillObjects (pair.Key,ItemIter,OutParam);
                        }
                        GroupCount++;
                        Totalcount++;
                        DelCount++;
                    }
                    ObjectsTreeStore.SetValues(GroupIter, QSMain.ProjectTables[pair.Key].ObjectsName + "(" + GroupCount.ToString() + ")");
                }
                if(DelCount > 0)
                    ObjectsTreeStore.SetValues(DeleteIter, String.Format ("Будет удалено ({0}/{1}) объектов:",DelCount,Totalcount));
                else
                    ObjectsTreeStore.Remove (ref DeleteIter);
            }

            if(QSMain.ProjectTables[Table].ClearItems.Count > 0)
            {
                if(!ObjectsTreeStore.IterIsValid(root))
                    ClearIter = ObjectsTreeStore.AppendNode();
                else
                    ClearIter = ObjectsTreeStore.AppendNode (root);
                foreach(KeyValuePair<string, TableInfo.ClearDependenceItem> pair in QSMain.ProjectTables[Table].ClearItems)
                {
                    GroupCount = 0;
                    if(!QSMain.ProjectTables.ContainsKey(pair.Key))
                    {
                        ErrorString = String.Format ("Зависимость очистки у таблицы {1} ссылается на таблицу {0} описания для которой нет.", pair.Key, Table);
                        logger.Error(ErrorString);
                        ErrorHappens = true;
                        return 0;
                    }
                    string sql = QSMain.ProjectTables[pair.Key].SqlSelect + pair.Value.sqlwhere;
                    cmd = QSMain.ConnectionDB.CreateCommand();
                    cmd.CommandText = sql;
                    AddParameters(cmd, pair.Value.SqlParam, ParametersIn);

                    rdr = cmd.ExecuteReader();
                    if(!rdr.HasRows)
                    {
                        rdr.Close ();
                        continue;
                    }
                    GroupIter = ObjectsTreeStore.AppendNode(ClearIter);

                    while(rdr.Read())
                    {
                        object[] Fields = new object[rdr.FieldCount];
                        rdr.GetValues(Fields);
                        ItemIter = ObjectsTreeStore.AppendValues(GroupIter, String.Format(QSMain.ProjectTables[pair.Key].DisplayString,Fields));
                        GroupCount++;
                        Totalcount++;
                        ClearCount++;
                    }
                    ObjectsTreeStore.SetValues(GroupIter, QSMain.ProjectTables[pair.Key].ObjectsName + "(" + GroupCount.ToString() + ")");
                    rdr.Close ();
                }
                if(ClearCount > 0)
                    ObjectsTreeStore.SetValues(ClearIter, String.Format ("Будет очищено ссылок у {0} объектов:",ClearCount));
                else
                    ObjectsTreeStore.Remove (ref ClearIter);
            }
            return Totalcount;
        }
Exemple #2
0
        private void DeleteObjects(string Table, TableInfo.Params ParametersIn)
        {
            DbCommand cmd;
            DbDataReader rdr;
            string sql;
            if(!QSMain.ProjectTables.ContainsKey(Table))
            {
                ErrorString = "Нет описания для таблицы " + Table;
                logger.Error(ErrorString);
                ErrorHappens = true;
                return;
            }
            QSMain.CheckConnectionAlive();
            if(QSMain.ProjectTables[Table].DeleteItems.Count > 0)
            {
                foreach(KeyValuePair<string, TableInfo.DeleteDependenceItem> pair in QSMain.ProjectTables[Table].DeleteItems)
                {
                    if(QSMain.ProjectTables[pair.Key].DeleteItems.Count > 0 || QSMain.ProjectTables[pair.Key].ClearItems.Count > 0)
                    {
                        sql = "SELECT * FROM " +pair.Key + " " + pair.Value.sqlwhere;
                        cmd = QSMain.ConnectionDB.CreateCommand();
                        cmd.CommandText = sql;
                        AddParameters(cmd, pair.Value.SqlParam, ParametersIn);
                        rdr = cmd.ExecuteReader();
                        List<TableInfo.Params> ReadedData = new List<TableInfo.Params>();
                        string IntFieldName = QSMain.ProjectTables[pair.Key].PrimaryKey.ParamInt;
                        string StrFieldName = QSMain.ProjectTables[pair.Key].PrimaryKey.ParamStr;
                        while(rdr.Read())
                        {
                            TableInfo.Params OutParam = new TableInfo.Params();
                            if(IntFieldName != "")
                                OutParam.ParamInt = rdr.GetInt32(rdr.GetOrdinal(IntFieldName));
                            if(StrFieldName != "")
                                OutParam.ParamStr = rdr.GetString(rdr.GetOrdinal(StrFieldName));
                            ReadedData.Add(OutParam);
                        }
                        rdr.Close ();

                        foreach(TableInfo.Params row in ReadedData)
                        {
                            DeleteObjects (pair.Key, row);
                        }
                    }

                    sql = "DELETE FROM " + pair.Key + " " + pair.Value.sqlwhere;
                    cmd = QSMain.ConnectionDB.CreateCommand();
                    cmd.CommandText = sql;
                    AddParameters(cmd, pair.Value.SqlParam, ParametersIn);
                    cmd.ExecuteNonQuery();
                }
            }

            if(QSMain.ProjectTables[Table].ClearItems.Count > 0)
            {
                foreach(KeyValuePair<string, TableInfo.ClearDependenceItem> pair in QSMain.ProjectTables[Table].ClearItems)
                {
                    sql = "UPDATE " + pair.Key + " SET ";
                    bool first = true;
                    foreach (string FieldName in pair.Value.ClearFields)
                    {
                        if(!first)
                            sql += ", ";
                        sql += FieldName + " = NULL ";
                        first = false;
                    }
                    sql += pair.Value.sqlwhere;
                    cmd = QSMain.ConnectionDB.CreateCommand();
                    cmd.CommandText = sql;
                    AddParameters(cmd, pair.Value.SqlParam, ParametersIn);
                    cmd.ExecuteNonQuery ();
                }
            }

            sql = "DELETE FROM " + Table + " WHERE ";
            bool FirstKey = true;
            if(QSMain.ProjectTables[Table].PrimaryKey.ParamInt != "")
            {
                sql += QSMain.ProjectTables[Table].PrimaryKey.ParamInt + " = @IntParam ";
                FirstKey = false;
            }
            if(QSMain.ProjectTables[Table].PrimaryKey.ParamStr != "")
            {
                if(!FirstKey)
                    sql += "AND ";
                sql += QSMain.ProjectTables[Table].PrimaryKey.ParamStr + " = @StrParam ";
                FirstKey = false;
            }
            cmd = QSMain.ConnectionDB.CreateCommand();
            cmd.CommandText = sql;
            TableInfo.PrimaryKeys TempParams = new TableInfo.PrimaryKeys(
                QSMain.ProjectTables[Table].PrimaryKey.ParamInt != "" ? "@IntParam" : "",
                QSMain.ProjectTables[Table].PrimaryKey.ParamStr != "" ? "@StrParam" : ""
            );
            AddParameters(cmd, TempParams, ParametersIn);
            cmd.ExecuteNonQuery();
        }
Exemple #3
0
 void AddParameters(DbCommand cmd, TableInfo.PrimaryKeys SqlParam, TableInfo.Params ParametersIn)
 {
     if(SqlParam.ParamStr != "")
     {
         DbParameter parameterStr = cmd.CreateParameter();
         parameterStr.ParameterName = SqlParam.ParamStr;
         parameterStr.Value = ParametersIn.ParamStr;
         cmd.Parameters.Add(parameterStr);
     }
     if(SqlParam.ParamInt != "")
     {
         DbParameter parameterInt = cmd.CreateParameter();
         parameterInt.ParameterName = SqlParam.ParamInt;
         parameterInt.Value = ParametersIn.ParamInt;
         cmd.Parameters.Add(parameterInt);
     }
 }
        static void CreateProjectParam()
        {
            QSMain.ProjectPermission = new Dictionary<string, UserPermission>();

            QSMain.User = new UserInfo();

            //Параметры удаления
            Dictionary<string, TableInfo> Tables = new Dictionary<string, TableInfo>();
            QSMain.ProjectTables = Tables;
            TableInfo PrepareTable;

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Каркасы";
            PrepareTable.ObjectName = "каркас";
            PrepareTable.SqlSelect = "SELECT name, id FROM basis ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("orders",
                new TableInfo.DeleteDependenceItem("WHERE basis_id = @id ", "", "@id"));
            Tables.Add("basis", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Кубы";
            PrepareTable.ObjectName = "куб";
            PrepareTable.SqlSelect = "SELECT name, id FROM cubes ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("order_details",
                new TableInfo.DeleteDependenceItem("WHERE cube_id = @id ", "", "@id"));
            Tables.Add("cubes", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Кубы в заказах";
            PrepareTable.ObjectName = "куб в заказе";
            PrepareTable.SqlSelect = "SELECT order_details.order_id, order_details.count, cubes.name, order_details.id FROM order_details " +
                "LEFT JOIN cubes ON order_details.cube_id = cubes.id ";
            PrepareTable.DisplayString = "{1} куб(ов) \"{2}\" в заказе №{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("order_details", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Компоненты каркаса";
            PrepareTable.ObjectName = "компонент каркаса";
            PrepareTable.SqlSelect = "SELECT nomenclature.name, basis.name, basis_items.id FROM basis_items " +
                "LEFT JOIN nomenclature ON nomenclature.id = basis_items.item_id " +
                "LEFT JOIN basis ON basis_items.basis_id = basis.id ";
            PrepareTable.DisplayString = "Компонент {0} в {1}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("basis_items", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Номенклатура";
            PrepareTable.ObjectName = "номенклатуру";
            PrepareTable.SqlSelect = "SELECT nomenclature.name, id FROM nomenclature ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("basis_items",
                new TableInfo.DeleteDependenceItem("WHERE item_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add("cubes_items",
                new TableInfo.DeleteDependenceItem("WHERE item_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add("order_basis_details",
                new TableInfo.DeleteDependenceItem("WHERE nomenclature_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add("order_cubes_details",
                new TableInfo.DeleteDependenceItem("WHERE nomenclature_id = @id ", "", "@id"));
            Tables.Add("nomenclature", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Компоненты куба";
            PrepareTable.ObjectName = "Компонент куба";
            PrepareTable.SqlSelect = "SELECT nomenclature.name, cubes.name, cubes_items.id FROM cubes_items " +
                "LEFT JOIN nomenclature ON cubes_items.item_id = nomenclature.id " +
                "LEFT JOIN cubes ON cubes_items.cubes_id = cubes.id ";
            PrepareTable.DisplayString = "{0} в кубе {1}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("cubes_items", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Компоненты куба из заказов";
            PrepareTable.ObjectName = "Компонент куба из заказа";
            PrepareTable.SqlSelect = "SELECT nomenclature.name, order_cubes_details.order_id, order_cubes_details.id as id FROM order_cubes_details " +
                "LEFT JOIN nomenclature ON order_cubes_details.nomenclature_id = nomenclature.id ";
            PrepareTable.DisplayString = "{0} в заказе №{1}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("order_cubes_details", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Выставки";
            PrepareTable.ObjectName = "выставку";
            PrepareTable.SqlSelect = "SELECT name, id FROM exhibition ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.ClearItems.Add ("orders",
                new TableInfo.ClearDependenceItem ("WHERE exhibition_id = @exhibition_id ", "", "@exhibition_id", "exhibition_id"));
            Tables.Add("exhibition", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Материалы";
            PrepareTable.ObjectName = "материал";
            PrepareTable.SqlSelect = "SELECT name, id FROM materials ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.ClearItems.Add ("order_details",
                new TableInfo.ClearDependenceItem ("WHERE material_id = @material_id ", "", "@material_id", "material_id"));
            PrepareTable.ClearItems.Add ("order_basis_details",
                new TableInfo.ClearDependenceItem ("WHERE material_id = @material_id ", "", "@material_id", "material_id"));
            Tables.Add("materials", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Виды облицовки";
            PrepareTable.ObjectName = "вид облицовки";
            PrepareTable.SqlSelect = "SELECT name, id FROM facing ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.ClearItems.Add ("order_details",
                new TableInfo.ClearDependenceItem ("WHERE facing_id = @facing_id ", "", "@facing_id", "facing_id"));
            PrepareTable.ClearItems.Add ("order_basis_details",
                new TableInfo.ClearDependenceItem ("WHERE facing_id = @facing_id ", "", "@facing_id", "facing_id"));
            Tables.Add("facing", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Компоненты каркаса из заказов";
            PrepareTable.ObjectName = "Компонент каркаса из заказов";
            PrepareTable.SqlSelect = "SELECT nomenclature.name, order_basis_details.order_id, order_basis_details.id as id FROM order_basis_details " +
                "LEFT JOIN nomenclature ON order_basis_details.nomenclature_id = nomenclature.id ";
            PrepareTable.DisplayString = "{0} в заказе №{1}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("order_basis_details", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Заказы";
            PrepareTable.ObjectName = "заказ";
            PrepareTable.SqlSelect = "SELECT id FROM orders ";
            PrepareTable.DisplayString = "Заказ №{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("orders", PrepareTable);
        }
Exemple #5
0
        static void CreateProjectParam()
        {
            QSMain.AdminFieldName = "admin";
            QSMain.ProjectPermission = new Dictionary<string, UserPermission>();
            //QSMain.ProjectPermission.Add("edit_slips", new UserPermission("edit_slips", "Изменение кассы задним числом",
            //"Пользователь может изменять или добавлять кассовые документы задним числом."));

            QSMain.User = new UserInfo();

            //Параметры удаления
            Dictionary<string, TableInfo> Tables = new Dictionary<string, TableInfo>();
            QSMain.ProjectTables = Tables;
            TableInfo PrepareTable;

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Пользователи";
            PrepareTable.ObjectName = "пользователя";
            PrepareTable.SqlSelect = "SELECT name, id FROM users ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys("id");
            Tables.Add ("users", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Услуги";
            PrepareTable.ObjectName = "услуга";
            PrepareTable.SqlSelect = "SELECT name , id FROM services ";
            PrepareTable.DisplayString = "Услуга {0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("order_pays",
                new TableInfo.DeleteDependenceItem ("WHERE service_id = @id ", "", "@id"));
            Tables.Add("services", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Оплаты заказа";
            PrepareTable.ObjectName = "оплата заказа";
            PrepareTable.SqlSelect = "SELECT order_id, id, cost FROM order_pays ";
            PrepareTable.DisplayString = "Оплата в заказе {0} на сумму{2:C}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("order_pays", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Заказы";
            PrepareTable.ObjectName = "заказ";
            PrepareTable.SqlSelect = "SELECT id, date, hour FROM orders ";
            PrepareTable.DisplayString = "Заказ №{0} на {2} часа {1:d} числа";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("orders", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Стекла в заказе";
            PrepareTable.ObjectName = "стекло в заказе";
            PrepareTable.SqlSelect = "SELECT order_id, id FROM order_glasses ";
            PrepareTable.DisplayString = "Стекло в заказе №{0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            Tables.Add("order_glasses", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Виды стекол";
            PrepareTable.ObjectName = "вид стекла";
            PrepareTable.SqlSelect = "SELECT name, id FROM glass ";
            PrepareTable.DisplayString = "Стекло {0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("order_glasses",
                new TableInfo.DeleteDependenceItem ("WHERE glass_id = @id ", "", "@id"));
            Tables.Add("glass", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Статусы";
            PrepareTable.ObjectName = "статус";
            PrepareTable.SqlSelect = "SELECT name, id FROM status ";
            PrepareTable.DisplayString = "Статус {0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("orders",
                new TableInfo.DeleteDependenceItem ("WHERE status_id = @id ", "", "@id"));
            Tables.Add("status", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Склады";
            PrepareTable.ObjectName = "склад";
            PrepareTable.SqlSelect = "SELECT name, id FROM stocks ";
            PrepareTable.DisplayString = "Склад {0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.ClearItems.Add ("orders",
                new TableInfo.ClearDependenceItem ("WHERE stock_id = @id", "", "@id", "stock_id"));
            Tables.Add("stocks", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Производители";
            PrepareTable.ObjectName = "производитель";
            PrepareTable.SqlSelect = "SELECT name, id FROM manufacturers ";
            PrepareTable.DisplayString = "Производитель {0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.ClearItems.Add ("orders",
                new TableInfo.ClearDependenceItem ("WHERE manufacturer_id = @id", "", "@id", "manufacturer_id"));
            Tables.Add("manufacturers", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Модели автомобилей";
            PrepareTable.ObjectName = "модель автомобиля";
            PrepareTable.SqlSelect = "SELECT marks.name, models.name, models.id FROM models " +
                "LEFT JOIN marks ON marks.id = models.mark_id ";
            PrepareTable.DisplayString = "Модель {0} {1}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("orders",
                new TableInfo.DeleteDependenceItem ("WHERE car_model_id = @id ", "", "@id"));
            Tables.Add("models", PrepareTable);

            PrepareTable = new TableInfo();
            PrepareTable.ObjectsName = "Марки автомобилей";
            PrepareTable.ObjectName = "марка автомобиля";
            PrepareTable.SqlSelect = "SELECT name, id FROM marks ";
            PrepareTable.DisplayString = "Марка {0}";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys("id");
            PrepareTable.DeleteItems.Add("models",
                new TableInfo.DeleteDependenceItem ("WHERE mark_id = @id ", "", "@id"));
            Tables.Add("marks", PrepareTable);
        }
Exemple #6
0
        static void CreateProjectParam()
        {
            QSMain.ProjectPermission = new Dictionary<string, UserPermission> ();
            QSMain.ProjectPermission.Add ("edit_slips", new UserPermission ("edit_slips", "Изменение кассы задним числом",
                                                                            "Пользователь может изменять или добавлять кассовые документы задним числом."));
            //Скрипты создания базы
            DBCreator.AddBaseScript (
                new Version(2,3),
                "Чистая база",
                "bazar.SQLScripts.new-2.3.sql"
            );

            //Настраиваем обновления
            QSUpdater.DB.DBUpdater.AddUpdate (
                new Version (2, 2),
                new Version (2, 3),
                "bazar.SQLScripts.Update 2.2 to 2.3.sql");

            //Параметры удаления
            Dictionary<string, TableInfo> Tables = new Dictionary<string, TableInfo> ();
            QSMain.ProjectTables = Tables;
            TableInfo PrepareTable;

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Места";
            PrepareTable.ObjectName = "место";
            PrepareTable.SqlSelect = "SELECT place_types.name as type, place_no, area , type_id FROM places " +
            "LEFT JOIN place_types ON places.type_id = place_types.id ";
            PrepareTable.DisplayString = "Место {0}-{1} с площадью {2} кв.м.";
            PrepareTable.PrimaryKey = new  TableInfo.PrimaryKeys ("type_id", "place_no");
            PrepareTable.DeleteItems.Add ("contracts",
                                          new TableInfo.DeleteDependenceItem ("WHERE contracts.place_type_id = @type_id AND contracts.place_no = @place_no", "@place_no", "@type_id"));
            PrepareTable.DeleteItems.Add ("meters",
                                          new TableInfo.DeleteDependenceItem ("WHERE meters.place_type_id = @type_id AND meters.place_no = @place_no ", "@place_no", "@type_id"));
            PrepareTable.DeleteItems.Add ("events",
                                          new TableInfo.DeleteDependenceItem ("WHERE place_type_id = @type_id AND place_no = @place_no AND lessee_id IS NULL", "@place_no", "@type_id"));
            PrepareTable.ClearItems.Add ("events",
                                         new TableInfo.ClearDependenceItem ("WHERE place_type_id = @type_id AND place_no = @place_no AND lessee_id IS NOT NULL", "@place_no", "@type_id", "place_type_id", "place_no"));
            Tables.Add ("places", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Договора";
            PrepareTable.ObjectName = "договор";
            PrepareTable.SqlSelect = "SELECT number, sign_date, lessees.name as lessee, contracts.id as id FROM contracts " +
            "LEFT JOIN lessees ON lessees.id = lessee_id ";
            PrepareTable.DisplayString = "Договор №{0} от {1:d} с арендатором {2}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("accrual",
                                          new TableInfo.DeleteDependenceItem ("WHERE contract_id = @contract_id ", "", "@contract_id"));
            PrepareTable.ClearItems.Add ("credit_slips",
                                         new TableInfo.ClearDependenceItem ("WHERE contract_id = @contract_id ", "", "@contract_id", "contract_id"));
            Tables.Add ("contracts", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Арендаторы";
            PrepareTable.ObjectName = "арендатора";
            PrepareTable.SqlSelect = "SELECT name , id FROM lessees ";
            PrepareTable.DisplayString = "Арендатор {0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("credit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE lessee_id = @lessee_id ", "", "@lessee_id"));
            PrepareTable.DeleteItems.Add ("contracts",
                                          new TableInfo.DeleteDependenceItem ("WHERE lessee_id = @lessee_id ", "", "@lessee_id"));
            PrepareTable.DeleteItems.Add ("events",
                                          new TableInfo.DeleteDependenceItem ("WHERE lessee_id = @lessee_id AND (place_type_id IS NULL OR place_no IS NULL) ", "", "@lessee_id"));
            PrepareTable.ClearItems.Add ("events",
                                         new TableInfo.ClearDependenceItem ("WHERE lessee_id = @lessee_id AND place_type_id IS NOT NULL AND place_no IS NOT NULL", "", "@lessee_id", "lessee_id"));
            Tables.Add ("lessees", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "События";
            PrepareTable.ObjectName = "событие";
            PrepareTable.SqlSelect = "SELECT classes.name as class, date, place_types.name as type, place_no, lessees.name as lessee, events.id as id FROM events " +
            "LEFT JOIN place_types ON events.place_type_id = place_types.id " +
            "LEFT JOIN lessees ON events.lessee_id = lessees.id " +
            "LEFT JOIN classes ON events.class_id = classes.id ";
            PrepareTable.DisplayString = "{0} в {1} на месте {2}-{3} c арендатором {4}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("events", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Контактные лица";
            PrepareTable.ObjectName = "контактное лицо";
            PrepareTable.SqlSelect = "SELECT name, id FROM contact_persons ";
            PrepareTable.DisplayString = "Контакт {0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.ClearItems.Add ("places",
                                         new TableInfo.ClearDependenceItem ("WHERE contact_person_id = @id", "", "@id", "contact_person_id"));
            Tables.Add ("contact_persons", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Начисления";
            PrepareTable.ObjectName = "начисление";
            PrepareTable.SqlSelect = "SELECT DATE(CONCAT('2012-', month, '-1')) as month, year, lessees.name as lessee, contracts.number, accrual.id as id FROM accrual " +
            "LEFT JOIN contracts ON accrual.contract_id = contracts.id " +
            "LEFT JOIN lessees ON contracts.lessee_id = lessees.id ";
            PrepareTable.DisplayString = "Начисление за {0:MMMM} {1} арендатору {2} по договору {3}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("credit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE accrual_id = @id AND operation = 'payment'", "", "@id"));
            PrepareTable.ClearItems.Add ("credit_slips",
                                         new TableInfo.ClearDependenceItem ("WHERE accrual_id = @id AND operation <> 'payment'", "", "@id", "accrual_id"));
            Tables.Add ("accrual", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Оплаты";
            PrepareTable.ObjectName = "оплату";
            PrepareTable.SqlSelect = "SELECT payments.createdate, accrual_id, payments.id FROM payments ";
            PrepareTable.DisplayString = "Оплата от {0:d} по начислению № {1}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("payments", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Авансовые отчеты";
            PrepareTable.ObjectName = "авансовый отчет";
            PrepareTable.SqlSelect = "SELECT advance.id as id, date, employees.name as employee FROM advance " +
            "LEFT JOIN employees ON employees.id = employee_id ";
            PrepareTable.DisplayString = "Авансовый отчет №{0} от {1:d} на {2}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("advance", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Кассы";
            PrepareTable.ObjectName = "кассу";
            PrepareTable.SqlSelect = "SELECT name, id FROM cash ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("advance",
                                          new TableInfo.DeleteDependenceItem ("WHERE cash_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("debit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE cash_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("accrual_pays",
                                          new TableInfo.DeleteDependenceItem ("WHERE cash_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("contract_pays",
                                          new TableInfo.DeleteDependenceItem ("WHERE cash_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("credit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE cash_id = @id ", "", "@id"));
            Tables.Add ("cash", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Строки начислений";
            PrepareTable.ObjectName = "строку начисления";
            PrepareTable.SqlSelect = "SELECT accrual_id, services.name as service, (count * price) as sum, accrual_pays.id as id FROM accrual_pays " +
            "LEFT JOIN services ON service_id = services.id ";
            PrepareTable.DisplayString = "Строка в начислении {0} услуги {1} на сумму {2:C}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.ClearItems.Add ("meter_reading",
                                         new TableInfo.ClearDependenceItem ("WHERE accrual_pay_id = @id", "", "@id", "accrual_pay_id"));
            PrepareTable.DeleteItems.Add ("payment_details",
                                          new TableInfo.DeleteDependenceItem ("WHERE accrual_pay_id = @id ", "", "@id"));
            Tables.Add ("accrual_pays", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Строки оплаты";
            PrepareTable.ObjectName = "строку оплаты";
            PrepareTable.SqlSelect = "SELECT payment_id, services.name as service, sum, payment_details.id as id FROM payment_details " +
            "LEFT JOIN accrual_pays ON accrual_pays.id = payment_details.accrual_pay_id " +
            "LEFT JOIN services ON accrual_pays.service_id = services.id ";
            PrepareTable.DisplayString = "Строка оплаты услуги {1} на сумму {2:C} в платеже {0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("payment_details", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Строки услуг в договоре";
            PrepareTable.ObjectName = "строку услуги в договоре";
            PrepareTable.SqlSelect = "SELECT services.name as service, contracts.number, (count * price) as sum, contract_pays.id as id FROM contract_pays " +
            "LEFT JOIN services ON service_id = services.id " +
            "LEFT JOIN contracts ON contracts.id = contract_pays.contract_id ";
            PrepareTable.DisplayString = "Строка услуги {0} в договоре {1} на сумму {2:C}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("contract_pays", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Типы событий";
            PrepareTable.ObjectName = "тип события";
            PrepareTable.SqlSelect = "SELECT name, id FROM classes ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("events",
                                          new TableInfo.DeleteDependenceItem ("WHERE class_id = @id ", "", "@id"));
            Tables.Add ("classes", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Контрагенты";
            PrepareTable.ObjectName = "контрагента";
            PrepareTable.SqlSelect = "SELECT name, id FROM contractors ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.ClearItems.Add ("debit_slips",
                                         new TableInfo.ClearDependenceItem ("WHERE contractor_id = @id", "", "@id", "contractor_id"));
            PrepareTable.ClearItems.Add ("advance",
                                         new TableInfo.ClearDependenceItem ("WHERE contractor_id = @id", "", "@id", "contractor_id"));
            Tables.Add ("contractors", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Приходные ордера";
            PrepareTable.ObjectName = "приходный ордер";
            PrepareTable.SqlSelect = "SELECT id, date, sum FROM credit_slips ";
            PrepareTable.DisplayString = "Приходный ордер №{0} от {1:d} на сумму {2:C}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("payments",
                                          new TableInfo.DeleteDependenceItem ("WHERE credit_slip_id = @id ", "", "@id"));
            Tables.Add ("credit_slips", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Расходные ордера";
            PrepareTable.ObjectName = "расходный ордер";
            PrepareTable.SqlSelect = "SELECT id, date, sum FROM debit_slips ";
            PrepareTable.DisplayString = "Расходный ордер №{0} от {1:d} на сумму {2:C}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("debit_slips", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Сотрудники";
            PrepareTable.ObjectName = "сотрудника";
            PrepareTable.SqlSelect = "SELECT name, id FROM employees ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("advance",
                                          new TableInfo.DeleteDependenceItem ("WHERE employee_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("credit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE employee_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("debit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE employee_id = @id ", "", "@id"));
            Tables.Add ("employees", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Статьи расходов";
            PrepareTable.ObjectName = "статью расходов";
            PrepareTable.SqlSelect = "SELECT name, id FROM expense_items ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("advance",
                                          new TableInfo.DeleteDependenceItem ("WHERE expense_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("debit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE expense_id = @id ", "", "@id"));
            Tables.Add ("expense_items", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Группы товаров";
            PrepareTable.ObjectName = "группу товаров";
            PrepareTable.SqlSelect = "SELECT name, id FROM goods ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.ClearItems.Add ("lessees",
                                         new TableInfo.ClearDependenceItem ("WHERE goods_id = @id", "", "@id", "goods_id"));
            Tables.Add ("goods", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Статьи доходов";
            PrepareTable.ObjectName = "статью доходов";
            PrepareTable.SqlSelect = "SELECT name, id FROM income_items ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("credit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE income_id = @id ", "", "@id"));
            PrepareTable.ClearItems.Add ("services",
                                         new TableInfo.ClearDependenceItem ("WHERE income_id = @id", "", "@id", "income_id"));
            Tables.Add ("income_items", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Организации";
            PrepareTable.ObjectName = "организацию";
            PrepareTable.SqlSelect = "SELECT name, id FROM organizations ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("advance",
                                          new TableInfo.DeleteDependenceItem ("WHERE org_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("debit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE org_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("contracts",
                                          new TableInfo.DeleteDependenceItem ("WHERE org_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("credit_slips",
                                          new TableInfo.DeleteDependenceItem ("WHERE org_id = @id ", "", "@id"));
            PrepareTable.ClearItems.Add ("places",
                                         new TableInfo.ClearDependenceItem ("WHERE org_id = @id", "", "@id", "org_id"));
            Tables.Add ("organizations", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Типы мест";
            PrepareTable.ObjectName = "тип места";
            PrepareTable.SqlSelect = "SELECT name, description, id FROM place_types ";
            PrepareTable.DisplayString = "{0} - {1}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("places",
                                          new TableInfo.DeleteDependenceItem ("WHERE type_id = @id ", "", "@id"));
            Tables.Add ("place_types", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Услуги";
            PrepareTable.ObjectName = "услугу";
            PrepareTable.SqlSelect = "SELECT name, id FROM services ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("accrual_pays",
                                          new TableInfo.DeleteDependenceItem ("WHERE service_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("contract_pays",
                                          new TableInfo.DeleteDependenceItem ("WHERE service_id = @id ", "", "@id"));
            PrepareTable.ClearItems.Add ("meter_tariffs",
                                         new TableInfo.ClearDependenceItem ("WHERE service_id = @id", "", "@id", "service_id"));
            Tables.Add ("services", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Единицы измерения";
            PrepareTable.ObjectName = "единицу измерения";
            PrepareTable.SqlSelect = "SELECT name, id FROM units ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("services",
                                          new TableInfo.DeleteDependenceItem ("WHERE units_id = @id ", "", "@id"));
            Tables.Add ("units", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Показания счётчика";
            PrepareTable.ObjectName = "показание счётчика";
            PrepareTable.SqlSelect = "SELECT date, value, id FROM meter_reading ";
            PrepareTable.DisplayString = "Показания {1} на {0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            Tables.Add ("meter_reading", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Тарифы счётчиков";
            PrepareTable.ObjectName = "тариф счётчика";
            PrepareTable.SqlSelect = "SELECT name, id FROM meter_tariffs ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("meter_reading",
                                          new TableInfo.DeleteDependenceItem ("WHERE meter_tariff_id = @id ", "", "@id"));
            Tables.Add ("meter_tariffs", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Типы счётчиков";
            PrepareTable.ObjectName = "тип счётчика";
            PrepareTable.SqlSelect = "SELECT name, id FROM meter_types ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("meter_tariffs",
                                          new TableInfo.DeleteDependenceItem ("WHERE meter_type_id = @id ", "", "@id"));
            PrepareTable.DeleteItems.Add ("meters",
                                          new TableInfo.DeleteDependenceItem ("WHERE meters.meter_type_id = @id ", "", "@id"));
            Tables.Add ("meter_types", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Поставщики услуг";
            PrepareTable.ObjectName = "поставщика";
            PrepareTable.SqlSelect = "SELECT name, id FROM service_providers ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.ClearItems.Add ("services",
                                          new TableInfo.ClearDependenceItem ("WHERE service_provider_id = @id ", "", "@id","service_provider_id"));
            Tables.Add ("service_providers", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Cчётчики";
            PrepareTable.ObjectName = "счётчик";
            PrepareTable.SqlSelect = "SELECT meters.name, meter_types.name as type, meters.id FROM meters " +
            "LEFT JOIN meter_types ON meters.meter_type_id = meter_types.id ";
            PrepareTable.DisplayString = "{0} ({1})";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.DeleteItems.Add ("meter_reading",
                                          new TableInfo.DeleteDependenceItem ("WHERE meter_id = @id ", "", "@id"));
            PrepareTable.ClearItems.Add ("meters",
                                         new TableInfo.ClearDependenceItem ("WHERE meters.parent_meter_id = @id", "", "@id", "parent_meter_id"));
            Tables.Add ("meters", PrepareTable);

            PrepareTable = new TableInfo ();
            PrepareTable.ObjectsName = "Пользователи";
            PrepareTable.ObjectName = "пользователя";
            PrepareTable.SqlSelect = "SELECT name, id FROM users ";
            PrepareTable.DisplayString = "{0}";
            PrepareTable.PrimaryKey = new TableInfo.PrimaryKeys ("id");
            PrepareTable.ClearItems.Add ("advance",
                                         new TableInfo.ClearDependenceItem ("WHERE user_id = @id", "", "@id", "user_id"));
            PrepareTable.ClearItems.Add ("debit_slips",
                                         new TableInfo.ClearDependenceItem ("WHERE user_id = @id", "", "@id", "user_id"));
            PrepareTable.ClearItems.Add ("accrual",
                                         new TableInfo.ClearDependenceItem ("WHERE user_id = @id", "", "@id", "user_id"));
            PrepareTable.ClearItems.Add ("credit_slips",
                                         new TableInfo.ClearDependenceItem ("WHERE user_id = @id", "", "@id", "user_id"));
            Tables.Add ("users", PrepareTable);
        }