Скрипт для обновления базы с расширением из хранилища

22.01.24

База данных - Обновление 1С

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

На своей работе я смоделировал рабочий контур, чтобы можно было разрабатывать и проверять функционал с настройками конкретной информационной базы, а не каждый раз перенастраивать. Есть базы, которые обновляются быстро, затягивают изменения из хранилища и обновляются, а есть, которые не очень, например, ERP. 

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

Как результат: создал скрипт обновления, сделал его копии под каждую базу, сделал отдельный bat-файл для одновременного запуска всех скриптов обновления. Запуск скрипта по расписанию. Когда приезжаю на работу - весь контур уже находиться в актуальном состоянии. Данный скрипт можно применять и к рабочим базам.

Переменные выделял через {ИмяПеременной}

 

Служебное сообщение для определения, какая база обновляется

rem Is <ИмяБазыОбновления>

 

Для RAS: код для получения даты начала и окончания блокировки базы. Этот код нужен, если у вас поднят RAS. Получаем текущее время. Оно будет использоваться как дата начала блокировки базы. А дата окончания блокировки +1 час. Не нашел быстрых способов корректного вычисления времени в командной строке для всех случаев. У меня скрипты запускаются утром, и для меня это не настолько критично. Если у вас его нет, тогда просто пропускайте этот кусок.

For /f "tokens=1-3 delims=/. " %%a in ('date /t') do (set dateBegin=%%c-%%b-%%a)
set "minutesBegin=%time:~3,2%"
set /a "hoursBegin=%time:~0,2%"
set /a "hoursEnd=%hoursBegin:~-2%+1"
set hoursBegin=0%hoursBegin%
set hoursBegin=%hoursBegin:~-2%
set hoursEnd=0%hoursEnd%
set hoursEnd=%hoursEnd:~-2%
set dateTimeBegin=%dateBegin%T%hoursBegin%:%minutesBegin%:00
set dateTimeEnd=%dateBegin%T%hoursEnd%:%minutesBegin%:00

 

Устанавливаем переменные, которые будут содержать пусть к платформе(dirPlatform), адрес хранилища конфигурации(repositoryConfiguration), адрес хранилища расширения(repositoryExtension)

set dirPlatform=C:\Program Files\1cv8\{НомерПлатформы}\bin\
set repositoryConfiguration={АдресХранилищаКонфигурации}
set repositoryExtension={АдресХранилищаРасширения}

 

Для RAS: вносим идентификаторы кластера и информационной базы. Их можно взять из файла "C:\Program Files\1cv8\srvinfo\reg_1541\1CV8Clst.lst"

set clusterId={ИдентификаторКластера}
set infobaseId={ИдентификаторИнформационнойБазы}
set racExe="%dirPlatform%rac.exe"

 

Далее определяем исполняемый файл 1С.

set v8Exe="%dirPlatform%1cv8.exe"

 

Устанавливаем переменные с данными базы, кластера, логинами и паролями. Название расширение лучше иметь на латинице. У меня возникли проблемы с кодировкой. И чтобы на разных компьютерах с этой проблемой не связываться - переименовал на латиницу. Для работы скриптов я создал в каждой базе отдельного пользователя, через который скрипт будет авторизоваться в базах. "codAccessInfobase" - нужно, если используете RAS. Ранее была установлена блокировка и скрипт не сможет авторизоваться. Данный параметр устанавливается в свойствах базы в поле "Код разрешения".

set base={СерверКластера1С:Порт}\{ИмяБазыВКластере}
set extensionName={НазваниеРасширение}
set repositoryUser={ЛогинХранилищаОсновнойКонфигурации}
set repositoryPassword={ПарольХранилищаОсновнойКонфигурации}
set repositoryUserExtension={ЛогинХранилищаРасширения}
set repositoryPasswordExtension={ПарольХранилищаРасширения}
set configurationUser={ЛогинИнформационнойБазы}
set configurationPassword={ПарольИнформационнойБазы}
set codAccessInfobase={КодДоступаИнформационнойБазы}

 

Для RAS: устанавливаем имя сервера, где находится RAS(hostname), его порт(portHostName), и время паузы(timeoutLenght) - она нужна, чтобы после блокировки базы прошло указанное количество секунд. Тогда завершатся активные сеансы и не запустятся новые.

set hostname=dats-1cpprod-01.8bitov.com
set portHostName=1845
set timeoutLenght=180

 

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

start "" /wait %racExe%  infobase update --cluster=%clusterId% --infobase=%infobaseId% --infobase-user=%configurationUser% --infobase-pwd=%configurationPassword% --sessions-deny=on --scheduled-jobs-deny=on --denied-from=%dateTimeBegin% --denied-to=%dateTimeEnd% %hostname%:%portHostName%
start "" /wait TIMEOUT /T %timeoutLenght% /NOBREAK 

 

Одна особенность: нельзя одной строкой подключения сразу авторизоваться в нескольких хранилищах. Поэтому нужно подключаться последовательно к каждому хранилищу отдельно.

В первой строке происходит вход в конфигуратор, подключение к хранилищу основной конфигурации. Во второй строке также происходит вход в конфигуратор и обновление основной конфигурации. Третья и четвертая строки повторяют первые две, но только для расширения.

start "" /wait %v8Exe% DESIGNER /S %base% /UC %codAccessInfobase% /N %configurationUser% /P %configurationPassword% /ConfigurationRepositoryF%repositoryConfiguration% /ConfigurationRepositoryN %repositoryUser% /ConfigurationRepositoryP %repositoryPassword% /ConfigurationRepositoryUpdateCfg -force /DisableStartupDialogs
start "" /wait %v8Exe% DESIGNER /S %base% /UC %codAccessInfobase% /N %configurationUser% /P %configurationPassword% /UpdateDBCfg -Server /DisableStartupDialogs
start "" /wait %v8Exe% DESIGNER /S %base% /UC %codAccessInfobase% /N %configurationUser% /P %configurationPassword% /ConfigurationRepositoryF%repositoryExtension% /ConfigurationRepositoryN %repositoryUserExtension% /ConfigurationRepositoryP %repositoryPasswordExtension% /ConfigurationRepositoryUpdateCfg -Extension %extensionName% -force /DisableStartupDialogs
start "" /wait %v8Exe% DESIGNER /S %base% /UC %codAccessInfobase% /N %configurationUser% /P %configurationPassword% /UpdateDBCfg -Extension %extensionName% /DisableStartupDialogs

 

Также я очищаю журнал регистрации, так как на базах разработки он мне нужен только за последние сутки.

start "" /wait %v8Exe% DESIGNER /S %base% /UC %codAccessInfobase% /N %configurationUser% /P %configurationPassword% /DisableStartupDialogs /ReduceEventLogSize %dateBegin%

 

Для RAS: снимаем блокировку с фоновых заданий и клиентский сеансов и закрываем окно исполнение скрипта.

start "" /wait %racExe% infobase update --cluster=%clusterId% --infobase=%infobaseId% --infobase-user=%configurationUser% --infobase-pwd=%configurationPassword% --sessions-deny=off --scheduled-jobs-deny=off %hostname%:%portHostName%
exit

 

 
 Полный текст скрипта, чтобы было проще копировать

 

Буду признателен за критику и замечания.

Вступайте в нашу телеграмм-группу Инфостарт

Хранилище скрипт обновление пакетный.

См. также

Обновление 1С Программист 1С 8.3 1С:ERP. Управление холдингом Бесплатно (free)

Проект обновления «1С:ERP Управление холдингом» с 3.2.1 на 3.2.8 принёс задачку: логика проверки заполнения обязательных реквизитов «переехала» с момента проведения на этап первичной записи документа.

вчера в 08:30    103    1c-izh    2    

3

Обновление 1С Программист 1С 8.3 Россия Абонемент ($m)

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

1 стартмани

09.04.2026    322    4    NAlex    0    

2

Обновление 1С Перенос данных 1C Программист 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 Бесплатно (free)

Однажды к нам на проект сложного обновления пришла конфигурация «1С: Документооборот КОРП», которую требовалось обновить в технологическое окно 1 час. И мы обновили базу так, как это делают в подобных случаях с ERP — используя механизм «Обновление через копию».

06.04.2026    3084    1c-izh    9    

6

Обновление 1С Программист Бесплатно (free)

Рассматриваем типичные проблемы обновления 1С: ручную рутину, ошибки при релизах и перегрузку команды. Учимся автоматизировать обновления, работу с доработанными конфигурациями и процессы групповой разработки с помощью инструмента «Обновлятор». Разбираемся, как выстроить безопасный и управляемый процесс доставки изменений – от проверки релизов до автоматического обновления рабочих баз. В результате команда освобождается от рутинных задач и может сосредоточиться на развитии системы.

01.04.2026    945    vladimir-89    0    

5

Нейросети Обновление 1С Программист 1С 8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Внешняя обработка для автоматизации обновления расширений конфигураций 1С с помощью нейросетей.

1 стартмани

30.03.2026    756    5    erni    6    

4

Обновление 1С Программист 1С 8.3 Россия Бесплатно (free)

При разработке тиражного прикладного решения или при использовании автоматизации сборки вам потребуется механизм создания файлов поставки. В статье приведена шпаргалка по работе с ним.

11.02.2026    1516    AntonovaElena    9    

18

Разработка внешних компонент Администрирование СУБД Linux Обновление 1С Системный администратор Программист Россия Абонемент ($m)

Cценарий python предназначен для автоматизации процессов установки СУБД PostgreSQL, клиентского приложения и сервера 1С, службы RAS а также  и деинсталляции последних в cреде операционной системы Astra Linux. Полный режим работы выполняет деинсталляцию предшествующей версии 1С и установку последующей.  Возможны также только деинсталляция или только установка. Сценарий тестирован в среде ОС Astra Linux SE v.1.7.x,v.1.8.x  

2 стартмани

03.02.2026    895    4    Магнат    1    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. корум 291 22.01.24 22:51 Сейчас в теме
(0) Спасибо, занимательно и полезно.

Интересно, почему именно скриптами, не привлекая тот же обновлятор?
2. ke.92@mail.ru 112 23.01.24 05:53 Сейчас в теме
(1)Хотелось самому разобраться в пакетном режим. Когда знаешь особенности, можешь написать что-то специализированное для себя. + у нас в компании немного сложно с установкой новых программ.
dj_tol; корум; +2 Ответить
3. jcuken 18.04.24 09:01 Сейчас в теме
Название расширение лучше иметь на латинице. У меня возникли проблемы с кодировкой.


В начало скрипта добавь
chcp 1251
Aleksandr; Apiar; +2 Ответить
4. Snitkovski 88 27.01.25 09:35 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация