Почему в форме документа 1С пропадают пункты меню «Ввести на основании» и как их вернуть?

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

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

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

Механика формирования меню «Ввести на основании»

Для начала проанализируем, как платформа 1С строит этот список. В обычных формах (которые являются стандартом для УПП 1.3) подменю заполняется динамически в момент открытия формы или нажатия на кнопку «Действия». Платформа обращается к дереву метаданных и ищет все объекты, у которых в свойстве Является основанием для указан текущий тип документа.

Важно понимать различие между двумя свойствами в конфигураторе:

  1. Вводится на основании — определяет список документов, которые могут стать «родителем» для текущего объекта.
  2. Является основанием для — определяет список «дочерних» документов, которые могут быть созданы на базе текущего.

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

Причина проблемы: конфликт версий платформы

Как показывает практика, основной триггер проблемы — работа с базой данных на разных версиях платформы 1С. Рассмотрим типичный сценарий: администратор выгружает базу, разворачивает её на новой версии платформы (например, для выполнения тяжелой операции свертки или тестирования), а затем возвращает результат обратно в рабочую среду на старую версию платформы. Несмотря на то, что сама конфигурация (.cf) не менялась, внутренняя структура базы данных (таблицы Config, ConfigSave) претерпевает изменения, которые старая версия платформы может интерпретировать некорректно. В частности, «ломаются» индексы командного интерфейса.

Способ 1: Принудительная регенерация интерфейса (решение через «Такси»)

Это самый эффективный метод, найденный опытным путем. Он заставляет платформу полностью перестроить внутренние таблицы соответствия команд и метаданных. Суть заключается в кратковременном переключении режима совместимости интерфейса.

Рассмотрим порядок действий пошагово:

  1. Запустите Конфигуратор и создайте резервную копию базы данных (на всякий случай).
  2. Откройте свойства корневого узла конфигурации (правой кнопкой на названии конфигурации — Свойства).
  3. Найдите свойство Режим совместимости интерфейса.
  4. Установите значение Разрешить Такси (даже если у вас обычные формы и вы не планируете использовать Такси).
  5. Выполните обновление конфигурации базы данных (клавиша F7). Примите изменения в структуре.
  6. Запустите режим 1С:Предприятие. Дождитесь полной загрузки интерфейса. Проверять кнопку не обязательно, на этом этапе главное — запустить процесс инициализации новых схем.
  7. Закройте 1С:Предприятие и вернитесь в Конфигуратор.
  8. Верните свойство Режим совместимости интерфейса в исходное состояние (например, Версия 8.2).
  9. Снова обновите конфигурацию базы данных (F7).

После этих манипуляций платформа переиндексирует все связи метаданных, и меню «Ввести на основании» должно восстановиться в полном объеме.

Способ 2: Загрузка конфигурации из файла

Если первый способ не помог, проанализируем ситуацию с точки зрения целостности метаданных. Иногда простого сравнения и объединения недостаточно, так как проблема кроется не в программном коде, а в заголовках объектов метаданных. В этом случае помогает полная перезапись конфигурации.

Алгоритм действий:

  1. Возьмите файл конфигурации (.cf) из той базы, где меню отображается корректно (например, из копии до свертки).
  2. В проблемной базе выберите пункт меню Конфигурация — Загрузить конфигурацию из файла.
  3. Важно: Не используйте «Сравнение и объединение», так как оно может пропустить скрытые системные отличия. Именно «Загрузка» полностью заменяет структуру метаданных.
  4. После загрузки выполните обновление (F7).

Проверка программного формирования меню

Иногда отсутствие пунктов связано не с платформой, а с кодом в модуле документа. Проанализируем процедуру ОбработкаЗаполнения. Хотя она отвечает за создание нового документа, некоторые подсистемы (особенно если в УПП интегрирована БСП) могут программно скрывать кнопки, если не выполняются определенные условия.

Посмотрим на пример стандартного обработчика:


Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        // Логика заполнения на основании реализации
        ЗаполнитьПоРеализации(ДанныеЗаполнения);
    КонецЕсли;
КонецПроцедуры

Если в конфигурации используется программное управление командным интерфейсом, проверьте также модуль формы документа, процедуру ПриОткрытии (или ПриСозданииНаСервере для управляемых форм). Выясним причину, не вызывается ли там метод ЭтотОбъект.КоманднаяПанельФормы.Кнопки...Доступность = Ложь или аналогичные конструкции, скрывающие подменю «Ввести на основании».

Дополнительные рекомендации

Если ни один из методов выше не привел к результату, выполните следующие действия по очистке окружения:

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

← На главную