Приветствую Вас ГостьПонедельник, 16.06.2025, 11:52

Каталог статей


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

Установить обновление на базу можно с помощью параметров командной строки  /DisableStartupDialogs, /UpdateCfg, /UpdateDBCfg.

Пример батника для запуска:

echo off
cd /d "%~dp0"
Set user=User
REM пароль вводится в командной строке через пробел первым параметром
Set password=%1

REM Надо задать путь до исполняемого файла 1С, для последовательного выполнения 
REM Можно указать и "C:\Program Files\1cv8\common\1cestart.exe", но тогда все базы запустятся одновременно
SET path1C="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"

for %%i in (%bases%) do (

start "" /wait %path1C% CONFIG /S"srv1s\%%i" /N"%user%" /P"%password%" /DisableStartupDialogs /UpdateCfg %file_cfu% /UpdateDBCfg /Out %%i.log

)

Командную строку можно сформировать в 1с и запустить с помощью метода ЗапуститьПриложение().

Пример:

&НаКлиенте
Функция ОбновитьРелизБазы(СтрокаНастроек) 
    
    Перем Результат;
    Результат = "";
    
    ПутьКФайлу1С = КаталогПрограммы()+ "1cv8.exe";
    ИмяБазы = СтрокаНастроек.ИмяБазы; //берем только имя базы
    СтрокаКоманды = ПутьКФайлу1С + " CONFIG /S""srv1s\" + ИмяБазы + """ /N""" + Объект.ИмяПользователя +""" /P""" + Объект.Пароль+ """ /DisableStartupDialogs /UpdateCfg " + ОБъект.ИмяФайлаОбновления + " /UpdateDBCfg";
    Если ЗначениеЗаполнено(Объект.ПапкаВыгрузкиЛогов) Тогда  //можно вывести файлы логов выполнения обновления в папку       
        СтрокаКоманды = СтрокаКоманды + " /Out " + ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Объект.ПапкаВыгрузкиЛогов) + ИмяБазы + ".log";
    КонецЕсли;
        
    КодВозврата = Неопределено;
    ЗапуститьПриложение(СтрокаКоманды,,Истина, КодВозврата);
    Результат = "Код завершения обновления: " + Строка(КодВозврата);
    
    Если Объект.ПринятьОбновленияПослеОбновления Тогда
        РезультатПодтвреждения = ПодтвердитьЛегальностьОбновленияНаСервере(СтрокаНастроек); 
        Результат = Результат + Символы.Таб + РезультатПодтвреждения;
    КонецЕсли;
        
    Возврат Результат;
    
КонецФункции
//После того, как установили обновление надо запустить клиента, указать, что обновление получено легально и запустить обновление. Это можно сделать программно, но надо учесть, что вся эта байда запускается при запуске клиента. Поэтому есть смысл легализовать обновление через COM-соединение.
&НаСервере
Функция ПодтвердитьЛегальностьОбновленияНаСервере(СтрокаНастроек)

    Перем Результат;
    Результат = "";
    
    ПодключениекБазе = ПодключитьсяКБазе(СтрокаНастроек); //подключаемся через COM. Функция здесь не указывается. 
    Если ПодключениекБазе = Неопределено Тогда                            
        Возврат "";
    КонецЕсли; 
    
    Результат = ПодтвердитьЛегальность(ПодключениекБазе);    
    
    ПодключениекБазе = Неопределено;
    
    Возврат Результат; 
    
КонецФункции 

 

&НаСервере
Функция ПодтвердитьЛегальность(ПодключениекБазе)
    Перем Результат;
    Результат = Неопределено;

    Попытка
        ПодключениекБазе.УстановитьПривилегированныйРежим(Истина);
        ПодключениекБазе.ОбновлениеИнформационнойБазыСлужебный.ЗаписатьПодтверждениеЛегальностиПолученияОбновлений();
        ПодключениекБазе.ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы();                
        Результат = "Легальность установлена, база обновлена.";
    Исключение 
        Результат = "Ошибка обновления обработки: " + ОписаниеОшибки();
    КонецПопытки;
            
    Возврат Результат;
    
КонецФункции
Категория: Администрирование | Добавил: leshic (01.04.2025)
Просмотров: 22 | Рейтинг: 0.0/0
Всего комментариев: 0
Вход на сайт
Поиск
Категории раздела
СКД [51]
Регистры [7]
Формы [47]
Администрирование [46]
Запросы [11]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [46]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0