my $OnNew = <<EOF
//_____________________________________________________________________________
Процедура ВводНового(Копирование)
	ЭтотДок.ПриВводеНовогоДокумента(Копирование);

	Если Копирование = 1 Тогда
		Возврат;
	КонецЕсли;
КонецПроцедуры
EOF
;
my $OnNewFrom = <<EOF
//_____________________________________________________________________________
Процедура ВводНаОсновании(ДокОсн)
	ЭтотДок.ПриВводеНаОсновании(ДокОсн);
КонецПроцедуры
EOF
;
my $OnOpen = <<EOF
//_____________________________________________________________________________
Процедура ПриОткрытии()
	ПриЗаписиПерепроводить(1);
	ЭтотДок.ПриОткрытииФормы();
КонецПроцедуры
EOF
;
my $OnSave1_body = <<EOF
Если ЭтотДок.ПриЗаписи() = 0 Тогда
	СтатусВозврата(0);
	Возврат;
КонецЕсли;
EOF
;
my $OnSave1 = <<EOF
//_____________________________________________________________________________
Процедура стар_ПриЗаписи()
	Если ЭтотДок.ПриЗаписи() = 0 Тогда
		СтатусВозврата(0);
		Возврат;
	КонецЕсли;
КонецПроцедуры
EOF
;
my $OnSave2 = <<EOF
//Начало текста, вставленного Инсталлятором МОД
Процедура ПриЗаписи()
	//Внимание: данная процедура при обновлении Менеджера будет перезаписана заново
	//без сохранения текущего кода !!!
	//Рекомендуем собственные алгоритмы записывать в старую процедуру с префиксом стар_
	ПриИзмененииОбъекта(Контекст, ТекущийДокумент(), ДатаДок);
	стар_ПриЗаписи();
КонецПроцедуры
//Конец текста, вставленного Инсталлятором МОД
EOF
;
my $proc_dividor = "//_____________________________________________________________________________";

CodeWorks::CreateProc("ПриЗаписи", $OnSave2, "");
CodeWorks::InsertCode($ObjName, "ПриЗаписи", "ПриИзмененииОбъекта(Контекст, ТекущийДокумент(), ДатаДок);\nстар_ПриЗаписи();");
CodeWorks::CreateProc("стар_ПриЗаписи", $OnSave1, "ПриЗаписи");
CodeWorks::InsertCode($ObjName, "стар_ПриЗаписи", $OnSave1_body);

CodeWorks::CreateProc("ПриОткрытии", $OnOpen, "стар_ПриЗаписи");
CodeWorks::InsertCode($ObjName, "ПриОткрытии", "ЭтотДок.ПриОткрытииФормы();");
CodeWorks::InsertCode($ObjName, "ПриОткрытии", "ПриЗаписиПерепроводить(1);");

CodeWorks::CreateProc("ВводНового", $OnNew, "ПриОткрытии");
CodeWorks::InsertCode($ObjName, "ВводНового", "ЭтотДок.ПриВводеНовогоДокумента(Копирование);");
CodeWorks::CreateProc("ВводНаОсновании", $OnNewFrom, "ПриОткрытии");
CodeWorks::InsertCode($ObjName, "ВводНаОсновании", "ЭтотДок.ПриВводеНаОсновании(ДокОсн);");

CodeWorks::InsertVarDecl($ObjName, "", "ЭтотДок");
CodeWorks::InsertCode($ObjName, "", "\nЭтотДок = СоздатьОбъект(\"ТДокумент.Форма\");");

CodeWorks::RemoveCode("СтрокуВСписок", "\/\/MOD{", "\/\/}MOD");

#пример удаления куска кода, ограниченного строками '//MOD{'  и  '//}MOD'
CodeWorks::RemoveCode("", "\/\/\\s*(MOD\\s*{)\\s*([\\d.-_:]*)", "\/\/}MOD");

