Серверная копия 1С без чужих обменов и рассылок: ставим отметку «это копия»
Содержание
Признак копии для серверной базы 1С устанавливают при первом входе в неё под администратором: программа сама показывает предупреждение о перемещении базы, и в нём нужно нажать Это копия информационной базы. Дополнительно, на уровне сервера, в свойствах базы в консоли кластера включают флажок Блокировка регламентных заданий включена — тогда копия не запустит ни одного фонового обмена ещё до того, как в неё кто-то зайдёт.
Оба механизма нужны для одного: чтобы тестовая или учебная копия рабочей базы не отправляла письма клиентам, не забирала документы из ЭДО, не выгружала данные в обмены и не дергала банк. Первый механизм — часть Библиотеки стандартных подсистем (БСП), он есть в БП 3.0, ЗУП 3.1, УТ 11, ERP и других современных конфигурациях. Второй — свойство самой платформы и от конфигурации не зависит.
Как 1С понимает, что база стала копией
Конфигурации на БСП хранят внутри базы строку соединения, под которой база работала последний раз. Для серверной базы это строка вида Srvr="srv-1c";Ref="buh";. При запуске программа сравнивает сохранённую строку с текущей.
Если они различаются, значит базу:
- 📦 восстановили из выгрузки
.dtпод другим именем или на другом сервере; - 🗄️ развернули из бэкапа СУБД и зарегистрировали в другом кластере;
- 🔁 переименовали в кластере или перенесли на новый сервер насовсем.
Платформа не может отличить «перенесли насовсем» от «сделали копию для тестов». Поэтому БСП блокирует работу с внешними ресурсами и спрашивает администратора. Пока он не ответит, регламентные задания, которые ходят наружу, не выполняются: синхронизация данных, загрузка писем и их отправка, обмен с банком, загрузка курсов и подобное.
Отсюда и два ответа в диалоге:
| Кнопка | Что делает | Когда выбирать |
|---|---|---|
Это копия информационной базы | Оставляет блокировку внешних ресурсов | Тестовая, учебная, отладочная база |
Информационная база перемещена | Снимает блокировку, запоминает новую строку соединения | Рабочую базу перенесли на новый сервер |
Ошибка в выборе стоит дорого: если на копии нажать «перемещена», она начнёт параллельно с рабочей базой выгружать данные в узлы обмена и отправлять почту.
Ставим признак копии при первом запуске
Это основной способ, и для большинства случаев его достаточно.
Шаг 1. Зарегистрируйте копию в кластере
Создайте копию любым удобным способом (о вариантах — ниже) и добавьте базу в кластер. В консоли администрирования серверов при создании информационной базы отметьте флажок Установить блокировку регламентных заданий. Он страхует на время, пока вы не зашли в базу под администратором.
Шаг 2. Добавьте базу в список и войдите администратором
В окне запуска нажмите Добавить, выберите вариант «На сервере 1С:Предприятия», укажите кластер и имя базы. Запускайте режим 1С:Предприятие под пользователем с полными правами. Обычный пользователь диалог не увидит — БСП показывает его только администратору.
Шаг 3. Ответьте на вопрос о перемещении
Появится форма с сообщением о том, что информационная база была перемещена или восстановлена из резервной копии, а работа с внешними ресурсами по расписанию заблокирована. Нажмите Это копия информационной базы.
Признак сохранится в самой базе. При следующих запусках вопрос не повторится, а блокировка останется.
Шаг 4. Проверьте, что лишнее не работает
Откройте Администрирование → Обслуживание и перейдите к регламентным и фоновым заданиям. В копии вы увидите предупреждение о том, что работа с внешними ресурсами заблокирована. Отдельно проверьте почтовые учётные записи и настройки обменов: пароли там сохраняются, и при ручном запуске обмен всё равно пройдёт.
Блокировка БСП касается работы по расписанию. Кнопку «Синхронизировать» или «Отправить» пользователь нажать по-прежнему может. В учебных копиях лучше сразу удалить пароли почты и ЭДО или сменить адрес сервера обмена на заведомо несуществующий.
Ещё одна привычка практиков — сразу поменять заголовок программы
в копии. В Администрирование → Общие настройки впишите, например, «ТЕСТ — копия от 05.10». Надпись видна в заголовке окна, и никто не начнёт вводить реальные документы не в ту базу.
Флаг блокировки на стороне кластера: консоль и rac
Этот уровень от конфигурации не зависит и работает даже в старых или самописных базах без БСП. Платформа просто не запускает регламентные задания этой базы на сервере.
Через консоль администрирования серверов
- Откройте консоль, разверните
Кластеры → <ваш кластер> → Информационные базы. - Правой кнопкой по базе →
Свойства. - Введите логин и пароль администратора информационной базы (не кластера).
- Отметьте
Блокировка регламентных заданий включенаи нажмитеОК.
Снимается флажок там же. Изменение применяется сразу, перезапускать службу не нужно.
Через rac из командной строки
Удобно, если копий много или их пересоздают по расписанию. Сначала узнайте идентификаторы кластера и базы:
rac srv-1c:1545 cluster list
rac srv-1c:1545 infobase summary list --cluster=<uuid-кластера>
Затем включите блокировку:
rac srv-1c:1545 infobase update --cluster=<uuid-кластера> ^
--infobase=<uuid-базы> --infobase-user=Admin --infobase-pwd=*** ^
--scheduled-jobs-deny=on
Порт 1545 — порт сервера администрирования ras, который должен быть запущен. Если для кластера задан администратор, добавьте его логин и пароль параметрами --cluster-user и --cluster-pwd. Полный список параметров выводит rac help infobase.
| Уровень | Что блокирует | Чем снимается |
|---|---|---|
| Признак копии БСП | Обмены, почту и другую работу с внешними ресурсами по расписанию | Повторным ответом «перемещена» или настройкой в обслуживании |
| Флаг кластера | Все регламентные задания базы, включая внутренние | Флажком в свойствах базы или --scheduled-jobs-deny=off |
Для тестовых копий разумно включать оба: флаг кластера закрывает окно до первого входа, признак БСП переживёт пересоздание базы в другом кластере.
Копия через 1cv8: выгрузка .dt и разворачивание
Если копию делают средствами платформы, всё можно собрать в один bat-файл. Выгрузка из рабочей базы:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv-1c\buh" ^
/N"Admin" /P"***" /DumpIB"D:\backup\buh.dt" /Out"D:\backup\dump.log"
Загрузка в заранее созданную пустую базу-копию:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv-1c\buh_test" ^
/N"Admin" /P"***" /RestoreIB"D:\backup\buh.dt" /Out"D:\backup\restore.log"
Номер платформы в пути подставьте свой. После загрузки .dt пользователи и их пароли приходят из рабочей базы, поэтому /N и /P для копии — те же, что в оригинале.
Выгрузка .dt требует монопольного доступа к рабочей базе: все сеансы пользователей придётся завершить. Делайте это вне рабочего времени. Загрузка .dt полностью заменяет данные базы, в которую грузите, — дважды проверьте имя базы после /S.
Командная строка 1cv8 сама признак копии не ставит. Её задача — создать базу. Отметку ставят на первом входе (шаг 3 выше) или флагом кластера через rac в том же скрипте.
Почему не стоит править признак SQL-запросом
Иногда предлагают найти признак прямо в таблицах СУБД и поменять его запросом. На практике это плохая идея:
- 🔒 строка соединения хранится в константе БСП в сериализованном виде, во внутреннем формате хранилища значения, а не обычным текстом;
- 🧩 имена таблиц в СУБД служебные (
_Const…,_Reference…) и различаются от базы к базе; - 💥 ошибка в двоичных данных может сломать запуск конфигурации, а платформа о такой правке ничего не узнает.
Задача решается штатно за минуту, поэтому прямые запросы к таблицам 1С здесь не нужны. SQL пригодится на другом этапе — при самом копировании базы средствами СУБД.
Ещё одно заблуждение — что признак копии задаётся в конфигурационных файлах сервера. В файлах каталога conf платформы (conf.cfg, dbmscfg.ini и других) такой настройки нет. Признак живёт в данных конкретной информационной базы, а блокировка регламентных заданий — в реестре кластера.
Копия средствами PostgreSQL и MS SQL
Для больших баз выгрузка .dt идёт часами, и копию снимают средствами СУБД. Порядок для обеих СУБД одинаковый: скопировать базу данных
→ зарегистрировать её в кластере → поставить признак.
MS SQL Server
- Сделайте полную резервную копию рабочей базы (
BACKUP DATABASE) или возьмите последний ночной бэкап. - Восстановите её под новым именем, например
buh_test, с переносом файлов.mdfи.ldfв другие пути. - В консоли кластера создайте информационную базу с тем же именем базы данных на сервере СУБД. Флажок
Создать базу данных в случае её отсутствияне ставьте, флажокУстановить блокировку регламентных заданий— поставьте.
RESTORE DATABASE buh_test
FROM DISK = N'D:\sqlbackup\buh_full.bak'
WITH MOVE N'buh' TO N'E:\SQLData\buh_test.mdf',
MOVE N'buh_log' TO N'E:\SQLData\buh_test_log.ldf',
RECOVERY;
Логические имена файлов (buh, buh_log) у вас могут быть другими. Их показывает RESTORE FILELISTONLY FROM DISK = ....
PostgreSQL
- Снимите дамп рабочей базы:
pg_dump -U postgres -Fc -f buh.backup buh. - Создайте пустую базу:
createdb -U postgres buh_test. - Восстановите:
pg_restore -U postgres -d buh_test buh.backup. - Зарегистрируйте базу в кластере так же, как для MS SQL.
Для 1С используйте сборку PostgreSQL, адаптированную под 1С:Предприятие, и одну и ту же её версию на источнике и приёмнике. Имя базы данных в PostgreSQL пишите строчными буквами — так меньше проблем с регистром при регистрации в кластере.
| Способ копии | Когда удобен | На что смотреть |
|---|---|---|
.dt через Конфигуратор или 1cv8 | Небольшие базы, разная СУБД у источника и копии | Нужен монопольный доступ к оригиналу |
| Бэкап MS SQL | Большие базы на MS SQL | Новые имена файлов при восстановлении |
pg_dump / pg_restore | Большие базы на PostgreSQL | Одинаковая версия сборки для 1С |
Если признак не ставится или ставится не туда
Чаще всего проблемы связаны с правами, с тем, что строка соединения не изменилась, или с ошибочным ответом в диалоге.
Если для исправления понадобится перезапустить службу агента сервера 1С, все сеансы пользователей на этом сервере оборвутся. Предупредите людей и выберите время вне рабочего дня.