98 lines
7.6 KiB
Markdown
98 lines
7.6 KiB
Markdown
---
|
||
title: Добавление команд создания на основании
|
||
slug: общие-подключение-объектов-к-бсп/добавление-команд-создания-на-основании
|
||
---
|
||
|
||
# В общем модуле `CозданиеНаОснованииПереопределяемый`
|
||
|
||
В процедуру `ПриОпределенииОбъектовСКомандамиСозданияНаОсновании` добавляем менеджеры подключаемых объектов. Например:
|
||
|
||
```bsl
|
||
|
||
// Определяет список объектов конфигурации, в модулях менеджеров которых предусмотрена процедура
|
||
// ДобавитьКомандыСозданияНаОсновании, формирующая команды создания на основании объектов.
|
||
// Синтаксис процедуры ДобавитьКомандыСозданияНаОсновании см. в документации.
|
||
//
|
||
// Параметры:
|
||
// Объекты - Массив - объекты метаданных (ОбъектМетаданных) с командами создания на основании.
|
||
//
|
||
// Пример:
|
||
// Объекты.Добавить(Метаданные.Справочники.Организации);
|
||
//
|
||
Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты) Экспорт
|
||
|
||
// _Демо начало примера
|
||
Объекты.Добавить(Метаданные.Документы._ДемоЗаказПокупателя);
|
||
Объекты.Добавить(Метаданные.Документы._ДемоПоступлениеТоваров);
|
||
// _Демо конец примера
|
||
|
||
КонецПроцедуры
|
||
|
||
```
|
||
|
||
# В модуле менеджера
|
||
## Добавление команд создания на основании
|
||
Если необходимо создавать какие-то объекты на основании собственного, в первую очередь нужно вывести команды создания на основании на форму документа.
|
||
Для этого:
|
||
|
||
1. Форма должна быть подключена к механизму «Подключаемые команды»
|
||
2. В модуле менеджера собственного документа нужно реализовать экспортную процедуру `ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)`
|
||
|
||
```bsl
|
||
// Определяет список команд создания на основании.
|
||
//
|
||
// Параметры:
|
||
// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
|
||
// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
|
||
//
|
||
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
|
||
|
||
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказДавальца) Тогда
|
||
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
|
||
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказДавальца.ПолноеИмя();
|
||
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказДавальца);
|
||
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
```
|
||
В этой процедуре определяется, какие документы будут создаваться на основании. Для многих типовых документов реализована экспортная процедура для добавления такой команды. Например, если нужно создавать только документы `ЗаказКлиента` и `ЗаказПоставщику` (для которых реализованы такие экспортные команды), то код может выглядеть так
|
||
|
||
```bsl
|
||
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
|
||
|
||
Документы.ЗаказКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
|
||
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
|
||
|
||
КонецПроцедуры
|
||
```
|
||
|
||
## Интерфейс для создания команд для создания нашего объекта
|
||
Если мы хотим дать возможность так же просто создавать команды создания на основании для своего документа, то нужно так же реализовать экспортную процедуру:
|
||
```bsl
|
||
|
||
// Добавляет команду создания документа
|
||
//
|
||
// Параметры:
|
||
// КомандыСозданияНаОсновании - ТаблицаЗначений - Таблица с командами создания на основании. Для изменения.
|
||
// См. описание 1 параметра процедуры СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании().
|
||
//
|
||
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
|
||
|
||
Если ПравоДоступа("Добавление", Метаданные.Документы.<МойДокумент>) Тогда
|
||
|
||
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
|
||
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.<МойДокумент>.ПолноеИмя();
|
||
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.<МойДокумент>);
|
||
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
|
||
|
||
Возврат КомандаСоздатьНаОсновании;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
```
|
||
# Подключение к подсистеме "Подключаемые команды"
|
||
См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"` |