Падает когда я открываю модуль с помощью скрипта ниже (после надо попереходить между окнами в 1с, если модуль до этого был открыт то может и не упасть). Форму вроде вообще перестал открывать.
этот открывает модуль объекта macrosОткрытьМодульОбъекта()
этот открывает форму macrosОткрытьОсновнуюФорму()
PS спасибо все таки за 8.3 наконец то дождались
Не хочет как файл цеплять, ниже в тэг код вставил модуль
PPS последовательность действий для падения.
1. Добавить скрипт в загружаемые
2. Открыть 1с
3. Открыть любую внешнюю обработку (хотя я открывал через свой скрипт внешние файлы)
4. Открыть модуль внешней обработки через макрос открыть модуль объекта
5. попереключатся на обработку и обратно на модуль (должно упасть) (если не упало, то попоробовать вызывать после 4 пункта из модуля обработки макрос по основной форме)
Код:
$engine JScript
$uname my_macros
$dname Мои макросы
$addin global
$addin stdcommands
$addin stdlib
var мВызовИзМакроса = false
events.connect(windows, "onDoModal", SelfScript.self, "onMessageBoxSetPassword");
//////////////////////////////////////////////////////////////////////////////////////
////{ Макросы
////
function macrosОткрытьМодульОбъекта() {
//debugger
try
{
windows.getActiveView().mdObj.editProperty("МодульОбъекта");
return true
}catch(e){}
return false
}
function macrosОткрытьОсновнуюФорму() {
try
{
var mdObj = windows.getActiveView().mdObj
var mainForm = mdObj.container.findByUUID(stdlib.getUuidFomMDRef(mdObj.property("ОсновнаяФорма")))
mainForm.editProperty("Форма")
return true
}catch(e){}
return false
}
function macrosОткрытьОкноНастройкиСкрипта() {
var pathToForm=SelfScript.fullPath.replace(/.js$/, '.ssf')
мФормаНастройки=loadScriptForm(pathToForm, SelfScript.self) // Обработку событий формы привяжем к самому скрипту
мФормаНастройки.ОткрытьМодально()
}
function ФормаНастройкиПриОткрытии() {
мФормаНастройки.ПарольНаМодули=мПарольНаМодульПоУмолчанию
}
function КпШапкаСохранитьИЗакрыть() {
мПарольНаМодульПоУмолчанию=мФормаНастройки.ПарольНаМодули
profileRoot.setValue(pflMyModulePass, мПарольНаМодульПоУмолчанию)
мФормаНастройки.Закрыть()
}
function macrosУстановитьПароль() {
мВызовИзМакроса = true
sendCommand("{EF6D156B-12FB-4CE7-A0E9-7F0C2EDC7D06}", 0)
мВызовИзМакроса = false
}
function onMessageBoxSetPassword(dlgInfo) {
if (мПарольНаМодульПоУмолчанию == ""){
return macrosОткрытьОсновнуюФорму()
}
if ((dlgInfo.stage==openModalWnd) && (dlgInfo.Caption=="Защита модуля") && (мВызовИзМакроса==true)){
dlgInfo.form.getControl("Password").value=мПарольНаМодульПоУмолчанию;
dlgInfo.form.getControl("ConfirmPassword").value=мПарольНаМодульПоУмолчанию;
new ActiveXObject("WScript.Shell").SendKeys("^~"); // Ctrl+Enter
}
}
var grid
stdcommands.CDebug.EvalExpr.addHandler(SelfScript.self, "onEvalExpr")
function onEvalExpr(cmd) {
if(cmd.isBefore) // Вызывается до обработки команды 1С
events.connect(windows, "onDoModal", SelfScript.self)
else // вызывается после обработки команды 1С
{
events.disconnect(windows, "onDoModal", SelfScript.self)
grid = null
}
}
function onDoModal(dlgInfo) {
try{
if(dlgInfo.stage == afterInitial){
grid = dlgInfo.form.getControl('ResultGrid').extInterface
}
}catch(e){
//Message(e)
}
}
function macrosКопироватьЗначениеИзОкнаВычисленияВыраженияВБуфер() {
if(!grid) return false
var row = grid.currentRow
if(!row) row = grid.dataSource.root.firstChild;
var value = row.getCellValue(1)
Clipboard=stdlib.require(stdlib.getSnegopatMainFolder()+'scripts\\Clipboard.js');
Clipboard.CopyToClipboard(value);
}
events.connect(snegopat, "onProcessInsert", SelfScript.self)
// правка шаблонов снегопата
function onProcessInsert(param)
{
/*
Message(param.type)
Message(param.name)
Message(param.text)
*/
if(itKeyword == param.type)
{
if(param.name == "Возврат")
param.text = param.text.replace(/\r\n|\r|\n/g, "");
else if(param.name == "Прервать")
param.text = param.text.replace(/\r\n|\r|\n/g, "");
else if(param.name == "Продолжить")
param.text = param.text.replace(/\r\n|\r|\n/g, "");
else if(param.name == "Экспорт")
param.text = param.text.replace(/\r\n|\r|\n/g, "");
}
}
мФормаНастройки=null
// Зададим путь в профайле
var pflMyModulePass = "MyScript/ModulePass"
// Восстановим настройки
profileRoot.createValue(pflMyModulePass, "", pflSnegopat)
var мПарольНаМодульПоУмолчанию = profileRoot.getValue(pflMyModulePass)