В практике администраторов и программистов 1С:Предприятие встречается довольно странная и неприятная ситуация: в привычной форме документа (например, Реализация товаров и услуг в УПП) из подменю «Ввести на основании» внезапно исчезают почти все документы. Вместо обширного списка, который настраивался годами, пользователь видит лишь один-два пункта, например, «Событие», хотя права доступа не менялись, а конфигурация осталась прежней. Особенно часто это происходит после технических манипуляций: свертки базы данных, переноса на другой сервер или временного обновления версии платформы с последующим откатом.
В рамках данной статьи мы разберем причины этого поведения платформы, проанализируем механизмы формирования динамических меню и рассмотрим пошаговое решение, которое позволяет «оживить» интерфейс без переписывания кода.
Для начала проанализируем, как платформа 1С строит этот список. В обычных формах (которые являются стандартом для УПП 1.3) подменю заполняется динамически в момент открытия формы или нажатия на кнопку «Действия». Платформа обращается к дереву метаданных и ищет все объекты, у которых в свойстве Является основанием для указан текущий тип документа.
Важно понимать различие между двумя свойствами в конфигураторе:
Если в конфигураторе все связи указаны верно, но в режиме Предприятие список пуст, значит, произошел сбой на уровне системных таблиц конфигурации или кэша метаданных, где платформа хранит индексы этих связей.
Как показывает практика, основной триггер проблемы — работа с базой данных на разных версиях платформы 1С. Рассмотрим типичный сценарий: администратор выгружает базу, разворачивает её на новой версии платформы (например, для выполнения тяжелой операции свертки или тестирования), а затем возвращает результат обратно в рабочую среду на старую версию платформы. Несмотря на то, что сама конфигурация (.cf) не менялась, внутренняя структура базы данных (таблицы Config, ConfigSave) претерпевает изменения, которые старая версия платформы может интерпретировать некорректно. В частности, «ломаются» индексы командного интерфейса.
Это самый эффективный метод, найденный опытным путем. Он заставляет платформу полностью перестроить внутренние таблицы соответствия команд и метаданных. Суть заключается в кратковременном переключении режима совместимости интерфейса.
Рассмотрим порядок действий пошагово:
Режим совместимости интерфейса.Разрешить Такси (даже если у вас обычные формы и вы не планируете использовать Такси).Режим совместимости интерфейса в исходное состояние (например, Версия 8.2).После этих манипуляций платформа переиндексирует все связи метаданных, и меню «Ввести на основании» должно восстановиться в полном объеме.
Если первый способ не помог, проанализируем ситуацию с точки зрения целостности метаданных. Иногда простого сравнения и объединения недостаточно, так как проблема кроется не в программном коде, а в заголовках объектов метаданных. В этом случае помогает полная перезапись конфигурации.
Алгоритм действий:
.cf) из той базы, где меню отображается корректно (например, из копии до свертки).Иногда отсутствие пунктов связано не с платформой, а с кодом в модуле документа. Проанализируем процедуру ОбработкаЗаполнения. Хотя она отвечает за создание нового документа, некоторые подсистемы (особенно если в УПП интегрирована БСП) могут программно скрывать кнопки, если не выполняются определенные условия.
Посмотрим на пример стандартного обработчика:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// Логика заполнения на основании реализации
ЗаполнитьПоРеализации(ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Если в конфигурации используется программное управление командным интерфейсом, проверьте также модуль формы документа, процедуру ПриОткрытии (или ПриСозданииНаСервере для управляемых форм). Выясним причину, не вызывается ли там метод ЭтотОбъект.КоманднаяПанельФормы.Кнопки...Доступность = Ложь или аналогичные конструкции, скрывающие подменю «Ввести на основании».
Если ни один из методов выше не привел к результату, выполните следующие действия по очистке окружения:
%AppData%\1C\1Cv8. Часто именно старые индексы форм в кэше мешают корректному отображению меню.Администрирование — Тестирование и исправление. Обязательно выберите пункты «Реиндексация таблиц информационной базы» и «Проверка логической целостности конфигурации». Это исправит возможные ошибки в таблицах связей, которые могли возникнуть при «прыжках» между версиями платформ.Подводя итог, можно сказать, что проблема исчезновения кнопок чаще всего является следствием некорректного обновления внутренних индексов 1С. Манипуляция с режимом совместимости — это мощный инструмент принудительного обновления метаданных, который экономит время и избавляет от необходимости глубокой переработки конфигурации.