func TestMain(m *testing.M) { currentDir, _ = utils.GetPathToCurrentDir() // В наименовании каталога специально присутствует пробел, чтобы протестировать // работу с передачей параметров в командной строке при открытии 1cv8.exe pathToTarget = path.Join(utils.GetParentDir(currentDir), "target dir") utils.RemoveIfExist(pathToTarget) os.Mkdir(pathToTarget, os.ModeDir) utils.InitLogger(pathToTarget, utils.LogLevel_TRACE) flag.Parse() os.Exit(m.Run()) utils.RemoveIfExist(pathToTarget) }
/** * Создать новую информационную базу * * @param код результата, который вернуло приложение * @param шаблон конфигурации на основании которого необходимо создать информационную базу (может быть не указан) * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) Create(pathToTemplate string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Создание новой ИБ: "+pathToTemplate) if len(pathToTemplate) > 0 { var exist bool exist, err = utils.Exists(pathToTemplate) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } else if !exist { err = errors.New("Файл не найден: " + pathToTemplate) utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } } err = utils.RemoveIfExist(ib.connectionSettings.GetIbPath()) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, "Ошибка удаления каталога: "+ib.connectionSettings.GetIbPath()+":"+err.Error()) return } /* 1С предлагает для создания новой конфигурации на основе существующего cf файла использование параметра /UseTemplate, но по какой-то причине на некоторых версия платформы он работает не корректно. Поэтому делаем в два этапа: 1. создаем новую конфигурацию 2. загружаем в нее нужный cf файл 3. обновляем конфигурацию информационной базы */ args := []string{} resultCode, err = ib.runApplication(MODE_CREATE, args) if err == nil && len(pathToTemplate) > 0 { resultCode, err = ib.LoadCfg(pathToTemplate) } if err == nil { resultCode, err = ib.UpdateDBCfg() } utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Создание новой ИБ: %t", err == nil)) return }
/** * Сохранить конфигурацию в файл * * @param код результата, который вернуло приложение * @param путь к файлу результата * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) DumpCfg(pathToFile string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Сохранение cf: "+pathToFile) err = utils.RemoveIfExist(pathToFile) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, "Ошибка удаления файла: "+pathToFile+":"+err.Error()) return } args := []string{"/DumpCfg", pathToFile} resultCode, err = ib.runApplication(MODE_DESIGNER, args) utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Сохранение cf: %t", err == nil)) return }
/** * Выгрузка свойств объектов метаданных конфигурации в XML-файлы * * @param код результата, который вернуло приложение * @param каталог, в который будет выгружена конфигурация * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) DumpConfigToFiles(pathToDirectory string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Выгрузка конфигурации в xml: "+pathToDirectory) err = utils.RemoveIfExist(pathToDirectory) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, "Ошибка удаления каталога: "+pathToDirectory+":"+err.Error()) return } args := []string{"/DumpConfigToFiles", pathToDirectory} resultCode, err = ib.runApplication(MODE_DESIGNER, args) utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Выгрузка конфигурации в xml: %t", err == nil)) return }
/** * Выгрузка свойств объектов метаданных конфигурации (модули и шаблоны) * * @param каталог расположения файлов свойств * @param типы которые выгружаем: * Module — признак необходимости выгрузки модулей; Template — признак необходимости выгрузки макетов; Help — признак необходимости выгрузки справочной информации; AllWritable — признак выгрузки свойств только доступных для записи объектов; Picture — признак выгрузки общих картинок; Right — признак выгрузки прав. * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) DumpConfigFiles(pathToDirectory string, types ...string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Выгрузка конфигурации: "+pathToDirectory) err = utils.RemoveIfExist(pathToDirectory) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, "Ошибка удаления каталога: "+pathToDirectory+":"+err.Error()) return } // /DumpConfigFiles "{0}" -Module -Template args := []string{"/DumpConfigFiles", pathToDirectory} for _, v := range types { args = append(args, "-"+v) } resultCode, err = ib.runApplication(MODE_DESIGNER, args) utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Выгрузка конфигурации: %t", err == nil)) return }