DmSk писал(а) 01. Сентября 2011 :: 09:15:Anatol писал(а) 01. Сентября 2011 :: 08:00:DmSk писал(а) 31. Августа 2011 :: 12:43:Проблема, когда из журнала документ создается копированием(правой кнопкой - скопировать), то флаг, что это копия не передаётся.
//***************************************************
Процедура ВводНового(ФлКопия)
Сообщить(ФлКопия);
КонецПроцедуры
всегда выводится 0
это имхо системный флаг и его врятли передашь...
если хочешь заполнить осбым образом новый документ, то придется из журнала в ПередНачаломДобавления
сделал. непривычно все таки, всё что раньше писалось в форме дока, теперь придется переписывать в форму журнала ТП(так как по сути копирование дока программное).
Но все равно полезности перевешивают "трудности".
Спасибо
вот в общем немного всё переделал, поскольку в сложных документах в "при открытии" заполняются несколько табличных частей, а при копировании в ТП, все реквизиты копируются после выполнения процедуры "при открытии", придумал так
в форме журнала ТП код:
//************************************************
Процедура ТППередНачаломДобавления(Табл,Копирование, ФСО)
Если Копирование = 1 Тогда
ФСО = 0;
ТекущийДокумент = ТабличноеПоле.ТекущаяСтрока;
ВидДокумента = ТекущийДокумент.Вид();
МетаДокумент = Метаданные.Документ(ВидДокумента);
КонтФормы = ТекущийДокумент;
ОткрытьФорму("Документ."+ВидДокумента,КонтФормы);
КонтФормы.Форма.Обновить();
КонецЕсли;
КонецПроцедуры
//таким образом в новый документ в виде контекста посылаем копируемый документ
в форме документа немного дописываем процедуру "ПриОткрытии"
//***************************************************
Процедура ПриОткрытии()
ФП = Форма.Параметр;
Если ПустоеЗначение(ФП) = 0 Тогда
// фактически копирование документа производим в процедуре "ПриОткрытии"
ТекДок = ФП;
ВидДокумента = ТекДок.Вид();
МетаДокумент = Метаданные.Документ(ВидДокумента);
ДатаДок = ТекДок.ДатаДок;
Для НомерРеквизита = 1 По МетаДокумент.РеквизитШапки() Цикл
МетаРеквизит = МетаДокумент.РеквизитШапки(НомерРеквизита);
ЗначениеРеквизита = ТекДок.ПолучитьАтрибут(МетаРеквизит.Идентификатор);
УстановитьАтрибут(МетаРеквизит.Идентификатор,ЗначениеРеквизита);
КонецЦикла;
// копирование общих реквизитов
Для НомерРеквизита = 1 По Метаданные.ОбщийРеквизитДокумента() Цикл
МетаРеквизит = Метаданные.ОбщийРеквизитДокумента(НомерРеквизита);
ЗначениеРеквизита = ТекДок.ПолучитьАтрибут(МетаРеквизит.Идентификатор);
УстановитьАтрибут(МетаРеквизит.Идентификатор,ЗначениеРеквизита);
КонецЦикла;
МногострочнаяЧасть = СоздатьОбъект("ТаблицаЗначений");
ТекДок.ВыгрузитьТабличнуюЧасть(МногострочнаяЧасть);
ЗагрузитьТабличнуюЧасть(МногострочнаяЧасть);