ПРОДАЖА И ВНЕДРЕНИЕ 1С

по всей России

+7 (495) 223-32-11

Заказать обратный звонок

8 (800) 775-90-01

Бесплатно по России

Получить

Скорую 1С помощь

Получить

Проконсультироваться
со специалистом 1С

Консультироваться

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

Код 1C v 8.х
 // функция сохраняет рабочую конфигурацию в файл, в случае успеха возвращает Истина
      
// параметры:
// Логин - имя пользователя с правами на админисирирование БД
// Пароль - строка пароля
// ИмяФайла - полное имя файла для сохранения конфигурации, не обязательно.
// по умолчанию использует каталог временных файлов и имя 1Cv8.cf
функция СохранитьТекущуюКонфигурацию (Логин, Пароль, ИмяФайла="") экспорт
результат = Ложь;

Если ИмяФайла = "" Тогда
ИмяФайла = КаталогВременныхФайлов() + "1Cv8.cf";
КонецЕсли;

СтрокаБазы = СтрокаСоединенияИнформационнойБазы();
Если Лев(СтрокаБазы, 5) = "File=" Тогда
// файловый вариант
СтрокаБазы = Сред(СтрокаБазы, 6, СтрДлина(СтрокаБазы) - 6);
Иначе
// серверный вариант пока не готов...
// может кто допишет?
возврат Ложь;
КонецЕсли;

ВыбФайл = Новый Файл(ИмяФайла);
Если ВыбФайл.Существует() Тогда
Сигнатура = Строка(ВыбФайл.Размер()) + Строка(ВыбФайл.ПолучитьВремяИзменения());
Иначе
Сигнатура = "";
КонецЕсли;

СтрокаЗапуска = """" + КаталогПрограммы() + "1cv8.exe"" CONFIG /F " + СтрокаБазы
+ ?(Логин = "", "", " /N " + Логин)
+ ?(Пароль = "", "", " /P " + Пароль) + " /DumpDBCfg """ + ИмяФайла + """";

//
// КомандаСистемы (СтрокаЗапуска); не работает!!!!! из-за кавычек в параметрах
// приходиться идти кругом...
// зато можно избежать черного окошка
//
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Run(СтрокаЗапуска, 0, Истина);

ВыбФайл = Новый Файл(ИмяФайла);
Если ВыбФайл.Существует() Тогда
НоваяСигнатура = Строка(ВыбФайл.Размер()) + Строка(ВыбФайл.ПолучитьВремяИзменения());
Если Сигнатура <> НоваяСигнатура Тогда
Результат = Истина;
КонецЕсли;
КонецЕсли;

Возврат Результат;
КонецФункции


ну и пример использования (работает если нет пароля):
Код 1C v 8.х
 Функция ЗаписатьКонфигурациюВФайл(ИмяФайла="")
      
Результат = Ложь;
ВыбФайл = Новый Файл(ИмяФайла);
Если ВыбФайл.Существует() Тогда
Если ВыбФайл.ЭтоКаталог() Тогда
ИмяФайла="";
КонецЕсли;
КонецЕсли;

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

Результат = СохранитьТекущуюКонфигурацию(Логин, Пароль, ИмяФайла);
Если не Результат Тогда
Предупреждение("Конфигурация не сохранена");
Иначе
Сообщить("Конфигурация успешно сохранена в файл: " + ИмяФайла);
КонецЕсли;

Исключение
Предупреждение("У Вас не достаточно прав для сохранения конфигурации");
Возврат Ложь;
КонецПопытки;

Возврат Результат;
КонецФункции


Автор статьи: vde69


Заказать обратный звонок

Позвонить
Отправлено! В самое ближайшее время наш менеджер свяжется с Вами.