Запустить обновление информационной базы 1с параметр запуска

Обновлено: 07.07.2024

Суть рассматриваемого вопроса изложена в заголовке, повествование разобьем на три части. Отдельно внизу будут приведены тексты скриптов.

1) Предисловие

Вопрос необходимости резервного копирования в автоматическом режиме не подлежит сомнению ни у корифеев, ни у новичков. В статье рассмотрим резервное копирование средствами 1С (что имеет ряд преимуществ перед копированием средствами СУБД). При этом будут применены средства пакетного запуска платформы 1С, powershell и планировщик задач Windows.

Задачи обновления информационных давно автоматизированы, но только для типовых конфигураций, либо тех, что используют библиотеку стандартных подсистем. В моем случае мы работаем со старенькой Альфа-Авто редакции 4, которая распространяется на 12 серверов. Изменения вносятся примерно два раза в неделю, поэтому выгода от автоматизации налицо.

В обоих случаях мы имеем следующие исходные данные:

  • Операционная система Windows Server (версии от 2008 до 2012);
  • Клиент-серверный вариант платформы 1С 8.3 (с обязательно установленным компонентом COM-соединение).

2) Резервное копирование

После прочтения указанных ссылок мы уже знаем, что надо сделать, чтобы запустить скрипт powershell, поэтому сразу перейду к делу.

Сделать резервную копию информационной базы в пакетном режиме очень просто, надо только «выгнать» всех пользователей. Делать мы это будем, подключившись COM-объектом к базе данных. Это в нашем примере делает функция ExitAll. В тело функции зашито, что она вызывается на том сервере, на котором, собственно, установлен кластер серверов 1С. Вызовите эту функция безо всяких параметров в своем скрипте на сервере — и ВСЕ пользователи из ВСЕХ баз кластера вылетят.

Приношу свои извинения человеку, чьим кодом я воспользовался при написании этой процедуры — авторство восстановить не удалось.

После этого следует вызвать функцию BackUpBase с параметром — имя информационной базы. У меня во всех ИБ есть служебный администратор с одинаковыми учетными данными, поэтому я их просто захардкодил. При необходимости можно их параметризовать, либо обойтись аутентификацией ОС.

Итоговый скрипт сохраняем в файл.

В планировщике задач создаем «Простую задачу», имя, разумеется, на ваше усмотрение.
У меня работает ежедневно, но и тут хозяин — барин. Запускать лучше всего ночью, когда никто не работает, например, в 3:00. Действие для задачи — «Запустить программу». Сама программа у нас «powershell.exe». А вот ее аргументы —


где ExitAllUsersAndBackup.ps1 — как раз наш сохраненный скрипт.
-ExecutionPolicy RemoteSigned — ключ, который разрешает выполнение пакетных скриптов powershell, если в системе они глобально не разрешены. Работает через раз (возможно, не хватает компетенции чтобы разобраться, но закономерности не нашёл). В случаях, когда не работает с этим ключом, приходится разрешать выполнение скриптов для всего сервера.

Для этого Win+R, powershell.exe,


и подтверждаем действие.

Время работы с данными скриптами — более трех месяцев. Перебои были, но связаны с отключением электричества и прочими внешними факторами.

3) Обновление конфигурации

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

Конфигурацию мы храним на ftp-сервере, на который помещаем ее вручную. Файл конфигурации называется GK.cf, в приведенном примере обновляется одна единственная конфигурация. Потенциально можно так же обновлять и несколько различных конфигураций.
На ftp рядом с GK.cf помещаем файл с названием flag.txt. Наличие этого файла сигнализирует о том, что обновляться надо. Можно проверять наличие самого фйла GK.cf, но мы используем флаг так же для других целей.

Скрипт работает следующим образом:

  • Удаляет GK.cf и flag.txt, если таковые есть в рабочем каталоге (у пользователя, от имени которого будет запускаться планировщик, должно быть право на запись в этот каталог);
  • Предпринимается попытка скачать файл флага;
  • Если такой файл скачать получилось — скачиваем .cf;
  • Собственно, обновление функцией UpdateCf.

Надежность этого скрипта чуть меньше. Обновление проходит до конца на 100% в тех случаях, когда меняется структура метаданных. В других случаях бывает, как я предупреждал ранее, появление активного пользователя. В результате конфигурация загружена в базу, но конфигурация базы данных не обновлена (снова прошу прощения за подобную кривоватую терминологию перед людьми, не связанными с 1С). В остальном — полет нормальный.


Рис 1 Тело функции НеобходимоОбновлениеИнформационнойБазы

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

  • Значение Константы . НомерВерсииКонфигурации меньше версии конфигурации метаданные.версия
  • Значение Константы.ЗапуститьОбновлениеИнформационнойБазы имеет значение истина .
  • Если параметр запуска имеет строковое значение ЗапуститьОбновлениеИнформационнойБазы

Отметим, что Необходимость снимается автоматически после обновления ИБ. Иными словами, после выполнения обновления установится:

Недавно меня попросили, обновить измененную конфигурацию управления торговлей 10.3.22 до текущей редакции 10.3.46. При обновлении ИБ, возникла ошибка в модуле обработки обновления конфигурации при выполнении процедуры перехода из 10.3.30.1 на 10.3.30.2 ( см. рис 2)


Рис 2 Пример сбоя при обновлении ИБ

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

Несмотря на возникнувший сбой при обновлении, версия конфигурации стала такой же установленной конфигурацией. В результате, повторный запуск с параметром запуска запуститьобновлениеинформационнойбазы как показано на рис 3 не запускал обновление ИБ


Рис 3 Настройка параметров запуска в стартовом окне запуска

Этот параметр запуска не работает если не изменена версия конфигурации, т.е если метаданные.версия и Константы. НомерВерсииКонфигурации совпадают. При обновлении конфигурации устанавливается значение метаданные.версия автоматически, а при обновлении ИБ устанавливается значение Константы. НомерВерсииКонфигурации

В сложившей ситуации, для того чтобы запускался снова механизм обновления ИБ мне пришлось с помощью внешней обработки изменить параметры констант программы :

Параметры запуска приложения, предоставляемые библиотекой:

1. ВойтиВОбластьДанных. При работе в модели сервиса позволяет выполнить вход в указанную область данных информационной базы. Например, «ВойтиВОбластьДанных; 3».

2. ВыполнитьОтложенноеОбновлениеСейчас.
Для клиент-серверных баз. Позволяет выполнить отложенные обработчики сразу, до начала работы пользователей в программе. Необходим для случаев, когда требуется быстро выполнить все процедуры отложенного обновления. Например, при обновлении «через несколько версий», когда прямое обновление на новую версию программы недопустимо, и требуется несколько раз последовательно обновлять конфигурацию и выполнять запуски для обновления ИБ.

3. ЗапуститьОбновлениеИнформационнойБазы.
Принудительно запускает обновление вспомогательных данных и выполняет обработчики обновления, имеющие версию «*» (звездочные). Требуется, например, при изменении в метаданных конфигурации без увеличения номера версии.

4. ЧислоПотоковОбновления.

Для клиент-серверных баз. Позволяет изменить количество параллельных потоков, выполняющих обновление программы (этап регистрации данных для отложенного обновления). Для оптимального и наиболее быстрого обновления рекомендуется устанавливать количество потоков равное количество ядер процессора на сервере, в случае ошибок конфликта блокировок значение нужно уменьшить. По умолчанию – 8.

5. ОтключитьЛогикуНачалаРаботыСистемы.

Только для автоматического тестирования (требуется право Администрирование).

При использовании этого параметра запуска на рабочих базах следует самостоятельно обеспечивать целостность данных.

6. РежимОтладки.
Упрощает отладку кода. В частности:

● все длительные операции выполняются сразу, без запуска фонового задания;

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

7. РазрешитьРаботуПользователей.
Разрешает работу пользователей в информационной базе. Сеанс, запущенный с этим ключом будет завершен после снятия блокировки работы пользователей.

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


Сделать это можно из командной строки с использованием ключа /C

Либо через Конфигуратор, меню Сервис>Параметры, вкладка Запуск 1С Предприятия


Нажать кнопку OK и запустить отладку. При старте запустится Обновление версии программы.

Теперь осталось повторить создание первоначального образа РИБ на главном узле и развернуть его!


Если нужно еще раз запустить процедуры обновления

Если нужно изменить параметры запуска базы. Например из за добавленного объекта в конфигурацию которая вызывает ошибку «не найден идентификатор». Либо просто обновление не запускается и не база не переходит на новую версию после обновления. Может помочь запустить базу с дополнительными параметрами.

Заходим в конфигуратор → сервис → параметры. Закладка «Запуск 1С:Предприятия». Пишем в поле»параметры запуска» строку « ЗапуститьОбновлениеИнформационнойБазы «.


После запуска в режиме предприятия запустятся процедуры по обновлению метаданных базы. После этого удалите добавленную строку из параметров запуска.

Помимо запуска путем выбора соответствующей пиктограммы из меню «Пуск —Программы» операционной системы MS Windows, запуск системы 1С:Предприятие 8.x может быть выполнен путем запуска исполняемого файла 1CV8.EXE. Такой запуск может быть произведен, например, при помощи пункта «Выполнить» меню «Пуск» операционной системы MS Windows, или двойным щелчком мыши на имени файла 1CV8.EXE в программе Проводник (Explorer).

В командной строке запуска файла 1CV8.EXE можно указать все необходимые параметры: режим запуска, имя каталога с информационной базой, имя пользовательского каталога, и другие. Если параметры командной строки указаны верно, файл 1CV8.EXE будет запущен в одном из режимов запуска: «1С:Предприятие» или «Конфигуратор» — в зависимости от указанных параметров.

Если при запуске файла 1CV8.EXE обнаружена ошибка в параметрах командной строки, или параметры отсутствуют, то после запуска на экран будет выдан диалог «Запуск 1С:Предприятия». В этом диалоге пользователь может выбрать режим запуска файла 1CV8.EXE, имя информационной базы и другие параметры запуска.

Для файлового варианта определен параметр:
File — каталог информационной базы;
Locale — язык (страна), которые будут использованы при создании информационной базы. Допустимые значения такие же как у параметра <Форматная строка> метода Формат. Параметр Locale задавать не обязательно. Если не задан, то будут использованы региональные установки текущей информационной базы.

Для клиент-серверного варианта определены параметры:
Srvr — имя сервера 1С:Предприятия;
Ref — имя информационной базы на сервере;
SQLSrvr — имя SQL сервера;
SQLDB — имя SQL базы данных;
SQLUID — имя пользователя SQL;
SQLPwd — пароль пользователя SQL. Если пароль для пользователя SQL не задан, то данный параметр можно не указывать
SQLYOffs - смещение дат, используемое для хранения дат в SQL Server. Может принимать значения 0 или 2000. Данный параметр задавать не обязательно. Если не задан принимается значение 0.
Locale - язык (страна), (аналогично файловому варианту).

Для всех вариантов определены параметры:
Usr — имя пользователя;
Pwd — пароль
/AddInList - параметр, показывающий, под каким именем добавлять базу в список, если не указан, база не будет добавлена в список. Если не указано имя, используется умолчание, аналогичное интерактивному созданию информационной базы.

Одновременное использование ключей не допускается.

При наличии ссылок на несуществующие объекты:
BadRefCreate - создавать объекты
BadRefClear - очищать объекты
BadRefNone -не изменять

при частичной потере объектов:
BadDataCreate - создавать объекты
BadDataDelete - удалять объекты

Одновременное использование ключей внутри подгруппы параметров не допускается.
Если команда прошла успешно, возвращает код возврата 0, в противном случае — 1 (101, если в данных имеются ошибки).
После выполнения закрывает систему 1С:Предприятие 8.x.

Параметры командной строки пакетного режима создания файлов поставки и обновления:
/CreateDistributionFiles [-cffile<имя cf файла>] [-cfufile <имя cfu файла> [-f<имя cf файла>|-v<версия дистрибутива>]+] - Создание файлов поставки и обновления
-cffile<имя cf файла> - указание создать дистрибутив
-cfufile<имя cfu файла> - указание создать обновление
-f<имя cf файла> - дистрибутив, включаемый в обновление, задан именем
-v<версия дистрибутива>] - дистрибутив, включаемый в обновление, задан версией
Примечание: группа параметров -f<имя cf файла>|-v<версия дистрибутива> повторяется столько раз, сколько файлов дистрибутивов включается в обновление.

Параметры командной строки режима работы с хранилищем конфигурации:
/DepotF - каталог хранилища
/DepotN - имя пользователя хранилища
/DepotP - пароль пользователя хранилища
/DepotDumpCfg<имя cf файла> [-v<номер версии хранилища>] - сохранить конфигурацию из хранилища в файл (пакетный режим)
-v<номер версии хранилища>
v - номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия.
/DepotUpdateCfg [-v<номер версии хранилища>] [-revised] - Обновить конфигурацию хранилища из файла (пакетный режим)
-v<номер версии хранилища> - номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия, если конфигурация подключена к хранилищу, то параметр игнорируется
-revised - получать захваченные объекты, если потребуется. Если конфигурация не подключена к хранилищу, то параметр игнорируется.

Параметры командной строки пакетного режима регистрации 1С:Предприятия 8.x в качестве Automation сервера:
/RegServer - регистрация приложения
/UnregServer - удаление регистрации приложения
После выполнения закрывает систему 1С:Предприятие 8.x.
Если значения параметров включают пробелы (например, путь или имя файла), значения должны быть заключены в кавычки.

Читайте также: