protected override void initialize(out int err, out string errMsg)
        {
            err    = 0;
            errMsg = string.Empty;

            HTepUsers.ID_ROLES role = (HTepUsers.ID_ROLES)HTepUsers.Role;

            Control ctrl    = null;
            string  strItem = string.Empty;
            int     i       = -1;

            // ВАЖНО! Обязательно до инициализации таблиц проекта (сортировка призойдет при вызове этой функции).
            HandlerDb.ModeNAlgSorting = HandlerDbTaskCalculate.MODE_NALG_SORTING.Programmatic;

            //Заполнить таблицы со словарными, проектными величинами
            // PERIOD, TIMEZONE, COMP_LIST, PARAMETERS(Type), MODE_DEV, RATIO
            initialize(new ID_DBTABLE[] {
                ID_DBTABLE.TIME
                , ID_DBTABLE.TIMEZONE
                , ID_DBTABLE.COMP_LIST
                , IsInParameters == true ? ID_DBTABLE.IN_PARAMETER : ID_DBTABLE.UNKNOWN
                , IsOutParameters == true ? ID_DBTABLE.OUT_PARAMETER : ID_DBTABLE.UNKNOWN
                , ID_DBTABLE.MODE_DEV
                , ID_DBTABLE.MEASURE
                , ID_DBTABLE.RATIO
            }
                       , out err, out errMsg
                       );

            HandlerDb.FilterDbTableTimezone = TepCommon.HandlerDbTaskCalculate.DbTableTimezone.Msk;
            HandlerDb.FilterDbTableTime     = TepCommon.HandlerDbTaskCalculate.DbTableTime.Month
                                              | TepCommon.HandlerDbTaskCalculate.DbTableTime.Day
                                              | TepCommon.HandlerDbTaskCalculate.DbTableTime.Hour;
            HandlerDb.FilterDbTableCompList = TepCommon.HandlerDbTaskCalculate.DbTableCompList.Tec | TepCommon.HandlerDbTaskCalculate.DbTableCompList.Tg;

            if (err == 0)
            {
                try {
                    //Заполнить элемент управления с периодами расчета
                    PanelManagement.FillValuePeriod(m_dictTableDictPrj[ID_DBTABLE.TIME]
                                                    , ID_PERIOD.DAY); //??? активный период требуется прочитать из [profile]
                    //Заполнить элемент управления с часовыми поясами
                    PanelManagement.FillValueTimezone(m_dictTableDictPrj[ID_DBTABLE.TIMEZONE]
                                                      , ID_TIMEZONE.MSK); //??? активный пояс требуется прочитать из [profile]

                    PanelManagement.AllowUserPeriodChanged   = true;
                    PanelManagement.AllowUserTimezoneChanged = true;
                } catch (Exception e) {
                    Logging.Logg().Exception(e, @"PanelTaskTepValues::initialize () - ...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                Logging.Logg().Error(MethodBase.GetCurrentMethod(), errMsg, Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
        protected override void initialize(out int err, out string errMsg)
        {
            err    = 0;
            errMsg = string.Empty;

            m_arListIds = new List <int> [(int)INDEX_ID.COUNT];
            for (INDEX_ID id = INDEX_ID.PERIOD; id < INDEX_ID.COUNT; id++)
            {
                switch (id)
                {
                case INDEX_ID.PERIOD:
                    m_arListIds[(int)id] = new List <int> {
                        (int)ID_PERIOD.HOUR /*, (int)ID_PERIOD.SHIFTS*/, (int)ID_PERIOD.DAY, (int)ID_PERIOD.MONTH
                    };
                    break;

                case INDEX_ID.TIMEZONE:
                    m_arListIds[(int)id] = new List <int> {
                        (int)ID_TIMEZONE.UTC, (int)ID_TIMEZONE.MSK, (int)ID_TIMEZONE.NSK
                    };
                    break;

                default:
                    //??? где получить запрещенные для расчета/отображения идентификаторы компонентов ТЭЦ\параметров алгоритма
                    m_arListIds[(int)id] = new List <int>();
                    break;
                }
            }

            m_arTableDictPrjs = new DataTable[(int)INDEX_TABLE_DICTPRJ.COUNT];

            HTepUsers.ID_ROLES role = (HTepUsers.ID_ROLES)HTepUsers.Role;

            Control ctrl    = null;
            string  strItem = string.Empty;
            int     i       = -1;

            //Заполнить таблицы со словарными, проектными величинами
            string[] arQueryDictPrj = getQueryDictPrj();
            for (i = (int)INDEX_TABLE_DICTPRJ.PERIOD; i < (int)INDEX_TABLE_DICTPRJ.COUNT; i++)
            {
                m_arTableDictPrjs[i] = m_handlerDb.Select(arQueryDictPrj[i], out err);

                if (!(err == 0))
                {
                    break;
                }
                else
                {
                    ;
                }
            }

            if (err == 0)
            {
                try
                {
                    m_arListIds[(int)INDEX_ID.ALL_COMPONENT].Clear();

                    initialize();

                    //Заполнить элемент управления с часовыми поясами
                    ctrl = Controls.Find(TepCommon.PanelTaskTepCalculate.PanelManagementTaskTepCalculate.INDEX_CONTROL_BASE.CBX_TIMEZONE.ToString(), true)[0];
                    foreach (DataRow r in m_arTableDictPrjs[(int)INDEX_TABLE_DICTPRJ.TIMEZONE].Rows)
                    {
                        (ctrl as ComboBox).Items.Add(r[@"NAME_SHR"]);
                    }
                    // порядок именно такой (установить 0, назначить обработчик)
                    //, чтобы исключить повторное обновление отображения
                    (ctrl as ComboBox).SelectedIndex         = 2; //??? требуется прочитать из [profile]
                    (ctrl as ComboBox).SelectedIndexChanged += new EventHandler(cbxTimezone_SelectedIndexChanged);
                    setCurrentTimeZone(ctrl as ComboBox);

                    //Заполнить элемент управления с периодами расчета
                    ctrl = Controls.Find(PanelManagementTaskTepCalculate.INDEX_CONTROL_BASE.CBX_PERIOD.ToString(), true)[0];
                    foreach (DataRow r in m_arTableDictPrjs[(int)INDEX_TABLE_DICTPRJ.PERIOD].Rows)
                    {
                        (ctrl as ComboBox).Items.Add(r[@"DESCRIPTION"]);
                    }

                    (ctrl as ComboBox).SelectedIndexChanged += new EventHandler(cbxPeriod_SelectedIndexChanged);
                    (ctrl as ComboBox).SelectedIndex         = 0; //??? требуется прочитать из [profile]

                    //// отобразить значения
                    //updateDataValues();
                }
                catch (Exception e)
                {
                    Logging.Logg().Exception(e, @"PanelTaskTepValues::initialize () - ...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                switch ((INDEX_TABLE_DICTPRJ)i)
                {
                case INDEX_TABLE_DICTPRJ.PERIOD:
                    errMsg = @"Получение интервалов времени для периода расчета";
                    break;

                case INDEX_TABLE_DICTPRJ.TIMEZONE:
                    errMsg = @"Получение списка часовых поясов";
                    break;

                case INDEX_TABLE_DICTPRJ.COMPONENT:
                    errMsg = @"Получение списка компонентов станции";
                    break;

                case INDEX_TABLE_DICTPRJ.PARAMETER:
                    errMsg = @"Получение строковых идентификаторов параметров в алгоритме расчета";
                    break;

                case INDEX_TABLE_DICTPRJ.MODE_DEV:
                    errMsg = @"Получение идентификаторов режимов работы оборудования";
                    break;

                //case INDEX_TABLE_DICTPRJ.MEASURE:
                //    errMsg = @"Получение информации по единицам измерения";
                //    break;
                default:
                    errMsg = @"Неизвестная ошибка";
                    break;
                }
            }
        }