Создание операции через меню "На основании".
Пример на основании документа "Передача товаров между организациями"
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт
Если ОбъектыНазначенияМассив.Количество()=0 Тогда Возврат КонецЕсли;
Форма=ПолучитьФорму("Документ.ПередачаТоваровМеждуОрганизациями.ФормаОбъекта",Новый Структура("Ключ",ОбъектыНазначенияМассив[0]));
Счет=СоздатьСчет(ОбъектыНазначенияМассив[0],Форма.Открыта());
ОткрытьФорму("Документ.СчетНаОплатуКлиенту.ФормаОбъекта",Новый Структура("Ключ",Счет));
Если Форма.Открыта() Тогда
Форма.Объект.Комментарий=?(Форма.Объект.Комментарий="","",Форма.Объект.Комментарий+Символы.ПС)+Счет;
Форма.Модифицированность=Истина;
//ОбновитьФорму();
// ОбъектФормы=Форма.Объект;
// ОбновитьФорму(ОбъектФормы);
// КопироватьДанныеФормы(ОбъектФормы,Форма.Объект);
КонецЕсли;
КонецПроцедуры
//&НаСервере
//Процедура ОбновитьФорму(ОбъектФормы) ОбъектФормы.Комментарий=ОбъектФормы.Ссылка.Комментарий КонецПроцедуры
Функция СоздатьСчет(Док,ФормаОткрыта)
Счет=Документы.СчетНаОплатуКлиенту.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(Счет,Док);
Счет.Номер="";
Счет.Комментарий="На основании "+Док;
Счет.ДокументОснование=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
//Счет.Организация=Док.Организация;
//Счет.Дата=Док.Дата;
//Счет.СуммаДокумента=Док.СуммаДокумента;
Счет.Записать();
Если НЕ ФормаОткрыта Тогда
Источник=Док.ПолучитьОбъект();
Источник.Комментарий=?(Источник.Комментарий="","",Источник.Комментарий+Символы.ПС)+Счет;
Источник.Записать();
КонецЕсли;
Возврат Счет.Ссылка
КонецФункции
&НаКлиенте
Процедура Тест(Команда)
ОбъектыНазначенияМассив=Новый Массив;
ОбъектыНазначенияМассив.Добавить(Ссылка);
ВыполнитьКоманду("", ОбъектыНазначенияМассив, "");
КонецПроцедуры
Пример на основании документа "Передача товаров между организациями"
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт
Если ОбъектыНазначенияМассив.Количество()=0 Тогда Возврат КонецЕсли;
Форма=ПолучитьФорму("Документ.ПередачаТоваровМеждуОрганизациями.ФормаОбъекта",Новый Структура("Ключ",ОбъектыНазначенияМассив[0]));
Счет=СоздатьСчет(ОбъектыНазначенияМассив[0],Форма.Открыта());
ОткрытьФорму("Документ.СчетНаОплатуКлиенту.ФормаОбъекта",Новый Структура("Ключ",Счет));
Если Форма.Открыта() Тогда
Форма.Объект.Комментарий=?(Форма.Объект.Комментарий="","",Форма.Объект.Комментарий+Символы.ПС)+Счет;
Форма.Модифицированность=Истина;
//ОбновитьФорму();
// ОбъектФормы=Форма.Объект;
// ОбновитьФорму(ОбъектФормы);
// КопироватьДанныеФормы(ОбъектФормы,Форма.Объект);
КонецЕсли;
КонецПроцедуры
//&НаСервере
//Процедура ОбновитьФорму(ОбъектФормы) ОбъектФормы.Комментарий=ОбъектФормы.Ссылка.Комментарий КонецПроцедуры
Функция СоздатьСчет(Док,ФормаОткрыта)
Счет=Документы.СчетНаОплатуКлиенту.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(Счет,Док);
Счет.Номер="";
Счет.Комментарий="На основании "+Док;
Счет.ДокументОснование=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
//Счет.Организация=Док.Организация;
//Счет.Дата=Док.Дата;
//Счет.СуммаДокумента=Док.СуммаДокумента;
Счет.Записать();
Если НЕ ФормаОткрыта Тогда
Источник=Док.ПолучитьОбъект();
Источник.Комментарий=?(Источник.Комментарий="","",Источник.Комментарий+Символы.ПС)+Счет;
Источник.Записать();
КонецЕсли;
Возврат Счет.Ссылка
КонецФункции
&НаКлиенте
Процедура Тест(Команда)
ОбъектыНазначенияМассив=Новый Массив;
ОбъектыНазначенияМассив.Добавить(Ссылка);
ВыполнитьКоманду("", ОбъектыНазначенияМассив, "");
КонецПроцедуры
Комментариев нет:
Отправить комментарий