вторник, 21 июля 2015 г.

Массовое восстановление информационных баз 1С из бэкапов и прочие радости командной строки запуска «1С:Предприятия»


     В свое работе я время от времени сталкиваюсь с необходимостью восстановления информационных баз 1С из файлов выгрузки (*.dt - "дтэшников"). Такая необходимость может возникнуть, когда:
 - Необходимо развернуть информационные базы за определенный период группе аудиторов;
 - Когда у пользователя произошли непонятные изменения и требуется выяснить, когда эти изменения произошли;
 - Необходимо найти кусок кода, который изменился после обновления;
 - И т.п.
Итак, посыл понятен. Естественно, разворачивать базы вручную дело весьма скучное, а может быть еще и весьма требовательно к ресурсам, поэтому рекомендую посмотреть в сторону параметров запуска "1С:Предприятия"  (полный список параметров можно найти на сайте ИТС).
1С можно запустить в одном из трех режимов:

  • DESIGNER - Запуск в режиме Конфигуратора;
  • ENTERPRISE - Запуск в режиме Предприятия;
  • CREATEINFOBASE - Создание информационной базы.   

Остановимся подробнее на режиме CREATEINFOBASE. Данный параметр имеет следующий вид: CREATEINFOBASE <строка соединения> [/AddInList [Имя ИБ]] [/UseTemplate [имя файла шаблона]].

  • СтрокаСоединения - обязательный параметр, образуется из пар ИмяПараметра=Значение, разделённых символами точки с запятой (;). Если Значение содержит пробелы, оно должно быть заключено в двойные кавычки. Возможные параметры строки соединения: 

Для файлового варианта определен параметр:
        File - Каталог информационной базы.
Для клиент-серверного варианта определены параметры:
        Srvr - Имя сервера 1С:Предприятия. Для обеспечения бесперебойной работы клиентских приложений возможно указание нескольких адресов кластера через запятую, например: Srvr=”Server1,Server2” или Srvr=”Server1:1741,Server2:1741”;
        Ref - Имя информационной базы на сервере 1С:Предприятия;
        DBMS - Тип используемого сервера баз данных:
                MSSQLServer — Microsoft SQL Server (по умолчанию);
                PostgreSQL — PostgreSQL;
                IBMDB2 — IBM DB2;
                OracleDatabase — Oracle Database.
        DBSrvr - Имя SQL-сервера;
        DB - Имя SQL-базы данных;
        DBUID - Имя пользователя SQL-сервера;
        DBPwd - Пароль пользователя SQL-сервера. Если пароль для пользователя сервера баз данных не задан, то данный параметр можно не указывать;
        SQLYOffs - Смещение дат, используемое для хранения дат в SQL-сервере (Допустимые значения - 0 или 2000. По умолчанию - 0). Данный параметр определяет число лет, которое будет прибавляться к датам при их сохранении в базе данных Microsoft SQL Server и вычитаться при их извлечении. Наличие данного параметра определяется особенностями хранения дат в Microsoft SQL Server. Тип DATETIME, используемый в Microsoft SQL Server, позволяет хранить даты в диапазоне с 1 января 1753 года по 31 декабря 9999 года. И если при работе с информационной базой может возникнуть необходимость хранения дат, предшествующих нижней границе данного диапазона, то в качестве значения параметра следует выбрать 2000. Если же такие даты встречаться не будут, то в качестве смещения дат можно выбрать 0. После создания информационной базы значение данного параметра не может быть изменено. (ВНИМАНИЕ! Если в прикладном решении используются регистры накопления или регистры бухгалтерии, то в поле Смещение дат необходимо установить значение 2000);
        CrSQLDB - Создать базу данных в случае ее отсутствия ("y" - создавать базу данных в случае отсутствия, "n" - не создавать);
        SchJobDn - Запретить созданной информационной базе  выполнение регламентных созданий (Y/N). Значение по умолчанию — N;
        SUsr - Имя администратора кластера, в котором должен быть создан начальный образ. Параметр необходимо задавать, если в кластере определены администраторы и для них аутентификация операционной системы не установлена или не подходит;
        SPwd - Пароль администратора кластера.

  • /AddInList [ИмяИБ] - имя, под которым база добавляется в список. Если этот параметр не указан, база добавлена в список не будет. Если не указано ИмяИБ, будет задано имя по умолчанию (как при интерактивном создании базы).
  • /UseTemplate — создание информационной базы осуществляется по  шаблону, указанному в [имя файла шаблона]. В качестве шаблонов могут быть файлы конфигурации (.cf) или файлы выгрузки информационной базы (.dt). Если шаблон не указан, параметр игнорируется. 
  • /Out <Имя файла> [-NoTruncate] - установка файла для вывода служебных сообщений. Если задан параметр -NoTruncate (через пробел), файл не очищается (не используется в тонком клиенте). Во время исполнения пакетных команд файл сообщений можно открыть для просмотра. Запись сообщений в файл не буферизуется (сообщения записываются сразу).

Пример создания информационной базы на сервере 1С:Предприятия:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" CREATEINFOBASE Srvr="Server1C";Ref="НоваяБаза";DB="НоваяБаза";DBMS="MSSQLServer";DBSrvr="Server1C";DBUID="sa";DBPwd="Passwords";CrSQLDB=Y;SchJobDn=Y /OUT "C:\Users\Администратор\Desktop\1c.log" /AddInList "НоваяБаза" /UseTemplate "C:\Users\Администратор\Desktop\Базы\Новая.dt"

Для автоматизации данной операции можно написать bat файл или воспользоваться любым знакомым языком программирования. Пример утилиты создания нескольких ИБ  из одного дтэшника на C# на гитхабе.


P.S. И помните: жизнь слишком коротка, чтобы делать что-то вручную.

Комментариев нет:

Отправить комментарий