вторник, 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. И помните: жизнь слишком коротка, чтобы делать что-то вручную.

суббота, 11 июля 2015 г.

Hellow world!

Наверное каждый школьник айтишник знаком с этой фразой и не раз именно с нее начиналось знакомство с новым языком программирования или технологией. Вот и я в очередной раз (и, поверьте мне, за мои 26 лет их было уже ох как предостаточно) пишу "Hello world".  И казалось бы доколе использовать эти примитивные шаблоны? Может пора уже сразу в омут с головой? Но нет, чувствую, что знакомство с blogger надо начать именно с "hellow world"! ОК, тогда начнем:

HELLOW Wonderful Wonderful World!!!

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

Кто я такой? Зовут меня Павел, а живу я в небольшом городке под названием Чита. Городок совсем небольшой (тысяч 300 населения) и располагается, как мне подсказывают google.map, в 6258,8 километрах  от нашей политической столицы и в 6750,7 километрах от нашей культурной столицы Санкт-Петербурга. И, конечно, такая отдаленность отложила на местных жителях определённый отпечаток. Вы все еще думаете, что самые суровые мужики живут в Челябинске? Хм, тогда мы идет к вам! Основной вид занятости в Чите это торговля. Продают все, что можно только продать. К слову, недавно китайцам продали отдали в аренду 115 тысяч гектаров земли. Чем заняться программисту в таком маленьком и индустриально неразвитом городе? - спросите вы. Ответов немного - это либо веб разработка, либо сисадминство в симбиозе с 1С. А так как мое чувство прекрасного далеко от прекрасного я выбрал 1С. Работаю я в организации, деятельность которой в какой-то степени связана с военными. Про Читу часто можно услышать: "Чита город дождей,блядей и воинских частей". Хотя последние годы здесь небывалая засуха и пожары, а про продажную любовь я ничего не знаю, но вот воинских частей здесь как грибов. Обычно, когда рассказываешь кому-то про Читу - это вызывает две реакции: либо человек не знает,  что это за город, либо - "О, я там служил!!!". 

Ну, вообщем-то, представительская часть закончена, да и пожалуй Helow world можно на этом заканчивать. Так что всем пока, до скорых!