Версия для печати темы (https://pro1c.org.ua/index.php?s=d54c53be48aedddeb7b6cf7ebd94c4e4&showtopic=4278)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С:Предприятие 8.1 _ v8: Сохранение рабочей конфигурации в файл средствами встроенного языка

Автор: Vofka 29.07.11, 7:52

Сохранение рабочей конфигурации в файл средствами встроенного языка, например из внешней обработки, или при запуске системы.

Ключевые слова: конфигурация, обмен, cf, обновление, УРБД

Как сохранить рабочую конфигурацию из конфигуратора знают все, но это не всегда удобно. Мне понадобилось сохранять рабочую конфигурацию и тут-же этот файл обрабатывать. Предлогаю простую процедуру:

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


ну и пример использования (работает если нет пароля):

Функция  ЗаписатьКонфигурациюВФайл(ИмяФайла="")
    Результат = Ложь;
    ВыбФайл = Новый Файл(ИмяФайла);
    Если ВыбФайл.Существует() Тогда
        Если ВыбФайл.ЭтоКаталог() Тогда
            ИмяФайла="";
        КонецЕсли;
    КонецЕсли;
    
    Попытка
        Массив = ПользователиИнформационнойБазы.ПолучитьПользователей();
        Логин = "";
        Пароль = "";
        Если Массив.Количество() > 0 тогда
            Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
            Логин = Пользователь.Имя;
            Если Пользователь.ПарольУстановлен Тогда
                // тут нужно получить пароль, лучше интерактивно
                 // но лично мне это совсем не нужно
                Предупреждение("У Вас установлен пароль, этот режим сейчас не доступен");
                Возврат Ложь;
            КонецЕсли
        КонецЕсли;
        
        Результат = СохранитьТекущуюКонфигурацию(Логин, Пароль, ИмяФайла);
        Если не Результат Тогда
            Предупреждение("Конфигурация не сохранена");
        Иначе
            Сообщить("Конфигурация успешно сохранена в файл: " + ИмяФайла);
        КонецЕсли;
        
    Исключение
        Предупреждение("У Вас не достаточно прав для сохранения конфигурации");
        Возврат Ложь;
    КонецПопытки;
    
    Возврат Результат;
КонецФункции


http://pro1c.org.ua/redirect.php?http://www.kb.mista.ru/article.php?id=375

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua