v8: Сохранение рабочей конфигурации в файл средствами встроенного языка
Сохранение рабочей конфигурации в файл средствами встроенного языка, например из внешней обработки, или при запуске системы. | Автор статьи: vde69 Последняя редакция №1 от 29.09.06 |
Ключевые слова: конфигурация, обмен, cf, обновление, УРБД
Как сохранить рабочую конфигурацию из конфигуратора знают все, но это не всегда удобно. Мне понадобилось сохранять рабочую конфигурацию и тут-же этот файл обрабатывать. Предлогаю простую процедуру:
// функция сохраняет рабочую конфигурацию в файл, в случае успеха возвращает Истина // параметры: // Логин - имя пользователя с правами на админисирирование БД // Пароль - строка пароля // ИмяФайла - полное имя файла для сохранения конфигурации, не обязательно. // по умолчанию использует каталог временных файлов и имя 1Cv8.cf функция СохранитьТекущуюКонфигурацию (Логин, Пароль, ИмяФайла="") экспорт результат = Ложь; Если ИмяФайла = "" Тогда ИмяФайла = КаталогВременныхФайлов() + "1Cv8.cf"; КонецЕсли; СтрокаБазы = СтрокаСоединенияИнформационнойБазы(); Если Лев(СтрокаБазы, 5) = "File=" Тогда // файловый вариант СтрокаБазы = Сред(СтрокаБазы, 6, СтрДлина(СтрокаБазы) - 6); Иначе // серверный вариант пока не готов... // может кто допишет? возврат Ложь; КонецЕсли; ВыбФайл = Новый Файл(ИмяФайла); Если ВыбФайл.Существует() Тогда Сигнатура = Строка(ВыбФайл.Размер()) + Строка(ВыбФайл.ПолучитьВремяИзменения()); Иначе Сигнатура = ""; КонецЕсли; СтрокаЗапуска = """" + КаталогПрограммы() + "1cv8.exe"" CONFIG /F " + СтрокаБазы + ?(Логин = "", "", " /N " + Логин) + ?(Пароль = "", "", " /P " + Пароль) + " /DumpDBCfg """ + ИмяФайла + """"; // // КомандаСистемы (СтрокаЗапуска); не работает!!!!! из-за кавычек в параметрах // приходиться идти кругом... // зато можно избежать черного окошка // WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run(СтрокаЗапуска, 0, Истина); ВыбФайл = Новый Файл(ИмяФайла); Если ВыбФайл.Существует() Тогда НоваяСигнатура = Строка(ВыбФайл.Размер()) + Строка(ВыбФайл.ПолучитьВремяИзменения()); Если Сигнатура <> НоваяСигнатура Тогда Результат = Истина; КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции
ну и пример использования (работает если нет пароля):
Функция ЗаписатьКонфигурациюВФайл(ИмяФайла="") Результат = Ложь; ВыбФайл = Новый Файл(ИмяФайла); Если ВыбФайл.Существует() Тогда Если ВыбФайл.ЭтоКаталог() Тогда ИмяФайла=""; КонецЕсли; КонецЕсли; Попытка Массив = ПользователиИнформационнойБазы.ПолучитьПользователей(); Логин = ""; Пароль = ""; Если Массив.Количество() > 0 тогда Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); Логин = Пользователь.Имя; Если Пользователь.ПарольУстановлен Тогда // тут нужно получить пароль, лучше интерактивно // но лично мне это совсем не нужно Предупреждение("У Вас установлен пароль, этот режим сейчас не доступен"); Возврат Ложь; КонецЕсли КонецЕсли; Результат = СохранитьТекущуюКонфигурацию(Логин, Пароль, ИмяФайла); Если не Результат Тогда Предупреждение("Конфигурация не сохранена"); Иначе Сообщить("Конфигурация успешно сохранена в файл: " + ИмяФайла); КонецЕсли; Исключение Предупреждение("У Вас не достаточно прав для сохранения конфигурации"); Возврат Ложь; КонецПопытки; Возврат Результат; КонецФункции