Beispiel #1
0
        public static string GetPathExe(EnumVersion1C version)
        {
            string pathToExe = "";

            //будем использовать стандартные пути
            switch (version)
            {
            case EnumVersion1C.NA:
                break;

            case EnumVersion1C.v7:
                break;

            case EnumVersion1C.v8:
                pathToExe = @"C:\Program Files\1Cv8\bin\1cv8.exe";
                if (!File.Exists(pathToExe))
                {
                    pathToExe = @"C:\\Program Files (x86)\1Cv8\bin\1cv8.exe";
                }
                break;

            case EnumVersion1C.v81:
                pathToExe = @"C:\Program Files\1Cv81\bin\1cv8.exe";
                if (!File.Exists(pathToExe))
                {
                    pathToExe = @"C:\\Program Files (x86)\1Cv81\bin\1cv8.exe";
                }
                break;

            case EnumVersion1C.v82:
                pathToExe = @"C:\Program Files\1Cv82\common\1cestart.exe";
                if (!File.Exists(pathToExe))
                {
                    pathToExe = @"C:\\Program Files (x86)\1Cv82\common\1cestart.exe";
                }
                break;

            case EnumVersion1C.v83:
                pathToExe = @"C:\Program Files\1Cv8\common\1cestart.exe";
                if (!File.Exists(pathToExe))
                {
                    pathToExe = @"C:\\Program Files (x86)\1Cv8\common\1cestart.exe";
                }
                break;
            }

            return(pathToExe);
        }
Beispiel #2
0
        /// <summary>
        /// Определяем базы по записям в файлах *.v8i
        /// </summary>
        /// <returns></returns>
        public static List <BaseInfo> GetBasesFromAddData()
        {
            List <BaseInfo>  baseList = new List <BaseInfo>();
            BaseInfoCompater compater = new BaseInfoCompater();

            string[] filesPach = null;

            Logger logger = LogManager.GetCurrentClassLogger();


            string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.None);

            logger.Debug("Helper1C.GetBasesFromAddData: " + appData);

            try
            {
                //logger.Debug("Get files from: "+appData + "\\1c");
                filesPach = Directory.GetFiles(appData + "\\1c", "*.v8i", SearchOption.AllDirectories);
                //logger.Debug("Get files succes: "+filesPach.Length.ToString());
            }
            catch (Exception ex)
            {
                logger.Debug("Ошибка получения пути: " + ex.Message);
                //обработка ошибки
                return(baseList);
            }

            foreach (string filePach in filesPach)
            {
                //logger.Debug("Парсим "+filePach);
                var           file          = File.OpenRead(filePach);
                var           reader        = new StreamReader(file);
                string        nameBase      = string.Empty;
                string        connectString = string.Empty;
                string        versionString = string.Empty;
                EnumVersion1C version       = 0;
                BaseInfo      _baseInfo     = null;

                //logger.Debug("Начало чтения файла");
                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                    //logger.Debug("Прочитана строка: "+line);


                    if (line.IndexOf('[') > -1)
                    {
                        //logger.Debug("-- Это название базы");
                        if (_baseInfo != null)
                        {
                            //logger.Debug("-- Объект _baseInfo уже создан");
                            if (_baseInfo.Version1C == EnumVersion1C.NA)
                            {
                                _baseInfo.Version1C = GetVersionFromFilePatch(filePach);
                                //logger.Debug("-- Версия 1С по пути: "+_baseInfo.Version1C.ToString());
                            }
                            //сначала проверим есть ли такая база в списке и если нет то добавлем
                            if (!baseList.Contains(_baseInfo, compater))
                            {
                                //logger.Debug("-- Добавляем базу в список");
                                baseList.Add(_baseInfo);
                            }
                            else
                            {
                                //logger.Debug("-- База уже есть в списоке. Ничего не делаем.");
                            }
                        }

                        _baseInfo      = new BaseInfo();
                        _baseInfo.Name = line.Substring(1, line.Length - 2);
                    }

                    if (line.IndexOf("Version=") > -1)
                    {
                        //logger.Debug("-- Это версия 1С");
                        versionString = line.Substring(8);
                        switch (versionString)
                        {
                        case "8.1": version = EnumVersion1C.v81;
                            break;

                        case "8.2": version = EnumVersion1C.v82;
                            break;

                        case "8.3": version = EnumVersion1C.v83;
                            break;

                        default: version = 0;
                            break;
                        }
                        if (version != 0)
                        {
                            _baseInfo.Version1C = version;
                        }
                        else
                        {
                            _baseInfo.Version1C = GetVersionFromFilePatch(filePach);
                        }
                    }

                    if (line.IndexOf("Connect=") > -1)
                    {
                        //logger.Debug("-- Это строка соединения");
                        connectString = line.Substring(8);
                        _baseInfo.ConnectionString = connectString;
                    }
                }

                //добавляем последнюю прочитанную базу в список, если ее еще там нет
                if (!baseList.Contains(_baseInfo, compater))
                {
                    //logger.Debug("-- Добавляем базу в список");
                    baseList.Add(_baseInfo);
                }
                else
                {
                    //logger.Debug("-- База уже есть в списоке. Ничего не делаем.");
                }
            }

            return(baseList);
        }