При работе с программными продуктами на платформе 1С:Предприятие 7.7 пользователи часто сталкиваются с назойливым уведомлением при запуске системы: «В распределенной информационной базе следует установить префикс ИБ». Это сообщение не является критической ошибкой, блокирующей работу, однако оно сигнализирует о том, что настройки распределенной информационной базы (УРБД) выполнены не полностью или база была некорректно «отвязана» от центрального узла. Рассмотрим подробно, почему возникает эта ситуация, на что влияют префиксы и как правильно настроить систему, чтобы избавиться от этого сообщения.
Проанализируем ситуацию: платформа 1С 7.7 выдает данное предупреждение в тот момент, когда обнаруживает признаки распределенности в текущей информационной базе. Даже если вы не планируете использовать механизмы обмена данными, программа «видит» служебные метки в системных таблицах. Основная проверка обычно заложена разработчиками конфигурации в Глобальном модуле. Разберем по шагам, как найти этот участок кода:
В распределенной информационной базе следует установить префикс ИБ.Как правило, этот фрагмент кода находится внутри предопределенной процедуры ПриНачалеРаботыСистемы(). Программа проверяет наличие признака распределенности (функция ПустоеЗначение(Константа.ПрефиксИБ) при включенном режиме УРБД) и, если префикс не задан, выводит предупреждение. Это сделано для того, чтобы предотвратить дублирование номеров документов и кодов справочников при последующих обменах данными между базами.
Рассмотрим самый простой и быстрый способ, который подходит для случаев, когда база является автономной и обмены с другими офисами или филиалами не ведутся. В типовых конфигурациях (например, «Бухгалтерский учет» редакции 4.5) предусмотрена специальная настройка, позволяющая игнорировать отсутствие префикса.
Выполним следующие действия в режиме 1С:Предприятие:
Не применять префикс ИБ (в некоторых конфигурациях она может называться иначе, но смысл будет схожим — отключение использования префиксов).Enter для сохранения изменений.После этой несложной манипуляции при следующем входе в программу сообщение выдаваться не будет. Это происходит потому, что алгоритм проверки в ПриНачалеРаботыСистемы() сначала анализирует значение этой константы, и если она равна 1, пропускает блок проверки префикса.
Если ваша информационная база действительно является частью распределенной сети (УРБД) и вы планируете обмениваться данными с центральным офисом или другими периферийными узлами, просто «заглушить» сообщение будет неправильно. В этом случае необходимо установить уникальный префикс. Посмотрим, для чего это нужно.
Префикс в 1С 7.7 — это буквенно-цифровой код (обычно длиной в 2 символа), который автоматически добавляется в начало номера каждого нового документа. Например, если в центральной базе префикс ЦБ, а в периферийной — ПБ, то счета-фактуры будут иметь номера ЦБ000001 и ПБ000001 соответственно. При слиянии данных в одну базу номера не пересекутся, и система не выдаст ошибку уникальности.
Чтобы установить префикс, проделаем следующее:
Префикс информационной базы (или Префикс автонумерации).А1). Важно: убедитесь, что этот код не совпадает с кодами других баз в вашей сети.Проанализируем ситуацию глубже. Иногда пользователи уверены, что база не распределенная, но сообщение все равно появляется. Это случается, если база была создана как копия распределенной или в ней когда-то пытались настроить УРБД. Система идентифицирует себя как «часть целого» на основе данных в служебных таблицах.
В версии 1С 7.7 для SQL информация о структуре распределенной базы хранится в таблице _1SDBSET. Если в этой таблице присутствует более одной записи (строка с кодом текущей базы и строка с кодом вышестоящей или подчиненной базы), система автоматически включает механизмы УРБД. Посмотрим на пример структуры такой таблицы:
Записи в таблице _1SDBSET:
1. Код: A, Наименование: Centr (Центральная база)
2. Код: B, Наименование: Peref (Периферийная база)
Если вы хотите полностью «отвязать» базу от УРБД (сделать ее автономной), необходимо очистить информацию о распределенности. Для этого специалисты используют специализированные внешние обработки (например, ResetURBD.ert), которые снимают флаг распределенности в системном файле 1SSYSTEM.DBF (или соответствующей таблице SQL) и очищают таблицу связей баз. После такой процедуры база перестает требовать префикс, так как больше не считает себя частью распределенной системы.
Рассмотрим важный аспект безопасности данных. В 1С 7.7 каждый объект базы данных имеет внутренний идентификатор (ID). В распределенных базах этот ID формируется с использованием 36-ричного кода информационной базы. Если префикс и код базы не заданы или заданы неверно, возникает риск коллизий.
Коллизия — это ситуация, когда два разных документа, созданных в разных базах, получают одинаковый внутренний идентификатор. При попытке синхронизации таких баз один документ может просто перезаписать другой, что приведет к безвозвратной потере данных. Именно поэтому платформа так настойчиво требует установки префикса.
Подведем итог: если вы точно знаете, что база работает в единственном экземпляре и обмены не планируются — смело используйте установку константы Не применять префикс ИБ в значение 1. Если же база является частью сети — обязательно согласуйте префикс с администратором центральной базы и установите его в соответствующих настройках.
Если вы решили программно изменить поведение системы, рассмотрим пример того, как может выглядеть проверка в Глобальном модуле. Проанализируем типичный фрагмент кода:
Процедура ПриНачалеРаботыСистемы()
// ... какой-то код ...
Если Константа.НеПрименятьПрефиксИБ = 0 Тогда
Если ПустоеЗначение(Константа.ПрефиксИБ) = 1 Тогда
Если НазваниеИнтерфейса() <> "Администратор" Тогда
Предупреждение("В распределенной информационной базе следует установить префикс ИБ!");
КонецЕсли;
КонецЕсли;
КонецЕсли;
// ... продолжение кода ...
КонецПроцедуры
Из данного примера видно, что разработчики часто оставляют «лазейку» для администратора или проверяют значение константы. Понимание логики работы этого кода позволяет гибко настраивать поведение программы под конкретные нужды организации, не нарушая при этом целостность системы автонумерации.