Архивирование базы данных 1С

Как делать архивные копии информационной базы 1С

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

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

Итак, мы говорим об архивировании базы данных. Что это такое и для чего база данных архивируется?

Что такое архив базы данных?

Архив базы данных - это копия базы данных, созданная на определённый момент времени. А поскольку база данных 1С представляет собой набор файлов, то архив базы данных 1С - это копия всех файлов, которые составляют такую базу.

Говоря о моменте времени, на который создаётся архив базы данных, следует признать, что архив сделать в любое время не получится. В частности, если с базой в режиме "1С:Предприятие" работает хотя бы один пользователь, то сделать архив базы данных штатными средствами программа 1С не позволит. Даже если делать копирование файлов базы данных, с которой кто-то работает, сторонними программами, то есть вероятность, что в архив попадут не все данные. Именно поэтому архивирование базы данных выполняется тогда, когда с базой данных никто из пользователей не работает. Происходит это таинство обычно вечером, после окончания рабочего дня. И именно ради проведения архивации базы данных администраторы иногда уходят с работы чуть позже бухгалтеров.

Впрочем, умные администраторы ручками архивацию базы не делают. Но об этом - чуть позже.

Причины архивирования базы данных

Многие бухгалтера не понимают, зачем делать архив базы данных. Следует признать, что по мере развития компьютерных технологий и повышения качества работы электронных систем сбои в работе базы данных 1С случаются всё реже. И слава Небесам, если так оно и есть. Но иногда с базой данных 1С могут происходить неприятности. И я не позавидую тому бухгалтеру, у которого нет архивной копии базы данных за предыдущий день, если сегодня 1С показывает "что-то не то".

Я могу назвать две причины, по которым необходимо делать архивные копии базы данных.

Причина 1: Уничтожение рабочей базы данных

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

Потеря данных на жёстком диске
Поломка жёсткого диска является главной причиной потери информации в базе данных 1С.

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

Только при этом я предполагаю, что моё мнение по поводу достаточности ежедневного архивирования обусловлено тем, что я никогда не работал с очень большими предприятиями. Я вполне поверю, если на больших предприятиях, где с базой данных одновременно работает несколько десятков человек, архивирование может проводиться, например, 2 раза в день. Чем это обусловлено? Допустим, что в базу данных несколько десятков человек постоянно и одновременно вбивают данные. Если вдруг обнаружится, что база данных нарушена, то придётся восстанавливать данные из последнего архива. Но при этом придётся повторно вводить данные за период между моментом создания последнего архива и моментом обнаружения ошибки в базе данных и сопутствующей остановки работы в 1С. Если учесть, что стоимость носителей информации (жёстких дисков, например) постоянно снижается, и даже 1 Терабайт на носителе стоит намного меньше, чем стоимость 1 человеко-часа на предприятии с несколькими десятками пользователей 1С, то выгоднее делать архивы несколько раз вдень.

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

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

Причина 2: Сверка

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

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

Методы создания архивной копии базы данных

Как я говорил выше, база данных 1С - это набор файлов. В программе 1С, как в системе управления базой данных, есть встроенные инструменты для создания архивных копий базы данных. Но если учесть форму хранения базы данных, то архивирование файлов базы данных можно проводить внешними программами. В частности, если мы затронем тему распределённых баз данных, то обнаружим, что архивирование периферийной базы данных можно проводить автоматически при обмене с центральной базой данных. Таким образом, можно выделить 3 метода создания архивной копии базы данных.

  1. Архивирование стандартным способом в программе 1С.
  2. Архивирование внешними программами.
  3. Архивирование при обмене в распределённой базе данных.

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

Стандартное сохранение данных

В программе "1С:Предприятие" есть встроенный механизм архивирования файлов базы данных. Но я сразу скажу, что он мне не нравится. Не нравится по той причине, что пользователю, желающему выполнить архивацию данных, при каждой архивации нужно вручную выполнить много действий. Это плохо, во-первых, потому, что выполнение действий заставляет пользователя думать. А пользователю 1С думать давать нельзя: нужно максимально автоматизировать все процессы. И во-вторых, ручное выполнение действий практически всегда приводит к возникновению ошибок.

Представьте себе такой цирк. Предприятие создаёт резервные копии база даннах для того, чтобы обеспечить безопасность. Но при самом резервировании базы данных стандартными методами существует вероятность какой-нибудь глупой ошибки вследствие невнимательности пользователя. И от такой ошибки безопасность всего предприятия стремится к нулю. Какой смысл тогда делать архивирование?

Хочу, чтобы вы сами осознали, насколько неудобно делать архивную копию базы встроенными инструментами программы 1С. Для этого напомню, как делается сохранение данных в программе 1С. Порядок действий следующий:

  • Запустить 1С:Конфигуратор.
  • Выбрать пункт меню "Администрирование - Сохранить данные".
  • Нажать кнопку "Сохранить", после чего будет проведено архивирование базы данных.

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

Сохранение данных в программе 1С:Конфигуратор
Сохранение данных в программе 1С:Конфигуратор

Всё кажется простым, удобным и совершенным. Но только до следующего дня архивации. Потому что если на следующий день вам захочется сделать новый архив базы данных, то у вас возникнут проблемы. Какие?

Проблема 1: Программа 1С не запоминает каталог архивации.

Первая проблема состоит в том, что программа 1С предлагает сохранять архив базы данных в каталог, в котором расположена сама база данных. Но следует признать, что это очень неправильно. Почему архивный файл нельзя сохранять в каталоге базы данных?

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

А что нам предлагает программа 1С при сохранении данных? Если сохранить архив в каталог, который не соответствует каталогу базы данных, то адрес такого каталога программа 1С не запоминает. При каждом следующем архивировании пользователю придётся вручную выбирать каталог для сохранения архива. На мой взгляд, это крайне неудобно и даже опасно.

Проблема 2: Программа 1С не создаёт уникальные имена архивов

При сохранении данных программа 1С предложит имя архивного файла. Но всегда имя архива будет одинаковым: "1Cv7.zip". Почему это плохо и к чему это может привести?

Если в базе данных произошёл сбой, то база данных об этом никак не сообщает. Сбой в работе базы данных, как правило, обнаруживается спустя несколько дней. Про месяцы я даже боюсь упоминать. Если сегодня в базе обнаружилась ошибка, то нет гарантии, что в базе данных за вчера ошибки не было. Поэтому восстановление архивной копии базы данных за вчера проблему не решит. Возможно, потребуется архивная копия за позавчера или ранее. Поэтому имеет смысл хранить несколько архивов за прошедший период. Скажем, можно хранить копии базы данных, которые делаются в конце рабочего дня, за последний квартал или год.

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

Запрос на перезапись существующего архива в программе 1С
Запрос на перезапись существующего архива в программе 1С.

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

При создании файлов с архивными копиями уже стало традицией в наименовании файла указывать дату его создания. В частности, при создании архива базы данных 1С в наименовании файла имеет смысл указывать дату, когда копия базы данных была сделана. Но программа 1С при стандартном сохранении данных традициям не следует и не подставляет в наименование файла архива текущую дату. Поэтому пользователю это важное действие приходится делать вручную. Как следствие, в каталоге с архивами можно встретить архивные файлы с такими наименованиями:

  • 07.02.2012.zip
  • 070212.zip
  • 07,02,2012.zip
  • 07-02-2012.zip
  • 7-2-12.zip

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

Говоря о наименовании архивных файлов, хочется добавить ещё несколько полезных идей.

  • Дату создания архива лучше указывать в формате "ГГММДД", где "ГГ" - год, "ММ" - месяц и "ДД" - день создания архива. Например, файл архива базы данных, который создан 07 февраля 2012 года, в формате "ГГММДД" будет иметь имя "120207.zip". Обычные пользователи редко работают с большим количеством архивных файлов, а потому не понимают, как должны быть отсортированы архивные файлы, чтобы с ними было удобно работать. Если именовать архивные файлы в формате "ГГММДД", то при сортировке "по наименованию" файлы выстраиваются в последовательности года, месяца и даты.
  • Если на одном предприятии ведётся несколько баз данных, то рекомендуется в имени файла указывать код базы данных. Например, архив за 07.02.2012 года для базы данных с кодом "m" будет иметь архивный файл с наименованием "m120207.zip". Если главный бухгалтер хочет записать архивные копии базы данных на флешку, чтобы поработать дома, то файлы можно поместить в один каталог, а потом легко найти архивный файл для нужной базы данных.
  • Не будет лишним в имени архивного файла также указывать время создания копии базы данных. Иногда при проведении экспериментов с базой данных копии могут делаться в один день с интервалом в короткие промежутки времени. Думаю, указывать часы и минуты будет достаточно. Например, у архивного файла, который был создан в 18 часов 26 минут, будет наименование "m120207_1826.zip".

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

Архивирование внешними программами

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

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

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

Правила добавления файлов в архив базы данных 1С

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

В каталоге базы данных содержится множество файлов, которые при архивировании следует поместить в архив. Рассмотрим работу с самыми важными файлами базы данных, которые имеют расширение "dbx". При настройке архивирования можно указать, что в архив должны добавляться все файлы с расширением "dbx". Но после проведения архивации обнаружится, что в архив попали файлы "dbx" не только из корневого каталога базы данных, но и файлы из подчинённых каталогов. Например, после реорганизации базы данных файлы с расширением "dbx" появляются в каталоге "NEW_STRU", а они в архиве не нужны. При этом исключать подчинённые каталоги нельзя.

Поэтому проще при настройке формирования архива применить следующие правила:

  1. Добавить в архив все файлы из каталога базы данных.
  2. Исключать из архива файлы по маске.

Приведу конкретный пример. Допустим, наша база данных располагается в каталоге "D:\1cv7\base". Тогда по первому правилу в архив следует добавить все файлы из указанного каталога базы данных:

  • D:\1cv7\base\*.*

А по второму правилу исключить файлы по следующим маскам:

  • *.CDX
  • NEW_STRU\*.*
  • SYSLOG\*.*

По моему мнению, проводить архивацию по таким правилам намного удобнее, чем прописывать маску для каждого типа включаемых файлов. А таких типов может быть сравнительное много:

  • 1Cv7.CFG
  • 1Cv7.DD
  • 1Cv7.MD
  • 1Cv7.ORD
  • 1Cv7.SPL
  • 1cv7flt.lst
  • 1cv7srct.st
  • *.DBF
  • *.DLL
  • *.ALS
  • Подчинённые каталоги (при наличии).

У меня есть ещё один аргумент. Если вы работаете администратором в нескольких организациях с разной файловой структурой баз данных, то для вас удобнее использовать универсальный метод настройки архивирования. Согласны?

BackUp32

Повторюсь, что я перепробовал много программ для архивирования баз данных 1С. И лично для себя я выбрал одну программу, которая называется BackUp32. У этой программы длинная история, а в настоящее время она уже не поддерживается. Но свою работу по архивированию базы данных 1С программа BackUp32 делает отлично.

Программа BackUp32 для архивирования базы данных 1С
Программа BackUp32 для архивирования базы данных 1С.

Главное преимущество программы BackUp32, как для меня, выражается в возможности управлять программой через командную строку. Почему это удобно? Для пользователя работа с командной строкой выражается в том, что на Рабочий стол можно повесить обычный ярлычок со ссылкой на командный файл. И для того, чтобы сделать очередной архив, пользователю достаточно просто дважды кликнуть на ярлычке программы, а все необходимые операции по архивированию файлов базы данных программа сделает самостоятельно. Так можно делать архив базы данных в конце рабочего дня перед уходом домой.

Если есть желание, чтобы архивирование базы данных выполнялось автоматически, то в планировщике заданий Windows можно добавить задание. Такое задание будет запускать программу BackUp32 по рабочим дням. Время выполнения задания желательно поставить такое, чтобы в это время гарантированно никого в базе данных не было. Даже в терминальном режиме.

Если вы будете использовать программу BackUp32, то для того, чтобы правильно выполнить архивацию базы данных 1С, вам не придётся думать. Достаточно будет запустить ярлычок на Рабочем столе. Единственное, о чём вам придётся задумываться, - это о том, чтобы своевременно выполнять архивацию. Но с программой BackUp32 архивирование будет доставлять вам удовольствие. А о личном удовольствии вы не забудете никогда.

Эпилог

Я не знаю, какими методами вы будете проводить архивирование базы данных и какую программу вы выберите для архивации. Могу просить вас только об одном. Не забывайте своевременно делать архивные копии базы данных.

Реклама:
Смотрите также:
Метаданные 1С и методы работы с ними
Расходная накладная
Расчёт себестоимости импортных товаров