Рано или поздно каждый администратор или программист 1С сталкивается с ситуацией, когда после очередного обновления конфигурации (будь то Бухгалтерия предприятия, Розница или ЗУП) программа при каждом запуске начинает настойчиво спрашивать: «Информационная база перемещена или является копией?». Самое неприятное в этой ситуации то, что база физически никуда не переезжала, сервер остался прежним, а настройки подключения не менялись годами. Рассмотрим подробно, почему возникает эта проблема, чем она опасна и как её окончательно решить несколькими способами.
Данное поведение системы управляется механизмом Библиотеки стандартных подсистем (БСП). Начиная с версии 3.0, алгоритм проверки местоположения стал более строгим. Проблема кроется в зарегистрированной ошибке под номером 00-00188874. Разберем механизм работы этой проверки:
При первом запуске база сохраняет свою «эталонную» строку соединения в специальном хранилище (константе). При каждом последующем старте система вызывает функцию СтрокаСоединенияИнформационнойБазы() и сравнивает полученный результат с эталоном. Ложное срабатывание происходит из-за избыточной чувствительности алгоритма сравнения к следующим факторам:
SRV-SQL, а текущее подключение идет через srv-sql, система может посчитать это перемещением.srv1 и srv2), платформа может возвращать имя того узла, на котором в данный момент установился сеанс, что приводит к несовпадению с эталоном.3.0.1.323 — 3.0.1.331. Исправление вошло только в версию 3.0.1.349.Важно: Если вы по ошибке нажмете кнопку «Это копия информационной базы», система полностью заблокирует работу с внешними ресурсами: рассылку почты, синхронизацию данных, загрузку курсов валют и классификаторов. Это сделано для безопасности, чтобы тестовая копия не начала отправлять реальные данные контрагентам.
Поскольку фирма «1С» признала это программной ошибкой, самым правильным и безопасным методом будет установка официального патча. Это не требует изменения конфигурации и не влияет на последующие обновления. Проанализируем процесс установки:
EF_00_00188874. Если нет — скачайте файл патча (расширение .cfe) с портала поддержки.Бывают ситуации, когда обновить БСП или установить патч невозможно (например, конфигурация сильно кастомизирована или доступ к интернету ограничен). В таком случае проанализируем программный способ решения проблемы. Мы можем принудительно записывать в базу информацию о том, что работа с внешними ресурсами разрешена, блокируя тем самым появление назойливого окна.
Для этого в Модуле сеанса можно добавить следующий код, который будет выполняться при каждом входе пользователя:
Процедура УстановитьПараметрыБлокировкиВнешнихРесурсов() Экспорт
текСтрокаСоединения = ВРег(СтрокаСоединенияИнформационнойБазы());
// Укажите часть имени вашей рабочей базы для идентификации
ЭтоРабочаяБаза = (СтрНайти(текСтрокаСоединения, "MY_PRODUCTION_BASE") > 0);
Если НЕ ЭтоРабочаяБаза Тогда
Возврат; // В копиях проверку оставляем
КонецЕсли;
Менеджер = Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.СоздатьМенеджерЗначения();
Менеджер.Прочитать();
СтруктураПараметров = Менеджер.Значение.Получить();
Если ТипЗнч(СтруктураПараметров) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
// Если флаг блокировки установлен — снимаем его программно
Если СтруктураПараметров.Свойство("РаботаСВнешнимиРесурсамиЗаблокирована")
И СтруктураПараметров.РаботаСВнешнимиРесурсамиЗаблокирована Тогда
СтруктураПараметров.РаботаСВнешнимиРесурсамиЗаблокирована = Ложь;
Менеджер.Значение = Новый ХранилищеЗначения(СтруктураПараметров);
Менеджер.Записать();
КонецЕсли;
КонецПроцедуры
Этот метод гарантирует, что на рабочих базах флаг блокировки будет всегда сброшен, однако будьте осторожны: при реальном копировании базы на другой сервер этот код также может сработать, если вы не предусмотрели жесткую проверку имени сервера.
Если окно уже появилось и вы случайно нажали «Это копия», восстановить работу регламентных заданий можно вручную без написания кода. Посмотрим, как это сделать:
После этого система обновит строку соединения в константе ПараметрыБлокировкиРаботыСВнешнимиРесурсами и перестанет задавать вопрос до следующего изменения условий (например, изменения IP сервера в DNS).
Чтобы минимизировать вероятность ложных срабатываний в будущем, проанализируем настройки самого сервера 1С. Часто проблема возникает из-за того, что в консоли администрирования имя компьютера указано не так, как оно прописано у пользователей в списках баз.
Рекомендуем придерживаться единого стандарта:
srv-01.company.local) во всех настройках кластера и строках подключения.Подводя итог, отметим, что наиболее эффективным методом является обновление конфигурации до релиза, содержащего БСП версии 3.0.1.349 или выше. Если же обновление откладывается, использование расширения или патча EF_00_00188874 является наиболее щадящим способом сохранить работоспособность системы без вмешательства в программный код основной конфигурации.