Почему в расширении 1С нельзя установить флаг "Используется в РИБ" и изменить "Разделение данных"?

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

При работе с расширениями в системе 1С:Предприятие, особенно в контексте Распределенных информационных баз (РИБ), вы можете столкнуться с ситуацией, когда невозможно установить флаг "Используется в РИБ" или изменить свойство "Разделение данных". Эта проблема может стать серьезным препятствием при попытке внедрить дополнительные функции через расширения в распределенной инфраструктуре клиента. Давайте подробно разберем, почему возникает эта ситуация и как ее эффективно решить.

Ключевая причина: Версия платформы и режим совместимости

Основная причина, по которой вам может быть недоступен флаг "Используется в РИБ" (или он будет неактивен), а также свойство "Разделение данных" ведет себя непредсказуемо, кроется в версии платформы 1С:Предприятие и установленном режиме совместимости. До версии 8.3.12 платформы 1С:Предприятие не было встроенного и полноценного механизма для автоматического обмена расширениями между узлами РИБ. Соответственно, функционал, связанный с передачей расширений в РИБ, был либо полностью отсутствует, либо ограничен.

  1. Требование к версии платформы: Для корректной работы с расширениями в РИБ и возможности использования флага "Используется в распределенной ИБ" минимально необходима платформа версии 8.3.12. Если ваша текущая платформа имеет версию ниже, чем 8.3.12 (как в исходной ситуации), то ожидаемо, что соответствующий функционал будет недоступен.
  2. Режим совместимости конфигурации и расширения: Режим совместимости играет критическую роль.
    • Режим совместимости конфигурации: Убедитесь, что режим совместимости вашей основной конфигурации установлен на 8.3.12 или выше. Если он установлен ниже (например, 8.3.10 или 8.3.11), то платформа будет работать в "старом" режиме, и функционал обмена расширениями в РИБ будет недоступен.
    • Режим совместимости расширения: Режим совместимости расширения не может быть выше, чем режим совместимости конфигурации. Если конфигурация работает в режиме 8.3.11, то расширение не сможет использовать режим 8.3.12.

    На практике это означает, что даже если вы обновили платформу до актуальной версии, но режим совместимости конфигурации по-прежнему установлен на более ранний, вы не сможете воспользоваться новым функционалом. Нам необходимо поднять режим совместимости основной конфигурации до версии, которая поддерживает работу с расширениями в РИБ.

  3. Обновление типовой конфигурации: В некоторых случаях, даже после обновления платформы, максимальный доступный режим совместимости для конфигурации может быть ограничен. Например, если типовая конфигурация изначально разрабатывалась под более старые версии платформы, она может не предлагать режим совместимости 8.3.12 и выше. В этой ситуации, возможно, потребуется обновить саму типовую конфигурацию до более актуальной версии, которая уже поддерживает требуемый режим совместимости.

Свойство "Разделение данных" в расширениях

Свойство "Разделение данных" в расширениях — это важный технический признак, определяющий, как расширение взаимодействует с механизмом разделения данных на уровне приложения. Если это свойство установлено в значение "Разделять", то для пользователей будут доступны только те расширения, которые были подключены с тем же значением разделителя, что и у текущего пользователя. Это обеспечивает корректное функционирование системы в многопользовательских и мультитенантных средах, где данные различных организаций или групп пользователей должны быть строго изолированы. Если же свойство установлено в "Не использовать", значения разделителя не учитываются при подключении расширений и определении их доступности, что чаще всего применяется в монопольных или небольших системах, не требующих строгого разделения по разделителям.

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

Как действовать: пошаговое решение

Давайте рассмотрим, что необходимо предпринять для устранения проблемы:

  1. Обновите платформу 1С:Предприятие: Первым и самым важным шагом является обновление вашей платформы до последней актуальной версии 8.3.12 или более свежей. Это предоставит вам необходимый функционал для работы с расширениями в РИБ. Вы можете скачать актуальную версию с официального сайта 1С или портала ИТС.
  2. Проверьте и обновите режим совместимости конфигурации:
    1. Откройте конфигурацию в режиме Конфигуратор.
    2. Перейдите в меню Конфигурация -> Свойства конфигурации.
    3. Найдите поле "Режим совместимости". Установите его в значение "8.3.12" или выше, если доступно. Если максимальное доступное значение ниже 8.3.12 (например, 8.3.11), то, как мы уже обсуждали, возможно, потребуется обновление самой типовой конфигурации.
    4. Сохраните изменения конфигурации.
  3. Проверьте и установите режим совместимости расширения:
    1. Откройте расширение в Конфигураторе.
    2. Перейдите в меню Расширение конфигурации -> Свойства расширения.
    3. Убедитесь, что поле "Режим совместимости расширения" установлено в значение, совместимое с режимом конфигурации (желательно 8.3.12 или выше).
    4. Попробуйте установить флаг "Используется в распределенной информационной базе". После выполнения предыдущих шагов, эта галочка должна стать доступной и активной.
  4. Рассмотрите вариант "Не использовать" (с осторожностью): В некоторых случаях, если вы столкнулись с ограничениями и не можете установить нужный режим совместимости, может возникнуть вопрос об установке значения "Не использовать" для режима совместимости. Хотя это может решить проблему доступности некоторых функций, используйте этот вариант крайне осторожно, особенно на продакшене. Отключение режима совместимости может привести к неожиданным изменениям в поведении системы, так как платформа перестанет эмулировать старое поведение и начнет использовать самые новые механизмы, которые могут быть несовместимы с текущей кодовой базой конфигурации или расширения.

Особенности работы расширений в РИБ, начиная с 8.3.12

После того как мы обеспечили правильную версию платформы и режим совместимости, давайте рассмотрим, как расширения работают в РИБ, начиная с версии 8.3.12.

Автоматическая передача расширений:

Начиная с версии 8.3.12, платформа 1С:Предприятие получила встроенный механизм для обмена расширениями в РИБ. Это означает, что расширения, для которых установлен флаг "Используется в распределенной информационной базе", могут автоматически передаваться из центрального узла в подчиненные узлы вместе с обычным обменом данными. Для этого также необходимо убедиться, что в плане обмена, используемом для РИБ, установлена галочка "Включать расширения конфигурации". Это значительно упрощает процесс развертывания и обновления функционала в распределенных системах, избавляя от необходимости ручной установки расширений в каждом узле.

Известная проблема: Передача расширений с каждым обменом (версия 8.3.12):

Стоит отметить, что в ранних версиях платформы 8.3.12 пользователи сталкивались с жалобой, что расширение, для которого было установлено свойство "Используется в РИБ", передавалось с каждым сообщением обмена, даже если в нем не было изменений. Это могло приводить к увеличению объема передаваемых данных и потенциально замедлять процессы обмена. В более поздних релизах платформы эта проблема, как правило, была оптимизирована, но полезно иметь это в виду, если вы работаете с точной версией 8.3.12.

Синхронизация данных, добавляемых расширениями:

Передача самого расширения в подчиненный узел — это только половина дела. Если ваше расширение добавляет новые объекты (справочники, константы, регистры сведений и т.д.) или изменяет структуру существующих данных, нам необходимо настроить синхронизацию данных этих объектов между узлами РИБ. Для этого:

  1. Заимствуйте план обмена: Вам потребуется заимствовать соответствующий план обмена (например, Полный или ПоВидамОбмена, который используется для вашей РИБ) в ваше расширение.
  2. Добавьте новые объекты в состав плана обмена: После заимствования плана обмена в расширение, нам необходимо в его составе указать все новые объекты, добавленные расширением, которые должны участвовать в обмене данными.
  3. Настройте подписки на события: Для обеспечения автоматической регистрации изменений новых объектов в расширении, нам потребуется настроить подписки на события. Вы можете клонировать стандартные подписки из основной конфигурации, такие как ПолныйРегистрацияДокумента, ПолныйРегистрацияУдаления, ПолныйРегистрацияНабора, и адаптировать их для ваших объектов расширения. Это гарантирует, что при изменении данных в центральном узле, они будут зарегистрированы для обмена и переданы в подчиненные узлы, и наоборот.

Распространенные ошибки и способы их устранения

При работе с расширениями в РИБ вы можете столкнуться с рядом специфических ошибок. Давайте рассмотрим наиболее частые из них:

  1. Ошибка "Данные принимаются от узла с другим набором расширений, меняющих структуру данных. Необходимо произвести перенос расширений конфигурации в узел":

    Эта ошибка возникает, когда расширение, которое изменяет структуру данных (например, добавляет новые реквизиты, таблицы или регистры), не перенесено в принимающий узел РИБ, или его версии не совпадают. Для решения этой проблемы:

    1. Убедитесь, что расширение с флагом "Используется в РИБ" корректно установлено и активировано в центральном узле.
    2. Проведите полный обмен данными. Платформа должна автоматически передать расширение.
    3. Если ошибка сохраняется, убедитесь, что в плане обмена установлен флаг "Включать расширения конфигурации".
    4. В крайних случаях, можно попробовать удалить расширение из подчиненного узла (если оно там уже было некорректно установлено) и выполнить полный обмен заново.
  2. Отсутствие записей в справочнике "Идентификаторы объектов расширений":

    При добавлении новых объектов в расширение, платформа автоматически создает записи в служебном справочнике ИдентификаторыОбъектовРасширений. Если по какой-то причине эти записи отсутствуют или некорректны, могут возникнуть проблемы с целостностью данных и обменом. Решением может быть выполнение обновления этого справочника специальной процедурой, которую иногда предоставляют разработчики конфигурации или ее можно найти на ИТС.

  3. Проблемы с правами доступа после подключения расширения:

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

  4. Константа "ЗагрузитьРасширенияИзменяющиеСтруктуруДанных" и монопольный режим:

    При наличии изменений в расширении (даже незначительных) в файле обмена платформа может выставить служебную константу ЗагрузитьРасширенияИзменяющиеСтруктуруДанных. Эта константа указывает, что для успешной загрузки изменений расширений требуется монопольный режим. Сброс этой константы происходит только после успешной загрузки файла обмена в монопольном режиме. Если обмен постоянно "зависает" или выдает ошибки из-за этой константы, вам потребуется:

    1. Запустить базу в монопольном режиме (убедиться, что нет активных пользователей).
    2. Выполнить загрузку обмена.
    3. Убедиться, что константа сброшена после успешной загрузки.

Дополнительные рекомендации и советы

Для более гибкой и надежной работы с расширениями в РИБ, рассмотрим несколько дополнительных аспектов:

Использование расширения только в подчиненном узле:

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

Отключение режима совместимости в расширениях:

В некоторых специфических сценариях, для достижения корректной работы расширения с новейшими возможностями платформы, может потребоваться полное отключение режима совместимости (установка значения "Не использовать") как для самого расширения, так и для режима совместимости расширения конфигурации. Однако, как мы уже упоминали, это решение следует применять с особой осторожностью и только после тщательного тестирования, так как оно может вызвать неожиданные побочные эффекты в старых конфигурациях.

Удаление расширений из РИБ:

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

  1. Отключить подчиненный узел от РИБ (прекратить обмен).
  2. Загрузить в этот узел файл конфигурации (.cf) центральной базы.
  3. После обновления конфигурации повторно подключить узел к РИБ и настроить обмен.

Помните, что работа с расширениями, особенно в контексте РИБ, требует внимательности к деталям и понимания механизмов работы платформы. Всегда тестируйте изменения на тестовых базах перед внедрением в продуктивную среду.

← На главную