Ситуация, когда программист вносит изменения в центральную базу (ЦБ) распределенной информационной системы (РИБ), но в периферийных узлах (например, в магазинах) эти изменения не отображаются, является классической для платформы 1С:Предприятие 8.3. Особенно часто это касается интерфейсных элементов, таких как кнопка Создать на основании. Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам алгоритм диагностики и устранения неисправности.
Первым делом нам необходимо убедиться, что изменения действительно «долетели» до подчиненного узла. Даже если статус обмена сообщает об успешном завершении, конфигурация базы данных в узле может не обновиться. Проанализируем ситуацию, выполнив сравнение конфигураций физически.
Для этого в периферийной базе выполним следующие действия:
rib_node.cf.central.cf.Если при сравнении мы видим, что в узле отсутствуют галочки в составе объекта Ввод на основании (как это было замечено в обсуждении темы), значит, обновление конфигурации не было применено полностью. Если же файлы идентичны, но кнопки нет — проблема кроется в настройках прав, функциональных опциях или кэше.
Выясним причину, связанную с бизнес-логикой. В 1С:Розница многие команды жестко привязаны к Функциональным опциям. Если команда создания документа ВозвратПоставщику на основании ПриказаНаИнвентаризацию связана с опцией, которая отключена в конкретном магазине, кнопка не появится.
Рассмотрим подробнее: в РИБ значения констант, управляющих функциональными опциями, могут не мигрировать из центра в узлы, если они не включены в план обмена или если в узле установлены индивидуальные настройки. Проанализируем настройки в режиме «1С:Предприятие» в каждом узле:
Если метаданные верны и права есть, кнопка может быть скрыта на уровне настроек формы документа. В платформе 8.3 пользователи могут индивидуально настраивать состав команд. Однако есть и системный аспект: если в форме документа ПриказНаИнвентаризацию вручную правился состав команд в конфигураторе, автозаполнение команд может не сработать.
Выполним проверку в режиме предприятия в проблемном узле:
Это действие сбросит пользовательские кэши видимости элементов и может вернуть «потерянные» команды.
Проанализируем ситуацию с правами. Даже если у пользователя «Полные права», в распределенных базах профили групп доступа могут синхронизироваться с задержкой или иметь ошибки регистрации. Если у пользователя нет прав на Чтение или Добавление для документа-приемника (например, ПоступлениеТоваров), система автоматически скроет команду создания на основании.
Важно проверить не только общие роли, но и настройки RLS (Record Level Security). В коде заполнения на основании часто используются запросы. Если RLS ограничивает доступ к какому-то реквизиту, используемому в ОбработкаЗаполнения, платформа может блокировать вывод команды.
Если мы выяснили, что конфигурация в узлах всё же отличается, несмотря на успешные обмены, нужно «подтолкнуть» систему. Посмотрим на пример использования обработки Регистрация изменений для обмена:
Иногда возникает «эффект памяти», когда конфигурация обновилась, но платформа продолжает использовать старое описание метаданных. Рассмотрим, как очистить кэш:
/ClearCache.1C:Enterprise 8.3 Server Agent.Если доработка механизма «Создать на основании» выполнялась через расширение, проанализируем его состояние в узлах. В 1С:Розница 2.2 расширения могут иметь разную активность в разных узлах. Проверим программно или через интерфейс:
// Пример кода для проверки активных расширений
Расширения = РасширенияКонфигурации.Получить();
Для Каждого Расширение Из Расширения Цикл
Если Расширение.Активно Тогда
Сообщить("Расширение " + Расширение.Имя + " работает");
КонецЕсли;
КонецЦикла;
Если в узле расширение находится в состоянии ошибки (например, из-за конфликта имен после обновления основной конфигурации), все команды, добавленные через него, исчезнут.
Для решения проблемы появления кнопок в РИБ необходимо последовательно исключить: рассинхрон метаданных (через сравнение .cf), влияние Функциональных опций, ограничения прав доступа (включая RLS) и пользовательские настройки интерфейса. Наиболее эффективным методом при идентичности конфигураций является сброс настроек формы в режиме предприятия и принудительная перерегистрация изменений конфигурации в главном узле.