/// <returns>xml text</returns>
        public bool Do(out string message, out string sourcestring)
        {
            try
            {
                message      = string.Empty;
                sourcestring = File.ReadAllText(@"ITELMA_ALL_READ.otx");
                sourcestring = sourcestring.Replace("DC_K_C_BC_015_057", AppSettings.ShortNameECU);
                sourcestring = sourcestring.Replace("K_C_BC_015_057", AppSettings.Codificator);

                string contentForBufferList     = string.Empty;
                string contentForOutputList     = string.Empty;
                string contentForReadingSignals = string.Empty;
                string flag8_contentForEndPositionRangeValue = string.Empty;

                for (int i = 0; i < _servicesNames_List.Count; i++)
                {
                    //в соотвествии с кол-вом сервисов, заполнится кол-вом элементов для инициализации списка
                    contentForBufferList += OTX_Input_Template.GetItemForStringList();
                    contentForOutputList += OTX_Input_Template.GetItemForStringList();

                    contentForReadingSignals += OTX_Input_Template.GetGroup_NextPosition();
                    contentForReadingSignals += OTX_Input_Template.GetGroup_ReadSpecificSignal(_phrases_List[i], _servicesNames_List[i]);
                }
                flag8_contentForEndPositionRangeValue += OTX_Output_Template.GetTermInteger(_servicesNames_List.Count);

                sourcestring = sourcestring.Replace(OTX_Input_Template.flagOfStringBufferList, contentForBufferList);
                sourcestring = sourcestring.Replace(OTX_Input_Template.flagOfStringOutputList, contentForOutputList);
                sourcestring = sourcestring.Replace(OTX_Input_Template.flagOfReadingSignals, contentForReadingSignals);
                sourcestring = sourcestring.Replace(OTX_Input_Template.flag8_OfIntegerEndPositionRangeValue, flag8_contentForEndPositionRangeValue);

                this.Replace_All_IDs_ToUnique(ref sourcestring);
                return(true);
            }
            catch (Exception ex)
            {
                message      = ex.ToString();
                sourcestring = string.Empty;
                return(false);
            }
        }
        /// <returns>xml text</returns>
        public bool Do(out string message, out string sourcestring)
        {
            try
            {
                message      = string.Empty;
                sourcestring = File.ReadAllText(@"ITELMA_WRITE_BY_BUTTON_INDEX.otx");
                sourcestring = sourcestring.Replace("DC_K_C_BC_015_057", AppSettings.ShortNameECU);
                sourcestring = sourcestring.Replace("K_C_BC_015_057", AppSettings.Codificator);

                #region init content variables
                string flag1_contentForInputList            = string.Empty;
                string flag2_contentForBufferList           = string.Empty;
                string flag4_contentForBtnToSignalValueList = string.Empty;
                string flag5_contentForResponsesList        = string.Empty;
                string flag10_contentForOutputInitList      = string.Empty;

                string flag3_contentForBtnToParamIdList     = string.Empty;
                string flag6_contentForBtnNumToOrderNumList = string.Empty;

                string flag7_contentForBtnEscapeValue        = string.Empty;
                string flag8_contentForEndPositionRangeValue = string.Empty;

                string flag9_contentForOutputMsgAndControlRespList = string.Empty;
                string flag11_contentForReadingSignals             = string.Empty;
                string flag12_contentForInpIndToBtnValList         = string.Empty;
                #endregion

                #region make content
                for (int i = 0; i < _services_Request_PARAM_ID_List.Count; i++)
                {
                    flag4_contentForBtnToSignalValueList += OTX_Output_Template.GetItemForStringList(_services_SIGNAL_VALUE_List[i]);

                    flag3_contentForBtnToParamIdList += OTX_Output_Template.GetItemForIntegerList(_services_Request_PARAM_ID_List[i]);

                    var specific_service = SERVICES_handbook.SERVICES
                                           .First(service => service.Request_PARAM_ID
                                                  .Equals(_services_Request_PARAM_ID_List[i]));
                    flag6_contentForBtnNumToOrderNumList += OTX_Output_Template.GetItemForIntegerList(specific_service.OrderNumber);
                }

                int btnsCount = 0;
                for (int i = 0; i < _servicesList.Count; i++)
                {
                    //в соотвествии с кол-вом сервисов, заполнится кол-вом элементов для инициализации списка
                    flag2_contentForBufferList    += OTX_Output_Template.GetItemForStringList("-");
                    flag5_contentForResponsesList += OTX_Output_Template.GetItemForStringList();

                    flag10_contentForOutputInitList += OTX_Output_Template.GetItemForStringList();
                    flag10_contentForOutputInitList += OTX_Output_Template.GetItemForStringList();

                    flag11_contentForReadingSignals += OTX_Output_Template.GetGroup_NextPosition();
                    flag11_contentForReadingSignals += OTX_Output_Template.GetGroup_ReadSpecificSignal(_servicesList[i].Description_Phrase, _servicesList[i].Procedure_Name);

                    flag9_contentForOutputMsgAndControlRespList += OTX_Output_Template.GetOutputSpec(i);

                    if (_servicesList[i].Buttons_Count_For_Output_Handing == 1)
                    {
                        flag1_contentForInputList           += OTX_Output_Template.GetItemForStringList();
                        flag12_contentForInpIndToBtnValList += OTX_Output_Template.GetItemForIntegerList(btnsCount);
                    }
                    btnsCount += _servicesList[i].Buttons_Count_For_Output_Handing;
                }
                //номер кнопки выхода задается подсчетом кол-ва кнопок всех представленных сигналов. Соответсвенно, чтобы получить №выхода, прибавим 1
                flag7_contentForBtnEscapeValue        += OTX_Output_Template.GetTermInteger(_services_Request_PARAM_ID_List.Count);
                flag8_contentForEndPositionRangeValue += OTX_Output_Template.GetTermInteger(_servicesList.Count);

                #endregion

                #region replace sourstring
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag1_OfStringInputList, flag1_contentForInputList);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag2_OfStringBufferList, flag2_contentForBufferList);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag4_OfStringBtnToSignalValueList, flag4_contentForBtnToSignalValueList);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag5_OfStringResponsesList, flag5_contentForResponsesList);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag10_OutputInitStringList, flag10_contentForOutputInitList);

                sourcestring = sourcestring.Replace(OTX_Output_Template.flag3_OfIntegerBtnToParamIdList, flag3_contentForBtnToParamIdList);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag6_OfIntegerBtnNumToOrderNumList, flag6_contentForBtnNumToOrderNumList);

                sourcestring = sourcestring.Replace(OTX_Output_Template.flag7_OfIntegerBtnEscapeValue, flag7_contentForBtnEscapeValue);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag8_OfIntegerEndPositionRangeValue, flag8_contentForEndPositionRangeValue);

                sourcestring = sourcestring.Replace(OTX_Output_Template.flag9_OfStringCombineOutputMsgAndControlRespList, flag9_contentForOutputMsgAndControlRespList);

                sourcestring = sourcestring.Replace(OTX_Output_Template.flag11_OfReadingSignals, flag11_contentForReadingSignals);
                sourcestring = sourcestring.Replace(OTX_Output_Template.flag12_OfInputIndexToButtonValueIntegerList, flag12_contentForInpIndToBtnValList);

                #endregion

                this.Replace_All_IDs_ToUnique(ref sourcestring);
                return(true);
            }
            catch (Exception ex)
            {
                message      = ex.ToString();
                sourcestring = string.Empty;
                return(false);
            }
        }