Как вернуть панель навигации в форме документа при настройке версионирования БСП?

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

При внедрении подсистемы «Версионирование объектов» из Библиотеки стандартных подсистем (БСП) разработчики часто сталкиваются с непонятным поведением интерфейса: после добавления стандартной команды в панель навигации сама панель навигации на форме документа вообще исчезает. Пользователь физически не может получить доступ к истории изменений, так как кнопка перехода отсутствует на форме.

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

Выясняем причину: особенность поведения платформы «1С:Предприятие»

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

Таким образом, если панель навигации пропала, это означает только одно: все команды, которые должны были на ней отображаться (включая команду «История изменений»), в данный момент скрыты программно кодом конфигурации или настройками прав доступа.

Почему помогает «перевыбор настроек версионирования» в пользовательском режиме?

Общая команда БСП ИсторияИзменений параметризуется типом документа. Её видимость на форме регулируется программно кодом БСП при инициализации формы документа. Алгоритм работает следующим образом:

  1. Данные о том, нужно ли версионировать конкретный тип документа, хранятся в регистре сведений «Настройки версионирования объектов» (или аналогичной таблице настроек в зависимости от точной версии БСП).
  2. По умолчанию для всех новых или измененных объектов метаданных в системе устанавливается режим «Не версионировать» (или «Никогда»).
  3. При открытии формы БСП считывает настройки для данного типа документа. Если для него установлено «Не версионировать», команда «История изменений» программно скрывается (свойство Видимость устанавливается в Ложь). Соответственно, скрывается и вся панель навигации формы.
  4. Когда мы заходим в настройки программы и перевыбираем вариант версионирования (например, устанавливаем «При записи» или «При проведении»), система создает или обновляет запись в регистре настроек. После этого код БСП начинает устанавливать видимость команды в значение Истина, и панель навигации успешно возвращается на форму.

Пошаговое руководство по настройке версионирования для разработчика

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

Шаг 1. Добавление документа в определяемые типы

Прежде всего, откроем конфигуратор и убедимся, что наш документ добавлен в соответствующие определяемые типы БСП. Это необходимо, чтобы общая команда БСП понимала, к каким типам объектов она может применяться:

Шаг 2. Обновление идентификаторов объектов метаданных

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

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные();

Альтернативный вариант — перезапустить базу данных в режиме «1С:Предприятие» под правами администратора с параметром запуска ЗапуститьОбновлениеИнформационнойБазы.

Шаг 3. Внедрение интеграционного кода в форму документа

В модуле формы документа в обработчике события ПриСозданииНаСервере обязательно должен присутствовать вызов программного интерфейса БСП, который отвечает за управление видимостью элементов формы:


// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

Этот вызов считывает настройки версионирования из регистра сведений и динамически управляет видимостью команды «История изменений» на форме конкретного документа.

Шаг 4. Подключение подписок на события

Чтобы версии действительно записывались в базу данных, убедимся, что наш документ включен в список источников для подписок на события, отвечающих за запись версий (например, подписка ЗаписатьВерсиюДокумента или ЗаписатьВерсиюОбъекта).

Шаг 5. Настройка параметров в пользовательском режиме

После выполнения всех доработок в конфигураторе перейдем в режим «1С:Предприятие» под учетной записью с правами администратора:

  1. Перейдем в раздел Администрирование — Общие настройки — История изменений.
  2. Убедимся, что включен общий флаг «Хранить историю изменений».
  3. Откроем ссылку «Настройки хранения».
  4. Найдем наш документ в списке и принудительно установим для него вариант версионирования (например, «При записи» или «При проведении»). Если значение уже выбрано, рекомендуется «перевыбрать» его заново для перезаписи настроек в регистре.

После сохранения этой настройки регистр настроек обновится, команда «История изменений» станет видимой, а панель навигации формы вашего документа успешно вернется на свое законное место!

← На главную