---
title: Добавление команд создания на основании
slug: общие-бсп-стандартные-подсистемы-3-1-10-подключаемые-команды-команды-создания-на-основании/добавление-команд-создания-на-основании
---

# В общем модуле `CозданиеНаОснованииПереопределяемый`

В процедуру `ПриОпределенииОбъектовСКомандамиСозданияНаОсновании` добавляем менеджеры подключаемых объектов. Например:

```bsl

// Определяет список объектов конфигурации, в модулях менеджеров которых предусмотрена процедура 
// ДобавитьКомандыСозданияНаОсновании, формирующая команды создания на основании объектов.
// Синтаксис процедуры ДобавитьКомандыСозданияНаОсновании см. в документации.
//
// Параметры:
//   Объекты - Массив - объекты метаданных (ОбъектМетаданных) с командами создания на основании.
//
// Пример:
//  Объекты.Добавить(Метаданные.Справочники.Организации);
//
Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты) Экспорт
	
	// _Демо начало примера
	Объекты.Добавить(Метаданные.Документы._ДемоЗаказПокупателя);
	Объекты.Добавить(Метаданные.Документы._ДемоПоступлениеТоваров);
	// _Демо конец примера

КонецПроцедуры

```

# В модуле менеджера
## Добавление команд создания на основании
Если необходимо создавать какие-то объекты на основании собственного, в первую очередь нужно вывести команды создания на основании на форму документа.
Для этого:

1. Форма должна быть подключена к механизму «Подключаемые команды»
2. В модуле менеджера собственного документа нужно реализовать экспортную процедуру `ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)`

```bsl
// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
 
	Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказДавальца) Тогда
		КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
		КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказДавальца.ПолноеИмя();
		КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказДавальца);
		КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
	КонецЕсли;
	
КонецПроцедуры
```
В этой процедуре определяется, какие документы будут создаваться на основании. Для многих типовых документов реализована экспортная процедура для добавления такой команды. Например, если нужно создавать только документы `ЗаказКлиента` и `ЗаказПоставщику` (для которых реализованы такие экспортные команды), то код может выглядеть так

```bsl
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	Документы.ЗаказКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры
```

## Интерфейс для создания команд для создания нашего объекта
Если мы хотим дать возможность так же просто создавать команды создания на основании для своего документа, то нужно так же реализовать экспортную процедуру:
```bsl

// Добавляет команду создания документа
//
// Параметры:
//   КомандыСозданияНаОсновании - ТаблицаЗначений - Таблица с командами создания на основании. Для изменения.
//       См. описание 1 параметра процедуры СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании().
//
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
 
    Если ПравоДоступа("Добавление", Метаданные.Документы.<МойДокумент>) Тогда
        
        КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
        КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.<МойДокумент>.ПолноеИмя();
        КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.<МойДокумент>);
        КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
		
        Возврат КомандаСоздатьНаОсновании;
		
    КонецЕсли;
	
    Возврат Неопределено;
	
КонецФункции
```
# Настройка формы
Нужно создать группу в командной панели(скопируй из типового объекта)
// * ПодменюСоздатьНаОсновании
//    ** ПодменюСоздатьНаОснованииВажное
//    ** ПодменюСоздатьНаОснованииОбычное
//    ** ПодменюСоздатьНаОснованииСмТакже

Нужно подключить форму к подсистеме `Подключаемые команды`
