AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2009, 11:01   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Занятное поведение
Возникла такая интересная проблема.
Есть стандартная форма InventTable. (нашу убил и взял со стандарта)
На неё на главный grid вывел своё поле(String).
Заполняю это поле.Перехожу на другую строку.
Заполняю. Перехожу на другую и т.д.
По некоторым строкам выскакивает вот такое сообщение.
"Невозможно отредактировать запись в "Параметры модуля "Запасы"" ("InventTableModule"). Номенклатура: 0/0351/002/01/4X25, Закупка.
Запись уже существует."
Цитата:
(C) \Classes\Info\add - line 12
(S) \Classes\xRecord\Update
(S) \Data Dictionary\Tables\InventTableModule\Methods\Update - line 15
(C) \Classes\FormDataSource\write
(C) \Classes\FormDataSource\Next
(C) \Classes\FormRun\task
(C) \Classes\SysSetupFormRun\task - line 20
Выскакивает эта ошибка на строках 1-21-46-71-96 и т.д. Первая через 20, остальные через 25.
Даже необязательно заполнять промежуточные строки. Можно курсор только на эти строки ставить и только в них заполнять, чтоб появилась ошибка. Остальные пустые.
При этом сохранить даёт, хоть и ругается.
Может у кого есть мысли из-за чего это может быть?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 13.01.2009, 11:07   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Вероятно, из одной серии баги: Проблемы с отображением скл. аналитик
__________________
Zhirenkov Vitaly
Старый 13.01.2009, 11:19   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от ZVV Посмотреть сообщение
Вероятно, из одной серии баги
Если только чуть-чуть.
Ситуация зафиксированна.
С аналитикой не связано, с отображением всё в порядке.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 13.01.2009, 11:45   #4  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Не то, но на всякий случай

Не корректно сохраняет запись в inventTable

Вдруг проблемы имеют общую или похожую причину.
__________________
С уважением,
glibs®
Старый 13.01.2009, 13:39   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
К чему пришёл.
На тех записях recId в InventTableModule неправильный(две параллельных сессии запускал).
Т.е. при join-e система взяла к примеру 20 записей в InventTable, 3 по 20 InventTableModule и 20 InventItemLocation. Один recId из этих таблиц не правильный (взят не со своей записи). Такой состав из 100 вагонов только последний вагон не наш.
Как можно исправить
1) в методах validateWrite() этих датасорсов убрать
//inventItemLocation.ItemId = inventTable.ItemId;
Всё ok становиться. Только update сработает не для своей записи.
Следовательно не подходит.
У нас как раз и выходит та 20 запись recId не тот, ItemId не тот, но так как в validateWrite идёт подмена ItemId. То на момент update получается в системе две записи с одной и тойже номенклатурой, но с разными recId. Вот она на уровне индекса и ругается.
2) В методе active InventTable добавить
X++:
    purch_ds.reread();
    invent_ds.reread();
    sales_ds.reread();
    InventItemLocation_ds.reread();
Если хотя бы один из датасорсов коментируем, на этой таблице эта ошибка и возникает.
Конечно не правильно каждую раз перечитывать эти датасорсы, но лучше не нашёл.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
За это сообщение автора поблагодарили: George Nordic (1).
Старый 13.01.2009, 14:13   #6  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Не правильно написал.
На тестовом примере reread сработал, а на следующем нет.
Остановился на таком варианте в конец метода active датасорса InventTable
X++:
    if(inventTable.ItemId != purch.ItemId ||
       inventTable.ItemId != sales.ItemId ||
       inventTable.ItemId != invent.ItemId ||
       inventTable.ItemId != InventItemLocation.ItemId)
    {
        purch  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Purch);
        invent = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Invent);
        sales  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Sales);
        InventItemLocation  = InventItemLocation::find(inventTable.ItemId, InventDim::inventDimIdBlank());
    }
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 13.01.2009, 14:15   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
При этом у вас теряется связь с датасорсами. То есть purch.datasource() вернет null, к примеру.
Я думаю, что не в ту сторону копаете. Но, к сожалению, времени посмотреть совместно нету.
Но интересно узнать, что получится
Старый 13.01.2009, 14:48   #8  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от miklenew Посмотреть сообщение
Не правильно написал.
На тестовом примере reread сработал, а на следующем нет.
Остановился на таком варианте в конец метода active датасорса InventTable
X++:
    if(inventTable.ItemId != purch.ItemId ||
       inventTable.ItemId != sales.ItemId ||
       inventTable.ItemId != invent.ItemId ||
       inventTable.ItemId != InventItemLocation.ItemId)
    {
        purch  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Purch);
        invent = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Invent);
        sales  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Sales);
        InventItemLocation  = InventItemLocation::find(inventTable.ItemId, InventDim::inventDimIdBlank());
    }
Может я конечно слишком настойчив, но теперь мне кажется ещё более очевидно, что эти 2 проблемы имеют общие корни (в какой-то момент неверно обновляется или вообще не обновляется приджойненный датасорс).
Обратите внимание именно на это сообщение, ну и предыдущие тоже.
Проблемы с отображением скл. аналитик
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: miklenew (4).
Старый 13.01.2009, 14:55   #9  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от ZVV Посмотреть сообщение
Может я конечно слишком настойчив, но теперь мне кажется ещё более очевидно, что эти 2 проблемы имеют общие корни
Похоже.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поведение equal() метода в классе RunOn Server v3.0 SP4 Russland DAX: Программирование 7 15.11.2007 16:12
Поведение свойства Height в отчете KiselevSA DAX: Программирование 0 31.10.2006 15:32
Врем.табл.: поведение в 2-х и 3-х уровневой конф. Ser DAX: Программирование 12 21.12.2005 11:38
Непонятное поведение векторных полей в QueryBuildDataSource. Lemming DAX: Программирование 2 12.05.2005 17:43
Странное поведение резервирования после создания спланированной закупки. NEO DAX: Функционал 7 01.07.2004 14:03

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:05.