Почему не все документы отображаются в меню «Создать на основании» в 1С?

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

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

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

Настройка стандартных команд в метаданных

Рассмотрим самую распространенную причину, с которой столкнулся автор темы. Даже если вы указали документ-источник в списке «Является основанием для» и настроили «Вводится на основании» в документе-приемнике, кнопка может не появиться. Проанализируем настройки свойств документа в конфигураторе.

Выясним причину: в объекте метаданных существует раздел «Команды». Для того чтобы платформа автоматически сформировала команды создания на основании и добавила их в интерфейс, должно быть активно свойство Использовать стандартные команды. Если эта галочка снята, документ не будет автоматически включен в стандартные группы команд, такие как «Создать на основании», даже при наличии всех связей.

Что нужно сделать:

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

Проверка командного интерфейса формы

Если со стандартными командами всё в порядке, но меню всё равно не содержит нужных пунктов, проанализируем настройки конкретной формы документа-основания. В управляемых формах 1С существует возможность гибко настраивать состав команд для каждой формы отдельно.

Рассмотрим последовательность действий для проверки командного интерфейса:

  1. Откройте форму документа, из которого вы хотите вводить на основании.
  2. В верхней части редактора формы перейдите на вкладку «Командный интерфейс».
  3. Найдите раздел «Создать на основании».
  4. Посмотрите на список команд. Если нужные документы там присутствуют, проверьте колонку «Видимость».
  5. Если флажки видимости сняты, установите их. Если самих документов нет в списке, это означает, что связь на уровне метаданных не определена или не обновлена.

Роли и права доступа

Проанализируем ситуацию с точки зрения безопасности. Система 1С автоматически скрывает из интерфейса любые команды, к которым у текущего пользователя нет доступа. Если документ ПКО должен создаваться на основании Регистрации проживания, но у пользователя нет права на Интерактивное добавление документа ПКО, команда «Создать на основании» просто не будет отображена.

Нам необходимо проверить права в конфигураторе:

  1. Найдите роль, назначенную пользователю.
  2. В дереве объектов роли найдите целевой документ (который не отображается).
  3. Проверьте наличие прав Просмотр, Ввод на основании и Интерактивное добавление.
  4. Если хотя бы одно из этих прав отсутствует, команда будет скрыта.

Влияние функциональных опций

В современных конфигурациях (БГУ, ERP, КА) широко используются Функциональные опции. Если документ или подсистема, к которой он относится, привязаны к функциональной опции, которая выключена в настройках программы, то документ исчезнет из всех интерфейсных меню.

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

Особенности работы с БСП (Библиотека стандартных подсистем)

В конфигурациях вроде БГУ 2.0 механизм «Создать на основании» часто переопределяется программно через БСП. В этом случае платформенные механизмы дополняются логикой в общих модулях.

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


Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(СписокОбъектов) Экспорт
    СписокОбъектов.Добавить(Документы.РегистрацияПроживания);
КонецПроцедуры

Если ваш документ-основание не зарегистрирован в подобных процедурах (если это предусмотрено логикой вашей конфигурации), стандартное меню может не заполниться автоматически. Также обратите внимание на модуль менеджера документа-приемника. Там может быть процедура ДобавитьКомандыСозданияНаОсновании, которая программно управляет видимостью кнопок в зависимости от типа операции или других условий.

Программная обработка заполнения

Иногда команда отображается, но не срабатывает, или её доступность ограничена логикой в модуле объекта. Разберем работу обработчика ОбработкаЗаполнения. Этот метод вызывается при создании документа на основании.

Рассмотрим пример кода в модуле документа-приемника:


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

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

Использование расширений

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

Решение для расширений:

  1. Зайдите в форму документа в расширении.
  2. Перейдите в командный интерфейс.
  3. Нажмите кнопку «Установить стандартные настройки» или вручную добавьте появившиеся команды в список видимых.

Очистка кэша

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

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

← На главную