Часто при запуске информационной базы 1С:Предприятие в заголовке окна появляется пометка [КОПИЯ]. Это сообщение является встроенным механизмом безопасности Библиотеки стандартных подсистем (БСП). Его основная цель — защита от случайного выполнения регламентных заданий (например, отправки писем клиентам или обмена с сайтом) в базе, которая была развернута из резервной копии. Разберем, как справиться с этой задачей, начиная от простых действий и заканчивая программными решениями для сложных ситуаций.
Если вы просто развернули базу и система просит подтверждение, выполним стандартную процедуру. Этот метод работает в подавляющем большинстве случаев:
Предприятие под пользователем с полными правами.После выполнения этих действий необходимо перезайти в программу, чтобы заголовок обновился.
Если вы работаете с файловой версией базы, признаком «копии» является специальный служебный файл. Если по какой-то причине нужно сбросить состояние обратно в «неизвестное» или принудительно вызвать вопрос системы, вы можете найти в каталоге с информационной базой файл с именем DoNotCopy.txt. Его удаление или переименование заставит систему при следующем запуске снова задать вопрос о том, является ли база копией.
Бывают ситуации, когда база является клиент-серверной, но сообщение о том, что база перемещена, появляется при каждом входе. Это может быть связано с тем, что параметры подключения (имя сервера, кластер, имя базы) в глазах платформы периодически меняются. Чтобы решить это программно, рассмотрим несколько продвинутых методов.
Чтобы не менять основной код конфигурации (который перезатрется при обновлении), создадим Расширение. В расширении можно переопределить поведение формы БлокировкаРаботыСВнешнимиРесурсами.
Добавим в расширение форму БлокировкаРаботыСВнешнимиРесурсами и в событии ПриОткрытии (используя метод Вместо) пропишем логику:
&НаКлиенте
Процедура рас_ПриОткрытииВместо(Отказ)
ИнформационнаяБазаПеремещенаНаСервере;
СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения;
ОбновитьИнтерфейс;
ЗаписатьИЗакрытьНаСервере;
Закрыть;
КонецПроцедуры
Если необходимо программно вызвать форму, чтобы подтвердить работу с ресурсами, можно использовать внешнюю обработку с таким кодом:
&НаКлиенте
Процедура ОткрытьФормуПринятиеРешенияОБлокировке(Команда)
ОткрытьФорму("ОбщаяФорма.БлокировкаРаботыСВнешнимиРесурсами",
Новый Структура("ПринятиеРешенияОБлокировке", Истина));
КонецПроцедуры
В случае, если проблема кроется в коде РегламентныеЗаданияСлужебный и вы хотите исключить проверку по конкретным параметрам, можно модифицировать функцию УстановленаБлокировкаРаботыСВнешнимиРесурсами. В этой функции система сравнивает текущие параметры с сохраненными:
Если ИмяБазы <> СохраненноеИмяБазы Или
(ПараметрыБлокировки.ПроверятьИмяСервера И
(ИмяКомпьютера <> СохраненноеИмяКомпьютера И
ИмяСервера <> СохраненноеИмяСервера)) Тогда
// Здесь происходит логика блокировки
КонецЕсли;
Внимание: будьте осторожны при внесении изменений в типовой код. Всегда проверяйте актуальность версии платформы — иногда постоянное появление сообщения является известным багом, который устраняется обновлением 1С до более стабильной версии (например, 8.3.10.2699 и выше).
Мы проанализировали основные причины появления надписи [КОПИЯ] и разобрали инструменты для работы с ней. Надеемся, что эти рекомендации помогут вам быстро привести рабочую среду в порядок!