22.06.2018, 14:04 | #1 |
Участник
|
Ошибка в методе createDocument класса SGM_DPMergeWord_With_XML
Добрый день.
Помогите, пожалуйста, разобраться с проблемой печати документов. Dynamics AX 4.0, MS SQL 2012. Не можем понять причину ошибки по шаблону Трудового договора на прием. В шаблоне меняли индекс и адрес Банка, после изменения закачали шаблон. Но при распечатке выдает ошибку: "Ошибка времени выполнения: XMLDocument Объект не имеет метода finalize " (не получилось вставить скрин изображения) "Проверьте настройки шаблона. Присоединяемая схема не содержит корневого элемента "ТД_новый_2."" Все настройки проверены, корневой элемент «ТД_новый_2» присутствует. Были перепробованы все способы – создавался новый шаблон, новая схема, новые пункты меню, обновлялись связи, схемы ничего не помогло. Фактически изменены только два слова в тексте шаблона. Не могли бы подсказать в чем может быть причина и как можно решить данную проблему? Ранее при возникновении такой ошибки, проблема решалась пересозданием шаблона (повторное присоединение схемы), что в данном случае не помогло. Последний раз редактировалось Natali77; 22.06.2018 в 14:44. |
|
22.06.2018, 15:05 | #2 |
Banned
|
SGM_DPMergeWord_With_XML - это нестандартный класс.
|
|
22.06.2018, 21:09 | #3 |
Участник
|
Сделайте инкрементную компиляцию класса SGM_DPMergeWord_With_XML, возможно и некоторых других, задействованных в процессе.
Если ошибок компиляции не выявлено, поставьте точку останова в методе infolog.add() и ведите отладку.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: Natali77 (1). |
25.06.2018, 06:38 | #4 |
Участник
|
Здравствуйте. Спасибо за отклик. инкрементная компиляция прошла без ошибок. Но в классе SGM_DPMergeWord_With_XM нет метода infolog.add()
|
|
25.06.2018, 07:56 | #6 |
Участник
|
Спасибо за отклик. Понятно, так мы ставили так точку останова и трассировали. Отличие было в том, что строка запроса для поиска корневых элементов интегрируемого элемента была так \\ns0...
В шаблонах без ошибки идет \\ns2, \\ns4, \\ns8. Последний раз редактировалось Natali77; 25.06.2018 в 08:52. |
|
25.06.2018, 08:29 | #7 |
Участник
|
Во вложении скрины ошибки
|
|
25.06.2018, 08:44 | #8 |
Участник
|
Пункты меню
|
|
25.06.2018, 09:15 | #9 |
Участник
|
Ну все ясно. Переменная wordDoc типа XMLDocument не имеет метода finalize(). Закомментируйте вызов этого метода и посмотрите, возникает ли ошибка с элементом ТД_новый_2. Если да, то уберите в шаблоне точку в конце названия элемента.
__________________
// no comments Последний раз редактировалось dech; 25.06.2018 в 10:16. |
|
25.06.2018, 12:42 | #10 |
Участник
|
Точка стояла в коде, ее убрали, закомментили метод finalize, но все равно выдает такую же ошибку, только без точки.
|
|
25.06.2018, 13:20 | #11 |
NavAx
|
Access rights?
|
|
25.06.2018, 15:22 | #12 |
Участник
|
Сообщения об ошибке, особенно для внешних (по отношению к Axapta) приложений, не всегда адекватные. Т.е. не всегда соответствуют реальной ошибке
В данном случае ошибка может быть следствием того, что файл просто не удалось открыть. Это может быть по причине того, что для этой операции недостаточно прав. Например, файл лежит где-нибудь в общей папке со специфическими правами доступа. А на новый файл эти права не распространяются Вообще, Вы не там ищете. Насколько я понимаю, метод Finilaze был вызван как раз по причине того, что произошла ошибка. Судя по трассировке, Вам надо смотреть на метод SGM_DPMergeWord_With_XM.createDocument() Там, похоже, выполняется ветка обработки ошибки. Вот и надо смотреть, почему Вы в эту ветку попали. Какие условия привели к этому месту кода
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
26.06.2018, 06:18 | #13 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Сообщения об ошибке, особенно для внешних (по отношению к Axapta) приложений, не всегда адекватные. Т.е. не всегда соответствуют реальной ошибке
В данном случае ошибка может быть следствием того, что файл просто не удалось открыть. Это может быть по причине того, что для этой операции недостаточно прав. Например, файл лежит где-нибудь в общей папке со специфическими правами доступа. А на новый файл эти права не распространяются Вообще, Вы не там ищете. Насколько я понимаю, метод Finilaze был вызван как раз по причине того, что произошла ошибка. Судя по трассировке, Вам надо смотреть на метод SGM_DPMergeWord_With_XM.createDocument() Там, похоже, выполняется ветка обработки ошибки. Вот и надо смотреть, почему Вы в эту ветку попали. Какие условия привели к этому месту кода Новый шаблон (файл) это копия старого шаблона, в котором были изменения в тексте. И права у них одинаковые. Старый шаблон отрабатывает без ошибок. Если же загрузить копию старого шаблона без изменений, то отрабатывает без ошибок. Касательно SGM_DPMergeWord_With_XM.createDocument() - при трассировке заходит в метод Finilaze, т.к. if (nodeListWord.length()>0) в методе createDocument(). У нас, к сожалению, не все системные классы доступны для просмотра, в том числе XMLNodeList. |
|
26.06.2018, 11:28 | #14 |
Участник
|
Без программиста Вы так долго будете искать причину Нам же здесь не видно, что это за класс такой и как он устроен.
Из приведенного фрагмента кода видно, что ошибка возникает когда nodeListWord.length() == 0. Но как объект nodeListWord формируется и наполняется и почему его длина получилась равна нулю - это проще под отладчиком пройтись. В системные классы лезть не обязательно. Видно же, что не происходит наполнение этих классов. А вот почему - это надо код класса анализировать. Стек вызова и ошибка - это уже следствие. Далеко не факт, что причина ошибки будет в методах этого стека.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
27.06.2018, 07:02 | #15 |
Участник
|
Ведите отладку. Нужно понять, почему nodeListWord не содержит ни одного элемента.
Попросите помощи у ведущего или более опытного программиста, который может вам помочь на месте. Здесь мы можем только направить в нужном направлении.
__________________
// no comments |
|
27.06.2018, 08:17 | #16 |
Участник
|
Цитата:
Отладка ведется, но не понятно что не так. По каким критериям не соответствует. По хорошему бы посмотреть нужный системный класс. |
|
27.06.2018, 13:14 | #17 |
Участник
|
Системный класс вы никак не посмотрите. Если только не работаете в M$.
__________________
// no comments |
|