Командный файл для автоматического обновления баз

GraffRostov

New member
Регистрация
1 Июн 2016
Сообщения
3
Реакции
0
Здравствуйте. Решил выложить свое творение, вдруг кому пригодится.

Надеюсь не нарушил правила форума выложив в эту ветку. Прошу прощения у админов, если не трудно - перенесите в соответствующую тематике.

Диспозиция:

Я очень ленив. Периодически приезжаю в инжиринговую компанию для обновления баз, коих (баз) более 200-т. За время моего отсутствия могли добавится новые базы, либо частично убраны старые. А мне лень разбираться чего там у них поменялось, поэтому набросал файлик который всю работу делает за меня. Естественно, ко времени моего прибытия, простой планировщик задач уже сделает копию всех баз (на всякий случай). Базы расположены по порядку: в каталоге Bases_ACC расположены базы Бухгалтерия предприятия, в каталоге Bases_HRM расположены ЗУПы, ну и т.д. Необходимо при надобности поставить новую платформу, установить обновление конфигураций и внести необходимые изменения в прилагаемый ниже файл.

Надеюсь никому в голову не придет испытывать сразу на живых базах? Протестируйте безопасно где-нибудь (у меня для этого всегда есть подопытный компьютер).

Предварительное создание копии баз вещь весьма полезная!

Ну а теперь сам файл. Создайте текстовый файл (в блокноте например), скопируйте в него нижеприведенный текст и сохраните под именем Update_1C_ACC.bat Ну или какое там вам имя нравится... Не забудьте проверить пути к каталогам и вписать свои!

Текст файла:

:: По умолчанию осуществляется вывод команд на экран
:: Можно его отключить раскомментировав следующую строку убрав rem

rem @ECHO OFF

:: Устанавливаем кодировку для корректной работы с именами, содержащими русские символы
:: На экран при этом вместо русских символов выводятся кракозябры, это в порядке вещей
chcp 1251

:: Задаем переменные
:: Пути к папкам могут отличатся, проверьте и впишите свои пути
:: Не забудьте правильно указать версии платформы и обновления
setlocal

:: Задаем путь и версию платформы 1С
set bin_dir=C:\Program Files (x86)\1cv8
set bin_ver=8.3.9.1818

:: Задаем версию обновления конфигурации Бухгалтерия предприятия 3.0
set cfu_acc=3_0_44_155

:: Задаем путь к каталогу с базами предназначенными для обновления
set base_dir=D:\1C\EXPERIMENT

:: Задаем путь к обновлениям 1С
set cfu_dir=C:\Users\user\AppData\Roaming\1C\1Cv8\tmplts\1c\Accounting

:: Задаем имя пользователя имеющего права для обновления баз
:: Вместо UserName впишите своего
set user_name=UserName

:: Задаем пароль пользователя непосредственно в файле
:: Вместо Password впишите свой пароль
set user_pass=Password

:: Можем задать пароль путем ввода с клавиатуры, если опасаетесь хранить его в файле
:: Для этого раскомментируйте следующие строки и закомментируйте верхнюю
rem @ECHO "Enter user pass"
rem set /p user_pass=

:: Задаем путь к папке с логами, папку предварительно надо создать
set log_dir=D:\1C\Update_log

:: Создаем текстовый файл со списком баз находящихся в каталоге
:: В строчке ниже форум заменил код на смайлик. Вместо смайлика надо поставить двоеточие и после него букву D
:: Перед двоеточием пробела быть не должно! После двоеточия тоже.
dir %base_dir% /A:D /B > List_Dir.txt

:: Начинаем обновление баз согласно полученного списка и выводим лог обновления в указанный каталог
:: Если пароль у пользователя отсутствует, то удалите в строке ниже следующую запись /P %user_pass%

for /f "usebackq delims=" %%i in ("List_Dir.txt") do (
"%bin_dir%\%bin_ver%\bin\1cv8.exe" CONFIG /F "%base_dir%\%%i" /N "%user_name%" /P %user_pass% /UpdateCfg "%cfu_dir%\%cfu_acc%\1Cv8.cfu" /UpdateDBCfg /Out "%log_dir%\%%i_%cfu_acc%.log"
)


Конец файла.

Примечание: В строчке начинающейся dir %base_dir% форум заменил код на смайлик. Вместо смайлика надо поставить двоеточие и после него букву D
Перед двоеточием пробела быть не должно! После двоеточия тоже.

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

Для ЗУПов и прочего создайте подобные файлы, соотвествующим образом скорректировав.

P.S. Вопросы можете задавать, правда ответить не обещаю. Скорее всего мне будет просто лень.
 
Последнее редактирование:
А если в момент создания бекапов с одной из более 200 баз кто то работает ?
А если в момент обновления базы с базой работают пользователи? Или когда никто не работает но кто-то просто забыл закрыть 1с?
А если база клиент/серверная?
А если база частично снята с поддержки и допиленная?
 
Ответ

Поясняю: я и не утверждал, что решение подходит абсолютно всем. Если кому-то пригодилось, то хорошо.

Зарабатываю я совсем другим, а не сопровождением 1С. На продукты 1С у меня вообще аллергия. Просто свалилось после того, как дедушку, который обновлял до меня, пробил инсульт. А так как люди мне не чужие, то взялся помочь. Денег мне за это не платят, да я и не собирался с них просить. Поэтому не вижу смысла тратить кучу своего личного времени на всю эту мутотень. Работает 5 девушек, сервачок старенький и слабенький, но в файловом режиме вполне тянет.

: А если в момент создания бекапов с одной из более 200 баз кто то работает ?

Тут повезло, девушки ответственные, и уходя с работы выключают не только системники, но и мониторы с принтерами. Бекап запускается ночью и вполне до утра справляется.

: А если в момент обновления базы с базой работают пользователи? Или когда никто не работает но кто-то просто забыл закрыть 1с?

Ну вам же ничего не мешает предварительно зайти по RDP и посмотреть Мой компьютер>Управление>Общие папки>Открытые файлы на предмет чего там наоткрывали. Поэтому, в субботу с утречка, если есть свежие обновления, можно всё и запустить. В том офисе, будьте уверены, до утра понедельника никто не объявится.

: А если база клиент/серверная?

Если подразумеваете SQL, то вот ссылочка
У Вас недостаточно прав для просмотра ссылок. Войдите или зарегистрируйтесь.
Допиливайте под свои задачи самостоятельно.

: А если база частично снята с поддержки и допиленная?

Передо мной такая задача не стояла. Встанет - буду решать. А пока, мне лень, я лучше на рыбалку схожу.
 
Небольшое исправление....

Если в путях к базам у вас присутствуют пробелы, то немного поправьте следующую строчку: dir %base_dir% /A:D /B > List_Dir.txt

Выглядеть должна следующим образом: dir "%base_dir%" /A:D /B > List_Dir.txt

Т.е. добавились кавычки. Упустил этот момент. У меня в путях к базам пробелов нет. По поводу смайлика в коде отписано в первом сообщении.
 
Назад
Сверху