Как вызвать штатную команду (процедуру, функцию, или что там) создать документ на основании?

Версия для печатиPDF-версия

В заказе покупателя конфигурации УТ 10.3 в документе ЗаказПокупателя имеется кнопка (а так же правой вкладка в Списке…) На основании.

Где можно создать, например, документ РеализацияТоваровУслуг.

Захотелось создать кнопку последовательного выполнения нескольких команд, среди которых и создание Реализации на основании Заказа.

И тут обнаружил, что не могу найти вызова штатной процедуры.

Яндекс выдает на гора множество вариантов создания вручную.

Попробовал,  не очень подходит.

У штатной процедуры, имеется важная функция, внесение в Реализацию товаров имеющихся в свободном остатке.

В то время как в ручных вариантах, это целая песня.

Вот и подумал, зачем изобретать велосипед?

Куда проще запускать штатную, которая удовлетворяет всем требованиям…

 

Подскажите, пожалуйста, как вызвать штатную команду?

Вот информация из синтакс-помощника:


ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Заполнить (Fill)
Синтаксис:
Заполнить(<ДанныеЗаполнения>)
Параметры:
<ДанныеЗаполнения> (обязательный)
Тип: Произвольный.
Значение, на основании которого выполняется заполнение документа.
Описание:
Заполняет данные документа данными из другого объекта. Инициирует событие ОбработкаЗаполнения и вызов его процедуры-обработчика в модуле документа. В ней может размещаться алгоритм, заполняющий данные документа из переданного значения.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Для заполнения может использоваться значение любого типа.
Пример:

РасходнаяНакладная.Заполнить(ВыбКонтрагент);

 

Не совсем то о чем я спрашивал...

Это фактически воссоздавать механизм, который уже создан с конфигурации.

В то время, когда уже имеющийся вполне устраивает.

Вопрос был в том, как вызвать уже имеющийся механизм?

Т.е. как вызвать механизм, который штатно вызывается кнопкой На основании?

Что значит "воссоздавать механизм, который уже создан в конфигурации"? Ничего воссоздавать не нужно. Метод Заполнить() вызывает обработчик события ОбработкаЗаполнения, описанный в модуле объекта создаваемого документа. Единственное отличие от механизма ввода на основании, это то, что нужно предварительно создать документ. Т.е. весь код, воссоздающий ввод на основании, будет состоять из 3 строк (при условии, что ввод на основании соответствующего документа предусмотрен в конфигурации):

НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДокумент.Заполнить(ДокументОснование);
НовыйДокумент.ПолучитьФорму("ФормаДокумента").Открыть();

ДА!

ДА!

ДА!

Это оно!

А то я уже стал писать подобный код:


//Заполняем основные реквизиты
НашДокумент.Сделка = Ссылка;
НашДокумент.Дата = ТекущаяДата();
НашДокумент.Организация = Организация;
НашДокумент.Контрагент = Контрагент;
НашДокумент.Склад = СкладГруппа;
////НашДокумент.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;


////Заполняем табличную часть документа
////Товары = НашДокумент.Товары;

////НашДокумент.Товары = Товары;

////Строка = Товары.Добавить();
////Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(«Лен(семена льна)»);
////Строка.Количество = 27 460;
////Строка.Цена = 22,05;
////Строка.Сумма = Строка.Количество*Строка.Цена;

////Строка = Товары.Добавить();
////Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(«Лен 2015г.»);
////Строка.Количество = 420;
////Строка.Цена = 22,05;
////Строка.Сумма = Строка.Количество*Строка.Цена;


	РЕУФорма = НашДокумент.ПолучитьФорму();
	РЕУФорма.Открыть();	

Огромное СПАСИБО!

Реализовал так:


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

	Попытка
	РежимЗаписи = ?(НоваяРеализация.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Проведение);
	НоваяРеализацияФорма.Записать(РежимЗаписи);

	ПоказатьОповещениеПользователя("Успешное выполнение.",,"Создана Реализация товаров и услуг № "+мНомерРеализации+" Записана и Проведена.");
	//НоваяРеализацияФорма.Закрыть();

	Исключение
		НоваяРеализацияФорма.Записать();
	
	ПоказатьОповещениеПользователя("Ошибка!",,"Создана Реализация товаров и услуг № "+мНомерРеализации+" Записана и НО НЕ Проведена!!!");


	КонецПопытки;

 

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

ПС. Проверка режима записи (проведен/не проведен) не имеет смысла, т.к. новый документ всегда не проведен.

Точно!

прозевал символ.

Создание без открытия, тоже интересная мысль.

Правда не в этом документе, но вполне возможно понадобится.

Обязательно попробую.

Спасибо!