Рабочая база или копия: по каким следам это видно в 1С

· 10 мин

Содержание

Быстрее всего копию выдаёт строка соединения: откройте Справка → О программе (знак вопроса в правом верхнем углу) и посмотрите, где лежит база. Если путь File= ведёт не туда, где хранится рабочая база, или в Srvr=/Ref= указан другой сервер или другое имя, — перед вами копия. Второй надёжный признак — журнал регистрации, который начинается с даты загрузки файла выгрузки.

Типичная ситуация: в списке баз у бухгалтера три строки «Бухгалтерия предприятия», одна из них — тестовая копия программиста месячной давности. Человек два дня проводит документы не там, а потом ищет их в рабочей базе. Отличить копию можно за пару минут, если знать, куда смотреть.

Где физически лежит база: строка соединения и окно «О программе»

Строка соединения — это адрес базы. Две разные базы не могут иметь одинаковый адрес, поэтому сравнение адресов решает вопрос в большинстве бытовых случаев.

Где её посмотреть:

  1. 🔎 В окне запуска 1С выделите базу — внизу окна показан путь или сервер с именем базы.
  2. 🔎 Внутри программы — Справка → О программе, строка «Информационная база».
  3. 🔎 В списке баз через кнопку Изменить — там видно, файловая база или серверная и какие параметры.

Как читать результат:

Вид базыЧто в строкеПризнак копии
ФайловаяFile="D:\1C\Buh"Каталог отличается от рабочего: Copy, Test, Buh_old, папка на рабочем столе или флешке
Клиент-сервернаяSrvr="srv1c";Ref="buh"Другое имя базы (buh_test, buh_copy) или другой сервер
Веб-публикацияws="http://…"Публикация смотрит на другую базу — проверять на сервере

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

Если адрес выглядит «правильным», но сомнения остались (например, базу недавно перенесли на новый сервер), переходите к журналу регистрации.

Журнал регистрации как свидетель копирования

Журнал регистрации хранится не внутри данных базы, а рядом с ней. У файловой базы это папка 1Cv8Log в каталоге базы. У серверной — каталог базы в служебной папке кластера (srvinfo\reg_1541\<идентификатор базы>\1Cv8Log).

Отсюда главный признак. При выгрузке в файл .dt журнал не переносится. Значит, у базы, развёрнутой из .dt, история событий начинается с момента загрузки, хотя документы в ней лежат за несколько лет.

Что сделать:

  1. Откройте Администрирование → Обслуживание → Журнал регистрации (в БП 3.0, ЗУП 3.1, УТ 11).
  2. Отсортируйте по дате по возрастанию и посмотрите самую раннюю запись.
  3. Установите отбор по событиям группы «Информационная база» — среди них есть загрузка и выгрузка базы.

Как трактовать:

  • 📅 Первая запись журнала — вчера, а документы ведутся с 2019 года → базу недавно развернули из выгрузки. Это либо копия, либо перенесённая рабочая база.
  • 📤 В журнале оригинала есть событие выгрузки базы в файл → с неё снимали копию; дата подскажет, на какой момент данные в копии.
  • 🖥 В колонке «Компьютер» сплошь ноутбук программиста или тестовый сервер → базой пользуется не отдел, а разработчик.
  • ⏸ Последняя запись — месяц назад, при том что бухгалтерия работает каждый день → вы смотрите на «застывший» экземпляр.

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

Пользователи и история входов

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

Проверки:

  • 👥 Администрирование → Настройки пользователей и прав → Пользователи — сравните список с рабочей базой. Новые сотрудники, принятые после даты копирования, в копии отсутствуют.
  • 🔐 В журнале регистрации отберите события «Сеанс. Аутентификация» и «Сеанс. Начало». В рабочей базе входы идут каждый день от разных людей. В копии — эпизодически и от одного-двух логинов.
  • 🟢 Администрирование → Обслуживание → Активные пользователи в рабочее время. Пусто в 11 утра вторника — серьёзный повод насторожиться.
  • 🧾 Сравните пароли: если бухгалтер недавно сменил пароль, а в базу пускает со старым — база снята раньше смены.

Хорошая практика для тестовых копий — сразу после развёртывания снять у рядовых пользователей право входа или выставить им «Вход в программу запрещён». Тогда случайно зайти в копию просто не получится.

Лицензии, профили безопасности и настройки кластера

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

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

Что смотретьЧто говорит о копии
«Сервер баз данных» и «База данных»Какая база СУБД стоит за этой базой 1С. Две базы 1С с разными именами могут смотреть в одну базу СУБД — тогда это не копия, а дубль записи
«Блокировка регламентных заданий включена»Флаг часто ставят на тестовых копиях, чтобы они не слали почту и не запускали обмены
«Описание»Многие администраторы пишут сюда «Копия от 15.03»
Профиль безопасностиУ тестовых баз его иногда не назначают или назначают другой

Список баз кластера с идентификаторами можно получить из командной строки:

rac cluster list
rac infobase summary list --cluster=<id кластера>

У каждой серверной базы свой идентификатор в кластере. Если вы видите две базы с похожими именами — у них разные идентификаторы, и по ним вы найдёте нужную папку журнала в srvinfo.

Не меняйте в свойствах базы имя сервера СУБД и имя базы данных «чтобы проверить». Ошибка в этих полях подключит базу 1С к чужим данным.

Контрольные суммы файлов и история восстановления в СУБД

Файловая база: размер, дата и хеш 1Cv8.1CD

Данные файловой базы лежат в одном файле 1Cv8.1CD. Сравните два каталога:

  • 📏 Размер файла. Расхождение на сотни мегабайт — базы давно разошлись.
  • 🕒 Дата изменения. Рабочая база меняется каждый день, копия — редко.
  • 🔢 Хеш. Одинаковый хеш означает, что файлы идентичны бит в бит: копию сняли и ещё ни разу не открыли.

Хеш в Windows считается штатными средствами:

certutil -hashfile "D:\1C\Buh\1Cv8.1CD" SHA256
Get-FileHash "D:\1C\Buh_copy\1Cv8.1CD" -Algorithm SHA256

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

Серверная база: когда её восстановили

В MS SQL Server каждая операция восстановления записывается в системную базу msdb. Запрос покажет, какая база из какого бэкапа и когда восстановлена:

SELECT rh.destination_database_name AS restored_db,
       rh.restore_date,
       bs.database_name            AS source_db,
       bs.server_name              AS source_server,
       bs.backup_finish_date
FROM msdb.dbo.restorehistory rh
JOIN msdb.dbo.backupset bs ON bs.backup_set_id = rh.backup_set_id
ORDER BY rh.restore_date DESC;

Если restored_db — ваша база, а source_db — рабочая, вопрос закрыт: это копия рабочей базы на дату backup_finish_date. Дату создания базы на сервере покажет SELECT name, create_date FROM sys.databases: у восстановленной из бэкапа базы это дата восстановления.

Для PostgreSQL такой встроенной истории нет — смотрите журналы инструмента резервного копирования и скриптов, которыми разворачивали базу.

Идентификатор базы и данные, которые «застыли»

Платформа знает свою строку соединения, а серверная база — свой идентификатор в кластере. Но после загрузки .dt в новую базу данные внутри одинаковы: те же константы, те же коды узлов обмена, та же нумерация. Поэтому кроме адреса проверьте, на какой дате данные остановились.

Практичные проверки:

  1. 📄 Откройте журнал документов , с которым работают каждый день (реализация, банковские выписки), и отсортируйте по дате. В копии последний документ будет на дату снимка.
  2. 🔢 Сравните последний номер счёта на оплату в обеих базах.
  3. 💱 Посмотрите курсы валют: если загрузка курсов настроена, в рабочей базе они свежие, в копии — на дату копирования (если регламентные задания там отключены).

Когда типовая конфигурация сама сообщает о копии

Типовые конфигурации на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) запоминают строку соединения базы. Если при запуске она изменилась, программа показывает окно о том, что база перемещена или восстановлена из резервной копии, и блокирует работу с внешними ресурсами: обмены, почту, синхронизацию, регламентные задания.

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

Что сейчас открыто?

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

Внешняя обработка для быстрого аудита

Когда баз много, удобнее одна внешняя обработка, которую открывают через Файл → Открыть в любой из них. Она собирает сведения на сервере и выводит их сообщениями.

Создайте в конфигураторе внешнюю обработку , добавьте форму и команду «Проверить». Код модуля формы:

&НаКлиенте
Процедура Проверить(Команда)
	Для Каждого Строка Из СведенияОБазе() Цикл
		Сообщить(Строка);
	КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Функция СведенияОБазе()

	Результат = Новый Массив;
	Результат.Добавить("Строка соединения: " + СтрокаСоединенияИнформационнойБазы());
	Результат.Добавить("Компьютер сервера: " + ИмяКомпьютера());
	Результат.Добавить("Конфигурация: " + Метаданные.Синоним + " " + Метаданные.Версия);

	Сеансы = ПолучитьСеансыИнформационнойБазы();
	Результат.Добавить("Сеансов сейчас: " + Формат(Сеансы.Количество(), "ЧН=0; ЧГ=0"));

	Журнал = Новый ТаблицаЗначений;
	ВыгрузитьЖурналРегистрации(Журнал, Новый Структура, "Дата", , 1);
	Если Журнал.Количество() > 0 Тогда
		Результат.Добавить("Первая запись журнала: "
			+ Формат(Журнал[0].Дата, "ДФ='dd.MM.yyyy HH:mm'"));
	Иначе
		Результат.Добавить("Журнал регистрации пуст");
	КонецЕсли;

	Возврат Результат;

КонецФункции

Что получите: адрес базы, имя сервера, версию конфигурации, число сеансов и дату самой ранней записи журнала. Запустите обработку в рабочей базе и в подозрительной — разница в строке соединения и первой записи журнала решит вопрос.

Ограничения:

  • 🔑 Чтение журнала регистрации требует административных прав.
  • 🛡 В типовых конфигурациях открытие внешних обработок может быть запрещено настройками безопасности — тогда обработку подключают через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки или запускают под администратором.
  • 🧮 Версия конфигурации у копии и оригинала совпадает, если после копирования никто не обновлялся. Расхождение версий — дополнительный признак, совпадение — не доказательство.

Как пометить копию, чтобы потом не гадать

Проще всего вопрос «копия или нет» снимается заранее. Сразу после развёртывания копии:

Разметка новой копии базы
Выполнено: 0 / 6

Заголовок программы виден в шапке окна на каждом экране. Слово «КОПИЯ» в нём защищает лучше любых инструкций: бухгалтер увидит его до того, как проведёт первый документ.

Если копию держат для проверки обновления, удаляйте её после теста. Чем меньше в списке «Бухгалтерия», «Бухгалтерия (2)» и «Бухгалтерия новая», тем меньше шансов работать не там.

Частые вопросы

Можно ли вернуть документы, введённые по ошибке в копию, в рабочую базу?
Да, но не копированием базы целиком. Документы переносят выгрузкой-загрузкой данных через универсальный формат или вводят заново. Если документов немного, ручной ввод обычно быстрее и надёжнее.
Копия расходует отдельную лицензию?
Лицензия не привязана к базе: клиентские лицензии расходуются на подключения, а не на число баз. Фактический расход видно на сервере командой rac session list --licenses — она показывает, какой сеанс какую лицензию занял.
Почему копия при каждом запуске спрашивает, перемещена ли база?
Окно появляется, пока не сделан выбор, или если строка соединения снова изменилась — например, базу открывают по разным путям: через сетевой диск и через UNC-путь. Откройте базу всегда одним и тем же способом.
Отличается ли копия, созданная через выгрузку .dt, от скопированной папки?
Да. В .dt нет журнала регистрации, поэтому история начинается заново. Скопированная папка файловой базы несёт с собой журнал, и отличить её можно только по пути, датам и активности.
Можно ли по базе понять, кто сделал копию?
Иногда. В журнале оригинала событие выгрузки в файл содержит пользователя и компьютер. Если копию сняли копированием файлов или бэкапом СУБД, в журнале 1С следа не будет — смотрите журналы сервера и СУБД.