09.12.2010, 10:37 | #1 |
Участник
|
При суммарной обработке закупок аксапта удаляет строки разноски счета и накладной
Какой-то очередной странный глюк.
Настроил параметрах поставщиков суммарную обработку "счет на". Теперь при обработке счета одного заказа под некоторыми пользователями после нажатия кнопкп ОК в диалоге разноски, строки для разноски система удаляет. Под другими пользователями все работает. Разработчик не может понять причину, посокльку глюк в ядре. Система вызывает какой-то метод делит, котрый должен выполняться при определенных условиях. Набор этих условий ложный, но ядро все равно удаляет записи ПОД НЕКОТОРЫМИ ПОЛЬЗОВАТЕЛЯМИ. Кто нибудь сталкивался с подобным бредом? |
|
09.12.2010, 10:41 | #2 |
Участник
|
Хотя бы версию системы укажите..
__________________
Ivanhoe as is.. |
|
09.12.2010, 10:46 | #3 |
Ищущий знания...
|
сброс пользовательских настроек делали?
кэшевские файлы АОС удаляли на машине пользователя?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.12.2010, 10:54 | #4 |
Модератор
|
Цитата:
В коде не дописан код который в зависимости от группы, что то чистит? почему вы решили, что проблема с ядром? Данный глюк воспроизводится на разработческой и тестовой аксапте?
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
09.12.2010, 11:13 | #5 |
Участник
|
версия 4ка
все сбрасывал у удалял ауцшки наборы прав разные но в целом у одного пользователя с админскими правами так происходит а у другого нет - дело вообще не в правах. База естетственно с разработками, но отрабатывает стандартный код в данном случае. |
|
09.12.2010, 11:27 | #6 |
Ищущий знания...
|
если я правильно понял проблему, то у Вас удаляется таблица SalesParmLine.
что бы понять в какой момент и по какой причине она удаляется поставьте в методе delete() этой таблицы точку останова (если этого метода нет, перекройте его) и запустите процесс обработки. Если удаление происходит не через doDelete(), то у вас откроется отладчик и в нем вы сможете посмотреть стек вызова. Думаю что просмотр стека расставит все по своим местам.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
09.12.2010, 11:28 | #7 |
Участник
|
Вариантов два: либо запись удаляется ещё из какого-то места (выяснить просто - необходимо поставить точку останова внутрь метода delete и проанализировать стек вызовов), либо в момент выполнения условие всё-таки не ложно. Как бы не абсурдно это выглядело, но отображаемый код и исполняемый могут отличаться из-за сбоев кэша. И опять же из отладчика всё это можно увидеть.
|
|
09.12.2010, 11:45 | #8 |
Ищущий знания...
|
кстати, что то подумалось, а АОСы перезапускали?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.12.2010, 12:05 | #9 |
Участник
|
в делите нет ничего, там по релэйшену удаляется
и аос перезапускали Короче при попытке удалить в SalesParmTable система удаляет в SalesParmSubTable, несмотря на то что условие релэйшена по полю TableRefId не выполняется Причем сгенерили даже не путем запуска процедура а тупо на таблице сделали удаление и все равно система удалила не смотря на условие релэйшена (НО ТОЛЬКО ПОД ОПРЕДЕЛННЫМИ ПОЛЬЗОВАПТЕЛЯМИ - у этих пользователей нет ограничей по правам - они в группе админ) Последний раз редактировалось maxkov; 09.12.2010 в 12:12. |
|
09.12.2010, 12:18 | #10 |
Ищущий знания...
|
Цитата:
Сообщение от maxkov
в делите нет ничего, там по релэйшену удаляется
и аос перезапускали Короче при попытке удалить в SalesParmTable система удаляет в SalesParmSubTable, несмотря на то что условие релэйшена по полю TableRefId не выполняется Причем сгенерили даже не путем запуска процедура а тупо на таблице сделали удаление и все равно система удалила не смотря на условие релэйшена (НО ТОЛЬКО ПОД ОПРЕДЕЛННЫМИ ПОЛЬЗОВАПТЕЛЯМИ - у этих пользователей нет ограничей по правам - они в группе админ) а вообще чудес не бывает, если удаляется, значит условие отрабатывает. у тех пользователей, у которых не удаляется, скорее всего настроен доступ на уровне записей, проверьте все ещё раз внимательней.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.12.2010, 12:28 | #11 |
Участник
|
Доступ совсем нипричем. если бы условие выполняось то под всеми бы оно отрабатывало
|
|
09.12.2010, 18:11 | #12 |
Участник
|
Разобрались
Действительно глюк с правами. Несколько групп прав пришлось убить и настроить новые аналогичные - тогда все заработало. |
|
09.12.2010, 19:02 | #13 |
----------------
|
На мой взгляд, это ошибка, что deleteAction зависит от настройки прав.
Ладно бы оно полностью работало или не работало, а то ведь удаляет не то что надо. |
|
14.12.2012, 16:31 | #14 |
Участник
|
Цитата:
Сообщение от maxkov
в делите нет ничего, там по релэйшену удаляется
и аос перезапускали Короче при попытке удалить в SalesParmTable система удаляет в SalesParmSubTable, несмотря на то что условие релэйшена по полю TableRefId не выполняется Причем сгенерили даже не путем запуска процедура а тупо на таблице сделали удаление и все равно система удалила не смотря на условие релэйшена (НО ТОЛЬКО ПОД ОПРЕДЕЛННЫМИ ПОЛЬЗОВАПТЕЛЯМИ - у этих пользователей нет ограничей по правам - они в группе админ) Оказывается, в четверке при удалении relation'ы по невидимым полям не используются, поэтому когда reArrange удаляет parm таблицы, он иногда грохает все parmLine с такими же parmId не смотря на то то tableRefId в них отличается от TableRefId в ParmTable. Axapta делает это не всегда, а только для пользователей которые ей особенно не нравятся. И права тут не причем. Для обхода надо выставить visible=yes в tableRefId, тогда AX нормально воспринимает table relation и не удаляет что попало. (узнал в http://www.archivum.info/microsoft.p...invoicing.html ) Чудеса всё-таки бывают о чем можно убедится добавив delete() методы в PurchParmTable, purchParmLine и сравнив tableRefId, но конкретно это закончилось в KB939982 Ключевые слова для гугла: purchParmLine, PurchParmSubTable, purchParmTable, tableRefId, parmId, deleteAction. Последний раз редактировалось mayk; 14.12.2012 в 16:42. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), Player1 (5). |
14.12.2012, 16:54 | #15 |
Ищущий знания...
|
Цитата:
Сообщение от mayk
Чудеса всё-таки бывают о чем можно убедится добавив delete() методы в PurchParmTable, purchParmLine и сравнив tableRefId, но конкретно это закончилось в KB939982
Ключевые слова для гугла: purchParmLine, PurchParmSubTable, purchParmTable, tableRefId, parmId, deleteAction.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
14.12.2012, 17:27 | #16 |
Участник
|
А откуда еще чудеса берутся?
__________________
Axapta v.3.0 sp5 kr2 |
|
Теги |
salesparmsubtable, salesparmtable, баг |
|
|