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

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

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

Анализ механизма «Создание на основании» в конфигурациях на базе БСП

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

Шаг 1. Проверка функциональных опций

Прежде чем погружаться в написание кода, проверим настройки самой программы. В УТ 11 многие подсистемы отключаются функциональными опциями. Если подсистема бизнес-процессов выключена в интерфейсе, кнопки создания заданий не будут видны ни в одном объекте. Рассмотрим, где это проверить:

  1. Перейдем в раздел НСИ и администрирование.
  2. Выберем пункт Настройка НСИ и разделов -> Органайзер.
  3. Развернем группу Бизнес-процессы и задачи.
  4. Убедимся, что флаг Бизнес-процессы и задачи установлен.

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

Шаг 2. Регистрация объекта в общем модуле «СозданиеНаОснованииПереопределяемый»

Это ключевой момент, который часто упускают разработчики. Механизм БСП требует явной регистрации связей между объектами-основаниями и создаваемыми объектами. Проанализируем работу общего модуля СозданиеНаОснованииПереопределяемый. Нам необходимо найти процедуру ПриОпределенииСпискаКомандСозданияНаОсновании. Именно здесь система формирует дерево команд, которые будут выведены в меню «Создать на основании».

Разберем пример того, как нужно дополнить код в этом модуле (или через расширение), чтобы ваш справочник стал «законным» основанием для задания:


Процедура ПриОпределенииСпискаКомандСозданияНаОсновании(СписокКоманд) Экспорт
    
    // Добавляем наш самописный справочник в список объектов, 
    // для которых разрешено создание заданий на основании.
    // Вместо "ВашСправочник" укажите имя вашего объекта из конфигуратора.
    
    СписокКоманд.Добавить(Метаданные.БизнесПроцессы.Задание.ПолноеИмя(), 
                         Метаданные.Справочники.ВашСправочник.ПолноеИмя());
    
КонецПроцедуры

После внесения этих изменений механизм БСП поймет, что для вашего справочника нужно генерировать команду создания бизнес-процесса Задание.

Шаг 3. Регистрация в модуле менеджера объекта

В последних версиях БСП (начиная с 2.4/3.0) логика определения команд часто выносится непосредственно в модули менеджеров объектов. Посмотрим на пример процедуры, которая должна присутствовать в модуле менеджера вашего справочника:


// В модуле менеджера справочника "ВашСправочник"
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
    Команда = КомандыСозданияНаОсновании.Добавить();
    Команда.Менеджер = "БизнесПроцесс.Задание";
    Команда.Представление = НСтр("ru = 'Задание'");
    Команда.ПроверкаПроведенности = Ложь;
    Команда.Порядок = 10;
	
КонецПроцедуры

Проанализируем ситуацию: если эта процедура отсутствует или в ней не описан вызов создания задания, БСП может просто не «увидеть» связь, даже если она указана в метаданных. Убедитесь, что ваш справочник включен в состав типов подсистемы СозданиеНаОсновании.

Шаг 4. Настройка прав доступа и ролей

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

  1. У пользователя должна быть роль Добавление и изменение заданий (или аналогичная в вашей версии конфигурации).
  2. У пользователя должны быть права на Чтение и Просмотр вашего самописного справочника.
  3. Проверьте Профили групп доступа. В УТ 11 права назначаются через профили. Убедитесь, что в профиль текущего пользователя включена роль, позволяющая работать с бизнес-процессом Задание.

Важно помнить про RLS (ограничение прав на уровне записей). Если на ваш справочник наложены ограничения, и текущий пользователь не видит ни одной записи, кнопка создания на основании также может быть скрыта системой в целях безопасности.

Шаг 5. Командный интерфейс и программный вывод в форме

Иногда кнопка не появляется из-за того, что форма объекта была создана давно и в ней жестко задан состав командной панели. Рассмотрим подробнее код формы объекта вашего справочника. В процедуре ПриСозданииНаСервере должен присутствовать вызов инициализации команд БСП:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Подключение механизма создания на основании БСП
    ПараметрыПодключения = СозданиеНаОсновании.ПараметрыПодключения();
    СозданиеНаОсновании.ПриСозданииНаСервере(ЭтаФорма, ПараметрыПодключения);
    
КонецПроцедуры

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

Шаг 6. Реализация логики заполнения

Кнопка — это только половина дела. Нам нужно, чтобы при создании Задания в него передавались данные из вашего справочника. Разберем по шагам, как это сделать:

  1. Откроем модуль объекта бизнес-процесса Задание.
  2. Найдем обработчик события ОбработкаЗаполнения.
  3. Проверим, есть ли там логика для вашего типа данных. Обычно это выглядит как условие:

Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.ВашСправочник") Тогда
    // Заполняем реквизиты задания
    ЭтотОбъект.Предмет = ДанныеЗаполнения;
    ЭтотОбъект.Наименование = "Задание по справочнику: " + Строка(ДанныеЗаполнения);
    // Дополнительная логика
КонецЕсли;

Без этого кода форма задания откроется, но поле Предмет (которое является ключевым для бизнес-процесса) останется пустым, что сделает создание задания на основании бессмысленным.

Подведем итоги

Проанализировав все этапы, мы видим, что в современных конфигурациях 1С (УТ 11, ERP) настройка метаданных — это лишь первый шаг. Для полноценной работы кнопки «Создать на основании» необходимо обеспечить корректную работу программных модулей БСП, проверить функциональные опции «Органайзера» и убедиться в наличии соответствующих прав у пользователя. Использование расширений для изменения модуля СозданиеНаОснованииПереопределяемый является наиболее правильным и «чистым» способом решения данной задачи без изменения типовой конфигурации.

← На главную