Версия для печати темы (https://pro1c.org.ua/index.php?s=3c3cacdb6fd630145ce5b04564f19770&showtopic=65977)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Администрирование и настройка 1С _ Выгрузка информационной базы

Автор: imaddy 20.04.21, 15:34

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

"C:\Program Files (x86)\1cv8\common\1cestart.exe" CONFIG /S "192.168.11.12\BUHGAL_TV_83_2021" /N "Admin" /P "'njgfhjkm" /DumpIB "E:\TRANSFER_BACKUP_dt_1C\BUHGAL\BUHGAL_TV_83_2021-%date%.dt"

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

Автор: Petre 20.04.21, 16:37

Вам нужна выгрузка или бекап?

Автор: imaddy 20.04.21, 16:55

Petre @ Сегодня, 16:37 * ,
Выгрузка. Вообще, для меня выгрузка и является в какой-то мере бекапом.

Автор: logist 20.04.21, 18:16

Посмотрите свою конфигурацию, если она из типовых там должно быть что-то типа "Блокировка работы пользователей" и/или "Завершение работы пользователей", настройте на какое-то время, и сделайте скрипт который средствами sql будет делать бекап, и добавьте его в cron. Как по мне это лучшее решение для бекапа, единственный его минус это то, что развернуть его можно будет в такой же среде.
Вариант второй - из винды, у 1С есть com-объект который работает с консолью серверов, можете создать в 1с функцию которая будет отключать все сеансы (кроме текущего), блокировать базу и собственно запускать какой-то bat-файл в котором будет выполнятся выгрузка, затем разблокировка базы. И потом это всё запускать в планировщике. Но как показывает практика какая-то часть такой цепочки может иногда сбоить, по разным причинам.
Вариант третий, он же по сути первый, который используют чаще всего - обычный sql бэкап, без всяких отключений и т.п., в то время когда база в простое, и нет регл. заданий.

Автор: imaddy 20.04.21, 21:44

logist @ Сегодня, 18:16 * ,
Благодарю за ответ. В этом то и проблема, что бекап в Linux я без проблем могу сделать и настроить, но нашим бухгалтерам иногда нужен бекап, который можно развернуть в винде, они что-то там шаманят потом. А так можно сделать только делая выгрузку из-под винды. Не нужна была бы им выгрузка, которая в винде разворачивается - я бы вообще не задавался этим вопросом.
Буду пробовать второй вариант, правда я в 1С не силен (если быть точнее, то у меня практически нет опыта в администрировании 1С). До меня сисадмины пытались как-то настроить и сделать автоматический бекап, так и не смогли ничего сделать и забивали. Был бы очень благодарен, если бы вы подсказали как вообще выглядит этот com-объект и как создается функция по отключению сеансов.
На одном сайте нашел решение

Скрипт позволяет произвести выгрузку информационной базы 1С клиент-серверного варианта.
1. Открываем блокнот, вписываем туда следующий код:

chcp 1251
start /wait /d"C:\Program Files\1cv82\8.2.19.83\bin\" 1cv8.exe ENTERPRISE /S ИмяСервера\ИмяБазы /N Логин /P Пароль /DisableStartupMessages /C ЗавершитьРаботуПользователей
start /wait /d"C:\Program Files\1cv82\8.2.19.83\bin\" 1cv8.exe DESIGNER /S ИмяСервера\ИмяБазы /N Логин /P Пароль /UCКодРазрешения /DumpIB "D:\BuhCopy_%date:~-10%.dt" /DumpResult "D:\Read_%date:~-10%.txt"
start /wait /d"C:\Program Files\1cv82\8.2.19.83\bin\" 1cv8.exe ENTERPRISE /S ИмяСервера\ИмяБазы /N Логин /P Пароль /C РазрешитьРаботуПользователей /UCКодРазрешения
exit

2. Заменяем, что выделено жирным шрифтом - у каждого это свои параметры. Сохраняем файл.

3. Меняем расширение файла с *txt на *bat и сохраняем.

После чего можно протестировать данный батник на работоспособность, открыв его.

Скрипт должен выполнить следующие действия:

- заходит в базу под пользователем (пользователь должен иметь полные права), блокирует базу и завершает работу пользователей, выходит;

- заходит в заблокированную базу под пользователем, введя код (пользователь должен иметь полные права), делает файл *dt, пишет результат выполнения выгрузки в файл *txt и сохраняет его, выходит;

- заходит в базу под пользователем (пользователь должен иметь полные права), снимает блокировку базы, выходит;

4. После успешного тестирования можно повесить данный файлик на планировщика заданий по расписанию.

Правда мне тут не совсем понятно где там указан параметр, который как раз таки отвечает за завершение сеансов, неужели "/C ЗавершитьРаботуПользователей"?

Автор: logist 20.04.21, 22:34

Цитата(imaddy @ 20.04.21, 22:44) *
подсказали как вообще выглядит этот com-объект и как создается функция по отключению сеансов.

Вы нигде не указали какая у вас конфигурация, поэтому разбирайтесь самостоятельно (в БСП это точно есть) - вам нужны общие модули которые называются АдминистрированиеКластера... разработчик без труда разберется что там к чему.

Цитата(imaddy @ 20.04.21, 22:44) *
Правда мне тут не совсем понятно где там указан параметр, который как раз таки отвечает за завершение сеансов, неужели "/C ЗавершитьРаботуПользователей"?

Опять же, всё зависит от конфигурации, если в ней есть поддержка ключа "ЗавершитьРаботуПользователей", но этот механизм не гарантирует что сеансы на сервере будут безоговорочно завершены, в разных конфигурациях могут быть разные косяки которые не дадут нормально завершиться сеансу, некоторые конфигурации управляемых форм с поддержкой модальности могут препятствовать нормальному завершению сеансов.
Но для вас это может быть самым простым вариантом, настройте его, понаблюдайте, если выгрузки нормально делаются - пользуйтесь, если таки будут постоянные проблемы - надо будет выбирать другой вариант. Вообще, чтобы уже наверняка, если бекап делается ночью, можете сделать такой подход (разделите скрипт на части) - запустите блокировку работы пользователей в 2 ночи, в 2:30 перезапустите сервер 1с (systemctl stop srv1cv83.service && systemctl start srv1cv83.service или как-то так, смотрите как у вас называется), в 3 ночи запустите собственно саму выгрузку, посмотрите сколько длиться, например час и в 4 запустите разблокировку. Это всё даст 30 минут на штатное завершение работы, перезапуск сервера по идее должен отвалить зависшие сеансы, а отдельный запуск разблокировки позволит разблокировать базу однозначно если что-то пошло не так.

Автор: zay 21.04.21, 7:47

Поставьте в начале скрипта

rem -- Убивам процесс 1С если он такой есть
taskkill /f /im 1cv8c.exe
taskkill /f /im 1cv8.exe

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

Автор: Vofka 21.04.21, 15:19

zay, процесс ведь может быть не на этом компьютере.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua