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