bool BeginEdit(CoordinateItem item)
        {
            if (item != null)
            {
                // Если элемент только для чтения, то при отключенном режиме администрирования редактировать его не даем
                if (!IsAdminMode && item.CoordinateState == CoordinateStateTypes.Readonly)
                {
                    return(false);
                }

                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[0])
                {
                    return(true);
                }
                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3] ||
                    (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4]))
                {
                    IChoiceDialog dlg = null;

                    if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                    {
                        if (m_SourceDialogs.ContainsKey(item))
                        {
                            dlg = m_SourceDialogs[item];
                        }
                    }

                    if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                    {
                        if (m_DestDialogs.ContainsKey(item))
                        {
                            dlg = m_DestDialogs[item];
                        }
                    }

                    if (dlg == null)
                    {
                        if (item.DimensionUniqueName == "[Measures]")
                        {
                            // Выбор меры
                            MeasureChoiceDialog dialog = new MeasureChoiceDialog();
                            dialog.ChoiceControl.CubeName   = CubeName;
                            dialog.ChoiceControl.Connection = ConnectionID;
                            dialog.ChoiceControl.LogManager = LogManager;
                            GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                            Raise_GetOlapDataLoader(args);
                            if (args.Handled)
                            {
                                dialog.ChoiceControl.OlapDataLoader = args.Loader;
                            }
                            dialog.Tag           = item;
                            dialog.DialogOk     += new EventHandler(Dialog_DialogOk);
                            dialog.DialogCancel += new EventHandler(dlg_DialogCancel);
                            dialog.Show();
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                            {
                                dialog.UserData = MemberChoiceType.Source;
                            }
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                            {
                                dialog.UserData = MemberChoiceType.Destination;
                            }
                            dlg = dialog;
                        }
                        else
                        {
                            // Выбор элемента измерения
                            MemberChoiceDialog dialog = new MemberChoiceDialog();
                            dialog.ChoiceControl.CubeName            = CubeName;
                            dialog.ChoiceControl.Connection          = ConnectionID;
                            dialog.ChoiceControl.HierarchyUniqueName = item.HierarchyUniqueName;
                            dialog.ChoiceControl.LogManager          = LogManager;

                            GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                            Raise_GetOlapDataLoader(args);
                            if (args.Handled)
                            {
                                dialog.ChoiceControl.OlapDataLoader = args.Loader;
                            }

                            dialog.Tag           = item;
                            dialog.DialogOk     += new EventHandler(Dialog_DialogOk);
                            dialog.DialogCancel += new EventHandler(dlg_DialogCancel);
                            dialog.Show();
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                            {
                                dialog.UserData = MemberChoiceType.Source;
                            }
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                            {
                                dialog.UserData = MemberChoiceType.Destination;
                            }
                            dlg = dialog;
                        }
                        if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                        {
                            m_SourceDialogs[item] = dlg;
                        }
                        if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                        {
                            m_DestDialogs[item] = dlg;
                        }
                    }

                    if (dlg != null)
                    {
                        dlg.Show();
                        return(true);
                    }
                }
            }
            return(false);
        }
        bool BeginMemberEdit(TupleItem item)
        {
            if (item != null)
            {
                IChoiceDialog dlg = null;
                if (!String.IsNullOrEmpty(item.HierarchyUniqueName) && m_ChoiceDialogs.ContainsKey(item.HierarchyUniqueName))
                {
                    dlg = m_ChoiceDialogs[item.HierarchyUniqueName];
                }

                if (dlg == null)
                {
                    if (item.HierarchyUniqueName == "[Measures]")
                    {
                        // Выбор меры
                        MeasureChoiceDialog dialog = new MeasureChoiceDialog();
                        dialog.ChoiceControl.CubeName   = CubeName;
                        dialog.ChoiceControl.Connection = ConnectionID;
                        dialog.ChoiceControl.LogManager = LogManager;
                        GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                        Raise_GetOlapDataLoader(args);
                        if (args.Handled)
                        {
                            dialog.ChoiceControl.OlapDataLoader = args.Loader;
                        }
                        dialog.Tag           = item;
                        dialog.DialogOk     += new EventHandler(Dialog_DialogOk);
                        dialog.DialogCancel += new EventHandler(Dialog_DialogCancel);
                        dialog.Show();
                        dlg = dialog;
                    }
                    else
                    {
                        // Выбор элемента измерения
                        MemberChoiceDialog dialog = new MemberChoiceDialog();
                        dialog.ChoiceControl.CubeName            = CubeName;
                        dialog.ChoiceControl.Connection          = ConnectionID;
                        dialog.ChoiceControl.HierarchyUniqueName = item.HierarchyUniqueName;
                        dialog.ChoiceControl.LogManager          = LogManager;

                        GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                        Raise_GetOlapDataLoader(args);
                        if (args.Handled)
                        {
                            dialog.ChoiceControl.OlapDataLoader = args.Loader;
                        }

                        dialog.Tag           = item;
                        dialog.DialogOk     += new EventHandler(Dialog_DialogOk);
                        dialog.DialogCancel += new EventHandler(Dialog_DialogCancel);
                        dialog.Show();
                        dlg = dialog;
                    }
                    if (!String.IsNullOrEmpty(item.HierarchyUniqueName))
                    {
                        m_ChoiceDialogs[item.HierarchyUniqueName] = dlg;
                    }
                }

                if (dlg != null)
                {
                    dlg.Show();
                    return(true);
                }
            }
            return(false);
        }