Yoksel: ОшибкаПриУдаленииЭлементаУправления ...
SourceForge.net Logo

Home Page | Изменения / НовыеКомментарии / Справка / Помочь проекту | Вход:  Пароль:  

Ошибка при удалении элемента управления


Внешняя компонента для 1С:Предприятия 7.7 «Йоксель» реализует возможность создавать на формах 1С:Предприятия элементы управления, отображающие табличные документы. Существуют также другие внешние компоненты, которые позволяют создавать на формах 1С:Предприятия различные другие элементы управления. Часто бывает, что подобные компоненты содержат ошибки, которые приводят к невозможности некоторых вариантов совместной работы этих компонент с Йокселем. В результате подобной несовместимости может произойти аварийный выход из программы и потеря несохраненных данных. Для наиболее раннего выявления подобных проблем в компоненту Йоксель встроена система обнаружения ошибочных ситуаций, связанных с элементом управления. В случае обнаружения ошибочной ситуации будет выдано следующее сообщение:


http://yoksel.net.ru/images/Misc/ControlDeleteError.png


При получении данного сообщения рекомендуется сохранить измененные данные и как можно быстрее перезапустить программу.

Примечания для программистов 1С

Элементы управления Йокселя и других внешних компонент обычно создаются на основе существующих элементов управления формы: «надписи» или «кнопки». Ошибочная ситуация, приведенная выше, может возникать при одновременном выполнении следующих условий:


Поэтому, в случае получения вышеуказанного сообщения, необходимо устранить ситуацию, когда на основе элемента управления Йокселя создается объект некорректно написанной ВК.

Технические подробности (для авторов ВК)

Создание элемента управления, как известно, происходит в несколько этапов:


Ошибку обычно делают на этапе удаления старого окна: для полученного объекта CWnd просто вызывают delete:


Этого делать не следует. Для удаления окна нужно использовать метод CWnd::DestroyWindow. При этом все будет корректно: элементы управления 1С самостоятельно удаляют соответствующий им объект CWnd при удалении окна.


В случае же с Йокселем происходит следующее:


Если же все сделать правильно – вызвать CWnd::DestroyWindow, то объект CWnd останется существовать и обращения к нему из 1С будут корректно обрабатываться. А при закрытии формы объект будет корректно удален.


В общем, нужно использовать правило: «не ты создал, не тебе удалять».


Страницы, ссылающиеся на данную:
Новости/Релиз010100


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]