>
Портленд
info@pmkt.ru +7 495 960 7701
Пн-Пт 09:00-18:00
Каталог
Добыча и переработка
Поиск

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


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

За основу написания был взят скрипт, который обновляет базу 1с и доработан. Его удобство в том, что все действия выполняются последовательно, только при окончании предыдущего шага.

Этот скрипт подходит и для sql и для файловых версий. Предназначен для ОС Windows. Кто-то скажет, если стоит SQL можно делать дампы средствами БД. Но тут я вижу два минуса. Первый у вас накрывается сервер с SQL и вам нужно искать другой компьютер, с версией, в которую можно загрузить дамп. Второе выгрузка в DT больше сживает место, чем выгрузка SQL. Файл выгрузки dt в большинстве случаем можно развернуть в файловом варианте.


Ссылки для скачивания:

1. Скрипт архивации базы 1с

2. Расширение 1с для завершения работы пользователей


Состав

Вот список файлов, содержащийся в архиве (сразу скажу, что никаких вирусов тут нет, весь код открытый)


1.       Log – Папка в которой ведутся лог файлы выполненных операций

2.       Bases.js – файл со списком баз, которые будем архивировать

3.       ftp.txt – команда сохранения баз на фтп ( с помощью программы WinSCP)

4.       helper.js – файл  вспомогательных функций

5.       main.js – основной файл с кодом

6.       progress.gif, splash.ico, splash.png – картинки оформления

7.       splash.hta – основной файл запуска

8.       start.bat, stop.bat – файлы запуска и остановки службы IIS (если у вас апатч, то думаю вы легко его переделаете net start, net stop "<имя службы>" - остановка конкретной службы, пример, net stop "Apache2.4")

9.       templog.txt – файл, куда 1с пишет результат выгрузки и мы его транслируем в лог файл (пункт 1)

 

Разберемся как это работает

Файл splash.hta.

Открываем запускаемый файл splash.hta в текстовом редакторе.

Функция main запускает выполнение шагов doStep.

Шаги:

1.  

 

Шаг 1 – вывод на экран и в лог сообщение о начале архивации и завершении сеансов

Шаг 2 – завершение процессов (файловой версии баз)

Шаг 3 – Запись в лог информации о начале архивации

Шаг 4 – Сама архивация баз

Шаг 5 – Копирование архивов на удаленный ftp (если вам не нужно копирование на фтп, вы комментируете данную строку, а уберите комментарий с ret=0)

Шаг 6 - Запись информации о завершении архива

Шаг 7 – финализация и закрытие скрипта

В этом файле остальное большого интереса не представляет.

Файл bases.js.

Содержание файла


Тут нас интересуют строки infoBasePath[0], infoBasePath[1], infoBasePath[2] и т.д.

Где мы указываем базы, каждый раз добавляя единичку в элемент массива.

infoBasePath – Путь к базе

ArchiveFileName – Путь, куда будем делать архивы

adminName – Имя пользователя в базу

InfoBasePassword – Пароль в базу

Добавляем столько базу, сколько нужно. Пример заполнения SQL варианта закомментирован.

 

Файл main.js.

В самом начале файла описаны пути до важных файлов


outFileName – Путь, куда мы записываем лог файлы.

v8conf – Путь до платформы 1с, НЕ забываем менять его после смены платформы.

arch_path – Путь, куда мы делаем архивы

winscp – Путь до программы WinSCP для архивации на ftp. Ее вы можете скачать в интернете https://winscp.net/eng/download.php

winscp_script – Путь до файла ftp.txt из нашего архива

kill_proc – Флаг, нужно ли завершать процессы 1с, на компьютере, где запускается скрипт (при работе в терминальном режиме). 0 – нет, 1 – да.


Файл ftp.txt. Архивация на sftp, webDAV, S3.

Содержание:


Тут нужно прописать login_ftp -пользователь на фтп сервер

password_ftp – пароль на фтп

server_adress_ftp – адрес сервера фтп (пример mysite.ru)

Копируем из d:\archive1c\* на диске в папку  /archive1c_dt/ на ftp. Только новые файлы.

Файл выполняется программой WinSCP и поэтому его можно легко переделать на другие протоколы: sftp,  WebDAV, S3 Amazon, SCP.

ПС: Выгрузка через протокол WebDAV на yandex.disk не работает.

Яндекс ограничил заливку больших файлов, чтоб хранилище не использовалось для архивов. Выгрузка зависает после перемещения 10-30 мегабайт.

 

Скрипт архивации баз 1с от pmkt.

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

D:\archive_script

Архивы делаются в

D:\archive1c

Лог пишется в D:\archive_script\log

 

Почти всё

 

А почему почти?! При работе в Серверном варианте нужно еще выкидывать пользователей через агента сервера.

Это я сделал расширением 1с. Так как это нужно только пользователям SQL версий. И возможно это пригодится еще для каких-либо случаев, когда нужно быстро выгнать пользователей из базы.

Чтоб не снимать конфигурацию с поддержки мы возьмем и привяжемся к типовому регламентному заданию. Я выбрал «Загрузку курса валют», т.к. эта процедура запускается 1 раз в день. И ее можно делать ночью.


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

И вам после установки нужно будет создать пользователя и прописать его в функции завершить. Он нужен для подключения к базе в агенте сервера, без авторизации вы этого сделать не сможете. Это не очень безопасно.


Далее находим задание загрузки курса валют, указываем пользователя, прописанного в коде.

 

Далее нужно у всех других фоновых заданий изменить время запуска. Например, мы хотим делать архивацию в 3 часа ночи, nо ставим в расписании запуск позже 3-х часов ночи.


Осталось создать задание в планировщике заданий windows. Сначала останавливаем службу IIS (если она  у вас есть), далее запускаем скрипт и запускаем заново службу IIS



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

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

Популярные товары

Написать нам в Telegram