Скрипт для автоматической архивации базы 1с и выгрузки на ftp.
Эта статья для тех, кто ведёт несколько баз 1с и хотел бы в случае каких-либо сбоев всегда под рукой иметь выгрузку баз. Сразу скажу все описанное в данной статье бесплатное и в открытом доступе. При этом вы можете обратиться к нам за услугой размещения ваших баз на наших серверах с их обновлением и архивацией на нашей стороне, и всё за весьма скромную плату. Контакты в шапке сайта - обращайтесь.
За основу написания был взят скрипт, который обновляет базу 1с и доработан. Его удобство в том, что все действия выполняются последовательно, только при окончании предыдущего шага.
Этот скрипт подходит и для sql и для файловых версий. Предназначен для ОС Windows. Кто-то скажет, если стоит SQL можно делать дампы средствами БД. Но тут я вижу два минуса. Первый у вас накрывается сервер с SQL и вам нужно искать другой компьютер, с версией, в которую можно загрузить дамп. Второе выгрузка в DT больше сживает место, чем выгрузка SQL. Файл выгрузки dt в большинстве случаем можно развернуть в файловом варианте.
Ссылки для скачивания:
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С
Также у вас есть возможность заработать на партнерской программе, приводя клиентов и получая комиссию с их покупок.