/// <summary>
        /// Сохранение активного фильтра
        /// </summary>
        public void Save(object parameter = null)
        {
            FilterSaveFrm frm = new FilterSaveFrm();

            frm.Text = "Фильтр";
            if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                int idSource = 0;
                int idTable  = 0;

                Npgsql.NpgsqlConnectionStringBuilder connect = (_source.Table.Source as PgDataRepositoryVM).Connect;
                String            sourceName = String.Format("{0}@{1}", connect.Database, connect.Host);
                String            sourceType = _source.Table.Source.Type.ToString();
                Pg_M.PgTableBaseM pgTable    = _source.Table as Pg_M.PgTableBaseM;
                String            tableName  = String.Format("\"{0}\".\"{1}\"", pgTable.SchemeName, pgTable.Name);

                bool sourceExists = (from Source src
                                     in Program.SettingsDB.Sources
                                     where src.SourceName == sourceName && src.SourceType == sourceType
                                     select src).Count() > 0;
                if (!sourceExists)
                {
                    Program.SettingsDB.Sources.AddObject(new Source()
                    {
                        SourceName = sourceName, SourceType = sourceType
                    });
                }
                idSource = Convert.ToInt32((from Source src
                                            in Program.SettingsDB.Sources
                                            where src.SourceName == sourceName && src.SourceType == sourceType
                                            select src.Id).FirstOrDefault());
                bool tableExists = (from Table tbl
                                    in Program.SettingsDB.Tables
                                    where tbl.SourceId == idSource && tbl.TableName == tableName
                                    select tbl).Count() > 0;
                if (!tableExists)
                {
                    Program.SettingsDB.Tables.AddObject(new Table()
                    {
                        TableName = tableName, SourceId = idSource
                    });
                }
                idTable = Convert.ToInt32((from Table tbl
                                           in Program.SettingsDB.Tables
                                           where tbl.TableName == tableName && tbl.SourceId == idSource
                                           select tbl.Id).FirstOrDefault());

                FilterRelationModel filterRM = GetFilterModel(_dynamicFilter);
                Program.SettingsDB.Filters.AddObject(new Filter()
                {
                    FilterName = frm.textBox1.Text,
                    WhereText  = SqlJsonParser.ToJson(filterRM),
                    IdTable    = idTable
                });
                Program.SettingsDB.SaveChanges();
                ReloadFiltersFromSqLite();
            }
        }
        /// <summary>
        /// Загрузка активного фильтра из SQLite
        /// </summary>
        public void LoadFilter(object parameter = null)
        {
            long filterId = Convert.ToInt64(parameter);

            foreach (var filter in (from Filter f
                                    in Program.SettingsDB.Filters
                                    where f.Id == filterId
                                    select f))
            {
                FilterRelationModel pattern = SqlJsonParser.FromJson <FilterRelationModel>(filter.WhereText);
                SetFilterFromPattern(_dynamicFilter, pattern);
                _dynamicFilter.OnPropertyChanged("QueryString");
            }
        }