Как устранить ложное сообщение Информационная база перемещена в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Рано или поздно каждый администратор или программист 1С сталкивается с ситуацией, когда после очередного обновления конфигурации (будь то Бухгалтерия предприятия, Розница или ЗУП) программа при каждом запуске начинает настойчиво спрашивать: «Информационная база перемещена или является копией?». Самое неприятное в этой ситуации то, что база физически никуда не переезжала, сервер остался прежним, а настройки подключения не менялись годами. Рассмотрим подробно, почему возникает эта проблема, чем она опасна и как её окончательно решить несколькими способами.

Выясним причину: почему 1С считает, что база перемещена

Данное поведение системы управляется механизмом Библиотеки стандартных подсистем (БСП). Начиная с версии 3.0, алгоритм проверки местоположения стал более строгим. Проблема кроется в зарегистрированной ошибке под номером 00-00188874. Разберем механизм работы этой проверки:

При первом запуске база сохраняет свою «эталонную» строку соединения в специальном хранилище (константе). При каждом последующем старте система вызывает функцию СтрокаСоединенияИнформационнойБазы() и сравнивает полученный результат с эталоном. Ложное срабатывание происходит из-за избыточной чувствительности алгоритма сравнения к следующим факторам:

  1. Регистр символов: Если в эталоне сервер записан как SRV-SQL, а текущее подключение идет через srv-sql, система может посчитать это перемещением.
  2. Разрешение имен: Использование IP-адреса вместо DNS-имени сервера или наоборот.
  3. Кластерная структура: Если база работает в кластере серверов 1С, состоящем из нескольких рабочих узлов (например, srv1 и srv2), платформа может возвращать имя того узла, на котором в данный момент установился сеанс, что приводит к несовпадению с эталоном.
  4. Версия БСП: Ошибка наиболее актуальна для БСП версий 3.0.1.323 — 3.0.1.331. Исправление вошло только в версию 3.0.1.349.

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

Решение 1: Установка официального исправления (патча)

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

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Развернем группу Обновление программы и выберем пункт Установка обновлений и исправлений (патчей).
  3. Если у вас настроен автоматический поиск обновлений, программа сама предложит скачать исправление EF_00_00188874. Если нет — скачайте файл патча (расширение .cfe) с портала поддержки.
  4. Выберите вариант Указать файл исправления, загрузите его и нажмите Далее.
  5. После установки обязательно перезапустите программу с установленным флагом Перезапустить программу.

Решение 2: Использование программного «костыля» в модуле сеанса

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

Для этого в Модуле сеанса можно добавить следующий код, который будет выполняться при каждом входе пользователя:


Процедура УстановитьПараметрыБлокировкиВнешнихРесурсов() Экспорт
    текСтрокаСоединения = ВРег(СтрокаСоединенияИнформационнойБазы());
    
    // Укажите часть имени вашей рабочей базы для идентификации
    ЭтоРабочаяБаза = (СтрНайти(текСтрокаСоединения, "MY_PRODUCTION_BASE") > 0);
    
    Если НЕ ЭтоРабочаяБаза Тогда
        Возврат; // В копиях проверку оставляем
    КонецЕсли;

    Менеджер = Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.СоздатьМенеджерЗначения();
    Менеджер.Прочитать();
    
    СтруктураПараметров = Менеджер.Значение.Получить();
    
    Если ТипЗнч(СтруктураПараметров) <> Тип("Структура") Тогда
        Возврат;
    КонецЕсли;
    
    // Если флаг блокировки установлен — снимаем его программно
    Если СтруктураПараметров.Свойство("РаботаСВнешнимиРесурсамиЗаблокирована") 
         И СтруктураПараметров.РаботаСВнешнимиРесурсамиЗаблокирована Тогда
         
        СтруктураПараметров.РаботаСВнешнимиРесурсамиЗаблокирована = Ложь;
        Менеджер.Значение = Новый ХранилищеЗначения(СтруктураПараметров);
        Менеджер.Записать();
        
    КонецЕсли;
КонецПроцедуры

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

Решение 3: Ручная разблокировка через функции технического специалиста

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

  1. Зайдем в меню Сервис и настройки (три полоски в верхнем углу) — Функции для технического специалиста (ранее «Все функции»).
  2. В поиске введем слово «Блокировка».
  3. Найдем обработку Блокировка работы с внешними ресурсами.
  4. В открывшемся окне нажмем кнопку Разблокировать работу с внешними ресурсами.

После этого система обновит строку соединения в константе ПараметрыБлокировкиРаботыСВнешнимиРесурсами и перестанет задавать вопрос до следующего изменения условий (например, изменения IP сервера в DNS).

Рекомендации по настройке кластера серверов

Чтобы минимизировать вероятность ложных срабатываний в будущем, проанализируем настройки самого сервера 1С. Часто проблема возникает из-за того, что в консоли администрирования имя компьютера указано не так, как оно прописано у пользователей в списках баз.

Рекомендуем придерживаться единого стандарта:

Подводя итог, отметим, что наиболее эффективным методом является обновление конфигурации до релиза, содержащего БСП версии 3.0.1.349 или выше. Если же обновление откладывается, использование расширения или патча EF_00_00188874 является наиболее щадящим способом сохранить работоспособность системы без вмешательства в программный код основной конфигурации.

← На главную