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

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

CodeWorks::CreateProc("ПриОткрытии", $OnOpen, "ПриЗакрытии, стар_ПриЗаписи, ПриЗаписи");

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


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

CodeWorks::InsertVarDecl($ObjName, "", "ЭтотСпр");
CodeWorks::InsertCode($ObjName, "", "\nЭтотСпр = СоздатьОбъект(\"ТСправочник\");");

#CodeWorks::RemoveVarDecl($ObjName, "", "ЭтотСпр");
#CodeWorks::RenameObject($ObjName, "", "ЭтотСпр", "ЭтотСпр2");

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