При внедрении подсистемы «Версионирование объектов» из Библиотеки стандартных подсистем (БСП) разработчики часто сталкиваются с непонятным поведением интерфейса: после добавления стандартной команды в панель навигации сама панель навигации на форме документа вообще исчезает. Пользователь физически не может получить доступ к истории изменений, так как кнопка перехода отсутствует на форме.
В этой статье мы подробно разберем, почему возникает эта проблема, как работает механизм управления видимостью панели навигации в платформе «1С:Предприятие 8.3», и приведем пошаговый чек-лист для гарантированного решения этой задачи.
Для начала проанализируем, как управляемый интерфейс 1С работает с панелями форм. В свойствах управляемой формы нет флага, который бы жестко управлял принудительным отображением панели навигации. Платформа управляет видимостью этого элемента интерфейса по оптимизационному алгоритму:
Видимость установлено в значение Истина, платформа автоматически и мгновенно возвращает всю панель навигации на форму.Таким образом, если панель навигации пропала, это означает только одно: все команды, которые должны были на ней отображаться (включая команду «История изменений»), в данный момент скрыты программно кодом конфигурации или настройками прав доступа.
Общая команда БСП ИсторияИзменений параметризуется типом документа. Её видимость на форме регулируется программно кодом БСП при инициализации формы документа. Алгоритм работает следующим образом:
Видимость устанавливается в Ложь). Соответственно, скрывается и вся панель навигации формы.Истина, и панель навигации успешно возвращается на форму.Рассмотрим подробнее весь цикл интеграции версионирования для нового или доработанного документа, чтобы избежать подобных проблем в будущем. Разберем этот процесс по шагам.
Шаг 1. Добавление документа в определяемые типы
Прежде всего, откроем конфигуратор и убедимся, что наш документ добавлен в соответствующие определяемые типы БСП. Это необходимо, чтобы общая команда БСП понимала, к каким типам объектов она может применяться:
ВерсионируемыеДанные и добавим в его состав наш документ (тип ссылки).ВерсионируемыеДанныеОбъект.Шаг 2. Обновление идентификаторов объектов метаданных
После добавления новых объектов или изменения определяемых типов в конфигураторе, БСП в пользовательском режиме может не сразу увидеть эти изменения. Нам необходимо обновить кэш метаданных БСП. Для этого запустим процедуру обновления программно (например, через консоль кода):
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные();
Альтернативный вариант — перезапустить базу данных в режиме «1С:Предприятие» под правами администратора с параметром запуска ЗапуститьОбновлениеИнформационнойБазы.
Шаг 3. Внедрение интеграционного кода в форму документа
В модуле формы документа в обработчике события ПриСозданииНаСервере обязательно должен присутствовать вызов программного интерфейса БСП, который отвечает за управление видимостью элементов формы:
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
Этот вызов считывает настройки версионирования из регистра сведений и динамически управляет видимостью команды «История изменений» на форме конкретного документа.
Шаг 4. Подключение подписок на события
Чтобы версии действительно записывались в базу данных, убедимся, что наш документ включен в список источников для подписок на события, отвечающих за запись версий (например, подписка ЗаписатьВерсиюДокумента или ЗаписатьВерсиюОбъекта).
Шаг 5. Настройка параметров в пользовательском режиме
После выполнения всех доработок в конфигураторе перейдем в режим «1С:Предприятие» под учетной записью с правами администратора:
После сохранения этой настройки регистр настроек обновится, команда «История изменений» станет видимой, а панель навигации формы вашего документа успешно вернется на свое законное место!