При разработке новых функциональных блоков в 1С:ERP или других конфигурациях на базе БСП (Библиотеки стандартных подсистем) программисты часто сталкиваются с тем, что стандартного указания связей «Ввод на основании» в метаданных недостаточно. Одной из наиболее востребованных функций является создание бизнес-процесса Задание на основании произвольного документа. Рассмотрим подробно, как реализовать этот механизм и почему кнопка может не появляться, если вы используете расширение конфигурации.
Первым делом проанализируем базовые требования платформы и БСП к объекту-основанию. Чтобы система понимала, что ваш документ может выступать предметом задачи, необходимо выполнить следующие действия в основной конфигурации или через расширение:
Предмет бизнес-процесса Задание.Задание. На закладке Вводится на основании убедимся, что в списке отмечен наш документ.Задание.Проверим эти настройки. Если после выполнения указанных шагов кнопка в подменю «Создать на основании» не появилась, значит, в конфигурации задействован механизм подключаемых команд БСП, который требует программной регистрации.
В современных версиях 1С:ERP (начиная с релизов 2.4/2.5) меню «Создать на основании» формируется динамически. Проанализируем модуль менеджера любого типового документа, у которого кнопка «Задание» отображается корректно. Мы увидим там экспортную процедуру, которую необходимо добавить и в наш документ.
Разберем пример кода, который нужно разместить в модуле менеджера вашего документа:
// Определяет список команд создания на основании.
//
// Параметры:
// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
// В большинстве случаев для типового бизнес-процесса "Задание"
// БСП сама подхватывает настройки, если заполнены метаданные.
// Но здесь можно принудительно описать логику появления команды.
КонецПроцедуры
Если вы работаете в расширении, создайте модуль менеджера для вашего документа и добавьте эту процедуру с аннотацией &После или &Вместо, в зависимости от логики основной конфигурации.
Выясним причину, по которой кнопка может исчезнуть, если форма документа создана или заимствована в расширении. Это одна из самых распространенных проблем. Когда форма документа замещается формой из расширения, стандартные механизмы инициализации БСП могут не отрабатывать автоматически.
Для решения этой проблемы выполним следующие шаги:
ПодключаемыеОтчетыИОбработки.Задание в ваше расширение. Без наличия объекта в контексте расширения система может игнорировать связанные с ним команды.ПриСозданииНаСервере обязательно должен быть вызов инициализации подключаемых команд. Если вы полностью перекрыли процедуру, добавьте следующий код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Инициализация механизма подключаемых команд БСП
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
Этот вызов заставляет систему просканировать метаданные и программные интерфейсы, чтобы динамически отрисовать кнопки в подменю «Создать на основании».
В некоторых редакциях ERP требуется явная регистрация типов в переопределяемых модулях. Проанализируем ситуацию с модулем БизнесПроцессыИЗадачиПереопределяемый. Посмотрим, есть ли в нем процедура ПриОпределенииТиповПредметовЗадач. Если конфигурация требует строгого перечисления объектов, поддерживающих задачи, нам нужно расширить этот список.
Пример расширения модуля через &После:
&После("ПриОпределенииТиповПредметовЗадач")
Процедура Расш_ПриОпределенииТиповПредметовЗадач(Типы)
// Добавляем наш документ в массив разрешенных типов для задач
Типы.Добавить(Тип("ДокументСсылка.МойНовыйДокумент"));
КонецПроцедуры
Если все вышеперечисленные действия выполнены, но кнопки все еще нет, проанализируем настройки прав и функциональные опции. В 1С:ERP функционал задач часто привязан к опции ИспользоватьБизнесПроцессыИЗадачи.
Убедимся в следующем:
Задание и права на чтение нового документа.В завершение процесса настройки важно помнить о кэшировании. БСП кэширует список подключаемых команд в специальных регистрах сведений или параметрах сеанса. После внесения изменений в расширение (особенно в определяемые типы) рекомендуется выполнить запуск базы с параметром:
/С ЗапуститьОбновлениеИнформационнойБазы
Это принудительно обновит вспомогательные данные конфигурации и гарантирует, что новые команды будут зарегистрированы в системе корректно.
Резюмируем: Для появления кнопки «Задание» необходимо не только настроить метаданные «Ввод на основании» и определяемый тип ПредметЗадачи, но и обеспечить вызов ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма) в модуле формы, особенно если она создана в расширении.