09.12.2008, 13:57 | #1 |
Участник
|
Бага при импорте проекта
Обнаружил наприятный баг в форме SysImportDialog
Если мы пытаемся импортировать файл проекта xpo открытый другой программой (например начали импортировать в аксапту на другой приложение и застыли на сравнении слоев) или сравниваем 2 xpo-файла при помощи сравнения файлов в тотал коммандере или просто WinApi::fileExists(file) выдает false (иногда такое бывает – зависают блокировки на уровне файловой системы NTFS) – то Аксапта после выбора файла в диалоге – не подставляет его в поле ввода имени файла. Причем делает это молча А если попробовать её обмануть – вбить это значение руками – все равно стирает его и возвращает старое (часто непустое значение! - Опять же молча! Так что в итоге можно по невнимательности импортировать не тот проект). Будьте внимательны. Особенно при накатах на рабочую. Чтобы обойти этот глюк – можно дописать в метод \Forms\SysImportDialog\Methods\updateBox вывод окна сообщения о том что файл не открывается. Например так : X++: void updateBox(fileName file, boolean updateBox = true) { int i; boolean showMruAllowed; int selection; if (WinApi::showMruAllowed()) { showMruAllowed = true; while (conFind(lastFiles, file)) { lastFiles = conDel(lastFiles, conFind(lastFiles, file), 1); } if (WinApi::fileExists(file)) { while (Conlen(lastFiles) >= #tempFiles) { lastFiles = conDel(lastFiles, #tempFiles, 1); } lastFiles = conIns(lastFiles, 1, file); } // pkoz 09.12.2008 --> else { Box::warning(strFMT( 'Не удается открыть файл "%1", возможно указанный путь не существует, либо файл открыт другой программой. Импорт остановлен.', file), "Внимание !"); } // pkoz 09.12.2008 <-- } else { lastFiles = conNull(); lastFiles = conIns(lastFiles, 1, file); } if (updatebox) { fileName.clear(); if (showMruAllowed) { fileName.add(''); if (file) { selection = 1; } else { selection = 0; } } else { selection = 0; } for (i = showMruAllowed; i <= ConLen(lastFiles); i++) { if (ConPeek(lastFiles, i)) { fileName.add(ConPeek(lastFiles, i)); } } fileName.setDropSize(ConLen(lastFiles) + showMruAllowed); fileName.selection(selection); } } Ax 3.0 KR3 SP5 |
|