Серверная копия 1С без чужих обменов и рассылок: ставим отметку «это копия»

· 9 мин

Содержание

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

Оба механизма нужны для одного: чтобы тестовая или учебная копия рабочей базы не отправляла письма клиентам, не забирала документы из ЭДО, не выгружала данные в обмены и не дергала банк. Первый механизм — часть Библиотеки стандартных подсистем (БСП), он есть в БП 3.0, ЗУП 3.1, УТ 11, ERP и других современных конфигурациях. Второй — свойство самой платформы и от конфигурации не зависит.

Как 1С понимает, что база стала копией

Конфигурации на БСП хранят внутри базы строку соединения, под которой база работала последний раз. Для серверной базы это строка вида Srvr="srv-1c";Ref="buh";. При запуске программа сравнивает сохранённую строку с текущей.

Если они различаются, значит базу:

  • 📦 восстановили из выгрузки .dt под другим именем или на другом сервере;
  • 🗄️ развернули из бэкапа СУБД и зарегистрировали в другом кластере;
  • 🔁 переименовали в кластере или перенесли на новый сервер насовсем.

Платформа не может отличить «перенесли насовсем» от «сделали копию для тестов». Поэтому БСП блокирует работу с внешними ресурсами и спрашивает администратора. Пока он не ответит, регламентные задания, которые ходят наружу, не выполняются: синхронизация данных, загрузка писем и их отправка, обмен с банком, загрузка курсов и подобное.

Отсюда и два ответа в диалоге:

КнопкаЧто делаетКогда выбирать
Это копия информационной базыОставляет блокировку внешних ресурсовТестовая, учебная, отладочная база
Информационная база перемещенаСнимает блокировку, запоминает новую строку соединенияРабочую базу перенесли на новый сервер

Ошибка в выборе стоит дорого: если на копии нажать «перемещена», она начнёт параллельно с рабочей базой выгружать данные в узлы обмена и отправлять почту.

Ставим признак копии при первом запуске

Это основной способ, и для большинства случаев его достаточно.

Шаг 1. Зарегистрируйте копию в кластере

Создайте копию любым удобным способом (о вариантах — ниже) и добавьте базу в кластер. В консоли администрирования серверов при создании информационной базы отметьте флажок Установить блокировку регламентных заданий. Он страхует на время, пока вы не зашли в базу под администратором.

Шаг 2. Добавьте базу в список и войдите администратором

В окне запуска нажмите Добавить, выберите вариант «На сервере 1С:Предприятия», укажите кластер и имя базы. Запускайте режим 1С:Предприятие под пользователем с полными правами. Обычный пользователь диалог не увидит — БСП показывает его только администратору.

Шаг 3. Ответьте на вопрос о перемещении

Появится форма с сообщением о том, что информационная база была перемещена или восстановлена из резервной копии, а работа с внешними ресурсами по расписанию заблокирована. Нажмите Это копия информационной базы.

Признак сохранится в самой базе. При следующих запусках вопрос не повторится, а блокировка останется.

Шаг 4. Проверьте, что лишнее не работает

Откройте Администрирование → Обслуживание и перейдите к регламентным и фоновым заданиям. В копии вы увидите предупреждение о том, что работа с внешними ресурсами заблокирована. Отдельно проверьте почтовые учётные записи и настройки обменов: пароли там сохраняются, и при ручном запуске обмен всё равно пройдёт.

Блокировка БСП касается работы по расписанию. Кнопку «Синхронизировать» или «Отправить» пользователь нажать по-прежнему может. В учебных копиях лучше сразу удалить пароли почты и ЭДО или сменить адрес сервера обмена на заведомо несуществующий.

Ещё одна привычка практиков — сразу поменять заголовок программы в копии. В Администрирование → Общие настройки впишите, например, «ТЕСТ — копия от 05.10». Надпись видна в заголовке окна, и никто не начнёт вводить реальные документы не в ту базу.

Флаг блокировки на стороне кластера: консоль и rac

Этот уровень от конфигурации не зависит и работает даже в старых или самописных базах без БСП. Платформа просто не запускает регламентные задания этой базы на сервере.

Через консоль администрирования серверов

  1. Откройте консоль, разверните Кластеры → <ваш кластер> → Информационные базы.
  2. Правой кнопкой по базе → Свойства.
  3. Введите логин и пароль администратора информационной базы (не кластера).
  4. Отметьте Блокировка регламентных заданий включена и нажмите ОК.

Снимается флажок там же. Изменение применяется сразу, перезапускать службу не нужно.

Через 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

  1. Сделайте полную резервную копию рабочей базы (BACKUP DATABASE) или возьмите последний ночной бэкап.
  2. Восстановите её под новым именем, например buh_test, с переносом файлов .mdf и .ldf в другие пути.
  3. В консоли кластера создайте информационную базу с тем же именем базы данных на сервере СУБД. Флажок Создать базу данных в случае её отсутствия не ставьте, флажок Установить блокировку регламентных заданий — поставьте.
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

  1. Снимите дамп рабочей базы: pg_dump -U postgres -Fc -f buh.backup buh.
  2. Создайте пустую базу: createdb -U postgres buh_test.
  3. Восстановите: pg_restore -U postgres -d buh_test buh.backup.
  4. Зарегистрируйте базу в кластере так же, как для MS SQL.

Для 1С используйте сборку PostgreSQL, адаптированную под 1С:Предприятие, и одну и ту же её версию на источнике и приёмнике. Имя базы данных в PostgreSQL пишите строчными буквами — так меньше проблем с регистром при регистрации в кластере.

Способ копииКогда удобенНа что смотреть
.dt через Конфигуратор или 1cv8Небольшие базы, разная СУБД у источника и копииНужен монопольный доступ к оригиналу
Бэкап MS SQLБольшие базы на MS SQLНовые имена файлов при восстановлении
pg_dump / pg_restoreБольшие базы на PostgreSQLОдинаковая версия сборки для 1С

Если признак не ставится или ставится не туда

Чаще всего проблемы связаны с правами, с тем, что строка соединения не изменилась, или с ошибочным ответом в диалоге.

Диагностика: выберите симптом

Если для исправления понадобится перезапустить службу агента сервера 1С, все сеансы пользователей на этом сервере оборвутся. Предупредите людей и выберите время вне рабочего дня.

Вопросы, которые задают после копирования

Нужно ли ставить признак копии на базу, которая переехала на новый сервер?
Нет. Для переезда выбирают «Информационная база перемещена». Признак копии оставит рабочую базу без обменов и почты по расписанию.
Сохранится ли признак копии, если выгрузить копию в .dt и развернуть ещё раз?
Признак хранится в данных базы и переезжает вместе с ними. Но в новом месте строка соединения снова поменяется, и при первом входе программа спросит заново.
Блокирует ли признак копии ручной обмен?
Нет. Он останавливает только работу с внешними ресурсами по расписанию. Ручная синхронизация и отправка письма кнопкой проходят, поэтому пароли в тестовой копии лучше удалить.
Работает ли флаг блокировки в кластере для файловых баз?
Нет, это свойство информационной базы на сервере 1С. В файловой базе есть только признак копии БСП.
Влияет ли признак копии на лицензии?
Нет. Копия на сервере потребляет клиентские лицензии так же, как любая другая база, при подключении пользователей.