private XTreeMenuInfo getMenuForEmployee(Guid ObjectID, DomainObjectDataSet dataSet, IXExecutionContext context)
        {
            XTreeMenuInfo menu = new XTreeMenuInfo("@@Title", true);

            menu.CacheMode = XTreeMenuCacheMode.NoCache;
            menu.ExecutionHandlers.Add(new XUserCodeWeb("CompanyTree_Menu_ExecutionHandler"));

            // просмотр
            // Раскоментировать после удаления ссылок на НСИ
            //menu.Items.AddActionItem("Просмотр", StdActions.DoView).Parameters.Add("ReportURL", StdMenuUtils.GetEmployeeReportURL(context.Config,  ObjectID));

            DomainObjectData xobj   = dataSet.GetLoadedStub("Employee", ObjectID);
            XObjectRights    rights = XSecurityManager.Instance.GetObjectRights(xobj);

            // Редактировать
            if (rights.AllowParticalOrFullChange)
            {
                menu.Items.AddActionItem("Редактировать", StdActions.DoEdit).Default = true;
            }
            // Удалить
            if (rights.AllowDelete)
            {
                menu.Items.AddActionItem("Удалить", StdActions.DoDelete);
            }

            // Секция "Отчеты"
            //XMenuActionItem item;
            //XMenuSection sec = menu.Items.AddSection("Отчеты");
            //item = sec.Items.AddActionItem("Сальдо ДС", "DoView");
            //item.Parameters.Add("ReportURL", "x-get-report.aspx?name=r-EmployeeSaldoDS.xml&EmployeeID=@@ObjectID");

            /*
             * item = sec.Items.AddActionItem("Инциденты и списания времени сотрудника", "DoRunReport");
             *          item.Parameters.Add("ReportName", "ReportEmployeeExpensesList");
             *          item.Parameters.Add("UrlParams", ".Employee=" + ObjectID);
             *          item = sec.Items.AddActionItem("Баланс списаний сотрудника", "DoRunReport");
             *          item.Parameters.Add("ReportName", "EmployeeExpensesBalance");
             *          item.Parameters.Add("UrlParams", ".Employee=" + ObjectID);
             * item = sec.Items.AddActionItem("Плановая занятость сотрудников", "DoRunReport");
             * item.Parameters.Add("ReportName", "Employment");
             * item.Parameters.Add("UrlParams", ".Employees=" + ObjectID + "&.Organizations=&.Departments=");
             */

            // Секция "Информация"
            XMenuSection sec = menu.Items.AddSection("Информация");

            fillEmployeeInfoSection(sec, ObjectID, context.Connection);
            return(menu);
        }
        internal static bool fillEmployeeInfoSection(XMenuSection sec, Guid EmployeeID, XStorageConnection cn)
        {
            using (XDbCommand cmd = cn.CreateCommand(
                       "SELECT " +
                       "	emp.EMail, emp.Phone, emp.PhoneExt, p.Name AS PositionName, o.Home "+
                       "FROM Employee emp " +
                       "	LEFT JOIN Position p ON emp.Position = p.ObjectID "+
                       "	JOIN Organization o ON emp.Organization = o.ObjectID "+
                       "WHERE emp.ObjectID = @ObjectID"
                       ))
            {
                cmd.Parameters.Add("ObjectID", DbType.Guid, ParameterDirection.Input, false, EmployeeID);
                bool   bIsHome;
                string sEMail        = null;
                string sPhone        = null;
                string sPhoneExt     = null;
                string sPositionName = null;
                using (IXDataReader reader = cmd.ExecuteXReader())
                {
                    if (reader.Read())
                    {
                        bIsHome = reader.GetBoolean(reader.GetOrdinal("Home"));
                        if (!reader.IsDBNull(reader.GetOrdinal("EMail")))
                        {
                            sEMail = reader.GetString(reader.GetOrdinal("EMail"));
                        }
                        if (!reader.IsDBNull(reader.GetOrdinal("Phone")))
                        {
                            sPhone = reader.GetString(reader.GetOrdinal("Phone"));
                        }
                        if (!reader.IsDBNull(reader.GetOrdinal("PhoneExt")))
                        {
                            sPhoneExt = reader.GetString(reader.GetOrdinal("PhoneExt"));
                        }
                        if (!reader.IsDBNull(reader.GetOrdinal("PositionName")))
                        {
                            sPositionName = reader.GetString(reader.GetOrdinal("PositionName"));
                        }

                        sec.Items.AddInfoItem("EMail", sEMail);
                        if (bIsHome && sPhoneExt != null)
                        {
                            sec.Items.AddInfoItem("Внутренний телефон", sPhoneExt);
                        }
                        else
                        {
                            sec.Items.AddInfoItem("Телефон",
                                                  (sPhone != null && sPhone.Length > 0 ? sPhone : "") +
                                                  (sPhoneExt != null && sPhoneExt.Length > 0 ? "(" + sPhoneExt + ")" : "")
                                                  );
                        }
                        if (sPositionName != null)
                        {
                            sec.Items.AddInfoItem("Должность", sPositionName);
                        }
                        return(true);
                    }
                }
                return(false);
            }
        }