Автоматизация бизнеса

Установка, настройка, внедрение и сопровождение любых конфигураций на платформе 1С:Предприятие.

Тел: 8(985)141-74-63 Дмитрий.   
ICQ:     552-608-881
e-mail: info@programmist1c.ru

Оплата после выполнения работы.

  •   Удаленный админ
  •   Карта сайта
  •   Контакты


  • Поиск
     

    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 тогда
                Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
                Логин = Пользователь.Имя;
                Если Пользователь.ПарольУстановлен Тогда
                    // тут нужно получить пароль, лучше интерактивно
                     // но лично мне это совсем не нужно
                    Предупреждение("У Вас установлен пароль, этот режим сейчас не доступен");
                    Возврат Ложь;
                КонецЕсли 
            КонецЕсли;
            
            Результат = СохранитьТекущуюКонфигурацию(Логин, Пароль, ИмяФайла);
            Если не Результат Тогда
                Предупреждение("Конфигурация не сохранена");
            Иначе
                Сообщить("Конфигурация успешно сохранена в файл: " + ИмяФайла);
            КонецЕсли;
            
        Исключение
            Предупреждение("У Вас не достаточно прав для сохранения конфигурации");
            Возврат Ложь;
        КонецПопытки;
        
        Возврат Результат;
    КонецФункции
    
    
    21.02.18 | 10:31


    30.11.16 | 20:25


    28.11.16 | 09:22


    26.11.16 | 08:19


    22.11.16 | 20:17


    19.11.16 | 10:14


    18.11.16 | 20:09




    Внедрение 1С Автоматизация 1С Доработка 1С Сопровождение 1С Обслуживание 1С Программирование 1С 8 Hастройка 1С Карта сайта Контакты