Выгрузка из конфигурации 1С: Предприятие 7.7 + SQL SERVER 2005 с работающими пользователями


Методика получения выгрузки средствами 1С, конфигурации 1С: Предприятие 7.7 + SQL SERVER 2005 с работающими пользователями.

Задача

Недавно у меня появилась задача автоматически получать выгрузку из конфигурации 1С: Предприятие 7.7 Конфигурация крутиться на SQL SERVER 2005. Причем нужна именно ВЫГРУЗКА полученная средствами 1С. В дальнейшем выгрузка используется другими сотрудниками, но для нашей задачи это неважно...

Итак, есть задача и есть проблемы:

1) База используется круглые сутки

2) Если выгнать всех пользователей из конфигурации, то выгрузка базы занимает около 30-40 минут, а это недопустимо...

3) Выгрузка должна осуществляться в атоматическом режиме

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

Ну т.е. из командной строки запускать типа:

"d:\Program Files\1Cv77\Bin\1cv7s.exe" CONFIG /D\MyServerMyDB /NИмяПользователя /PПароль /@E:\Backup\ИмяФайлаПакетногоРежима

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

После долгого обдумывания проблемы появилось решение. Если вкратце: делаем копию папки с конфигурацией, делаем копию базы данных SQL SERVER средствами SQL SERVER, выполняем пакетный запуск 1С для выгрузки базы-копии, получаем выгрузку. Итак, подробно:

Решение:

Условно, введем обозначения:

PathWorkDB - путь к конфигурации 1С: Предприятия 7.7

WorkDB - работающая база данных SQL SERVER'a для конфигурации которая находится в PathWorkDB

PathTempWorkDB - путь к временной конфигурации-копии PathWorkDB и базой данных TempDB

TempDB - временная база данных SQL SERVER'a для конфигурации которая находится вPathTempWorkDB

Последовательность действий:

Шаг 1. Делаем резервную копию  рабоающей базы данных WorkDB средствами SQL SERVER (позволяет с работающей базой делать ее копию)

Шаг 2. Восстанавливаем резервную копию SQL SERVER в базу данных TempDB(тут уж нам все равно кто и с чем работает)

Шаг 3. Копируем все нужные файлы конфигурации из PathWorkDB в папку PathTempWorkDB (*.md, *.dds, *.cfg, users.usr)

Шаг 4. Запускаем выгрузку используя пакетный запуск 1С для конфигурации PathTempWorkDB (так как в базе Temp никто не работает, то в ней запуск в пакетном режиме спокойно будет работать сколько надо и как угодно долго)

Шаг 3 и Шаг 4 можно объединить, что мы и сделаем далее... Поместим всю эту последовательность действий в задание SQL SERVER'a

Создадим задание Агента SQL SERVER

Агент SQL SERVER > Задание > Создать задание.

На вкладке шаги создадим три шага (см. картинки и прикрепленные файлы). Установим расписание для задания и лучше его поставить ночью, т.к. нагрузка на SQL SERVER, меньше именно ночью.

Нюансы:

ВНИМАНИЕ: Попытайтесь проделать все это на других конфигурациях и базах SQL Server, где никто не будет работать.

Сначала необходимо проделать все операции вручную. Создать нужные папки, скопировать файлы, произвестим выгрузку, загрузку базы в SQL SERVER. ВАЖНО! Не забываем установить во временной конфигурации используемую БД - TempDB!!! Замечу: на шаге 3 мы не копируем файл *.dda - это файл с настройкам подключения к базе данных SQL SERVER. Мы его установим вручную, а потом не будем трогать.

Для создания резервной копии базы SQL SERVER'a лучше использовать "Устройство резервного копирования", пусть название не пугает, на самом деле это один файл куда записываются все резеврные копии. Создайте устройство:

Объекты сервера>Устройства резервного копирования>Создать устройство резерного копирования

У меня оно называется "Archive". В скриптах соответсвтенно это название и использвуется.

Запускать задание необходимо на машине с SQL SERER'ом.

Послесловие: 

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

Файлы обработки:

-