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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.07.2006, 20:42   #1  
wit is offline
wit
NavAx
NavAx Club
 
11 / 10 (1) +
Регистрация: 21.05.2003
Проблема изменения номера партии в складской аналитике
Есть задача изменить номер партии в во всех складских аналитиках где он
присутствует.

При попытке использовать код :

inventBatch = InventBatch::find('000000120','50.07.00002',true);
if (inventBatch)
{
inventBatch.inventBatchId = '000001241';
inventBatch.renamePrimaryKey();
}
выдается сообщение - что обновлены такие то таблицы : .....
Но при этом никакой замены не происходит.

В чем могут быть проблемы. Если кто-нибудь решал такую задачу - поделитесь
опытом.
Старый 27.07.2006, 20:45   #2  
Vals is offline
Vals
Аманд
Аватар для Vals
Компания АМАНД
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2009
 
1,766 / 507 (20) +++++++
Регистрация: 27.02.2002
Адрес: Pass partout, Москва
Номенклатура/Функции/Редактирование кодов аналитики
Старый 28.07.2006, 14:04   #3  
wit is offline
wit
NavAx
NavAx Club
 
11 / 10 (1) +
Регистрация: 21.05.2003
Цитата:
Сообщение от Vals
Номенклатура/Функции/Редактирование кодов аналитики
Задача ставится - заменить во всех складких аналитиках номер партии, но при этом код аналитики должен остаться прежним
Старый 28.07.2006, 14:08   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
А так не подходит?

update_recordset InventDim setting InventBatchId = "Новая" where InventDim.InventBatchId = "Старая"
Старый 28.07.2006, 15:15   #5  
Vals is offline
Vals
Аманд
Аватар для Vals
Компания АМАНД
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2009
 
1,766 / 507 (20) +++++++
Регистрация: 27.02.2002
Адрес: Pass partout, Москва
Хм, а чем отличается Номер партии от Кода аналитики?

Последний раз редактировалось Vals; 28.07.2006 в 15:20.
Старый 28.07.2006, 15:50   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Может вот это пригодится.

Переименование поля
Старый 29.07.2006, 02:09   #7  
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
raz, у вас плохая идея.

wit, проблема в том, что в классе InventDimRenameDimValue Микрософт зарыл очередную дурацкую багу.

Перерисуйте в нем один метод примерно вот так.

InventDim parmInventDimOrig(InventDim _inventDimOrig = inventDimOrig)
{
;
// GLIBS: Bug fix -->
inventDimOrig = _inventDimOrig.data();
// inventDimOrig = _inventDimOrig;
// GLIBS: Bug fix <--
return inventDimOrig;
}

Потом откройте форму InventBatch и перетащите туда (output) пункт меню InventDimRenameDimValue, заполнив свойство с DataSource.

И можно клацать.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: mazzy (5).
Старый 29.07.2006, 03:03   #8  
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
А если хотите, чтобы заработал тот код, который написали вы, то подправьте на таблице InventBatch метод примерно так.

void renamePrimaryKey()
{
InventDimRenameDimValue inventDimRenameDimValue = InventDimRenameDimValue::newInventBatch(this);
;
ttsbegin;
inventDimRenameDimValue.run();
if (this.isFormDataSource())
inventDimRenameDimValue.updateCallerForm(this.dataSource());
ttscommit;
// GLIBS: Bug fix -->
this.update();
// GLIBS: Bug fix <--

}

И убедитесь, что тот код, который вы написали, находится в транзакции.

Дело в том, что он обновляет все, кроме самой партии. Т.е. в проводках, например, у вас уже другой номер партии после запуска джоба. А в справочнике партий — старый.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: 36AC (1).
Старый 29.07.2006, 11:01   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от glibs
wit, проблема в том, что в классе InventDimRenameDimValue Микрософт зарыл очередную дурацкую багу
она там не одна
вводная: СУБД - MSSQL, регистронезависимая кодовая страница (это важно)
переименовываем конфигурацию с "КоНфИгУрАцИя" на "конфигурация" - все, нет больше остатков по этой аналитике

\Classes\InventDimRenameDimValue\handleTable_InventSum
PHP код:
    while select forupdate inventSum
        where inventSum
.ItemId      == itemId
        
#InventDimJoin(inventSum.inventDimId, inventDimJoin, inventDimOrig, inventDimParm)
    
{
        
inventDimThis InventDim::find(inventSum.InventDimId);
        
inventDimThis.(dimFieldId) = inventDim.(dimFieldId);
        
inventDimThis inventDim::findOrCreate(inventDimThis);
        
inventSumExisting InventSum::find(itemIdinventDimThis.inventDimIdtrue);
        
// Vadim, lost onhand bugfix -->
        // if (inventSumExisting)
        
if (inventSumExisting && inventSumExisting.RecId != inventSum.RecId)
        
// Vadim, lost onhand bugfix <-- 
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: mazzy (5), glibs (3).
Старый 09.08.2006, 13:52   #10  
wit is offline
wit
NavAx
NavAx Club
 
11 / 10 (1) +
Регистрация: 21.05.2003
Glibs спасибо. Все заработало.
Но есть проблема. Возникла ситуация. При использовании стандартных функций копирования закупки - копируются строки, где в аналитике остается номер партии от
прежней строки закупки. Как указать(восстановить) новый номер партии для закупок которые уже обработаны.
Старый 23.12.2006, 02:56   #11  
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
wit, только сейчас заметил ваше сообщение, прошу прощения.

Я никогда не указываю партию или ГТД, например, в строках закупки. Для указания партии, ГТД, серийного номера я рекомендую использовать регистрацию (а если закуплено Управление складом 2, то журнал прибытия товаров) при закупке (в заказах можно использовать резервирование/авторезервирование или комплектацию (а если закуплено Управление складом 2, то отгрузки)).

В таком случае проблем с партиями не будет. Да и работать так удобнее. Что вы будете делать, если у вас по одной номенклатуре несколько партий поступит? Строку закупки разбивать? А кто это будет делать? Кладовщик?

Или у вас Аксапта внедрена в режиме 1С (сам себе хозяин — как нравится, так и пишу).
__________________
С уважением,
glibs®
Старый 26.12.2006, 12:57   #12  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от wit Посмотреть сообщение
При использовании стандартных функций копирования закупки - копируются строки, где в аналитике остается номер партии от
прежней строки закупки. Как указать(восстановить) новый номер партии для закупок которые уже обработаны.
Это потому, что номер партии, вообще говоря, может присутствовать не только в InventDim (как ни странно).

Недавно решал аналогичную задачку, только вместо Номера партии был номер ГТД.
Решилось примерно так :
1. Поиск по всем таблицам Ax - где есть поля типа ItemId и InventGTDId_RU (так, по-моему), запоминание списка таблиц и полей (опционально, чтобы каждый раз не ждать долго ).
2. Поиск по найденным таблицам - полям пары значений (ItemId, для которого изменяем ГТД + старое значение ГТД). При нахождении - замена старого ГТД на новый.

Вроде работает, клиент претензий не заявлял

2 glibs :
Цитата:
Я никогда не указываю партию или ГТД, например, в строках закупки.
... и это правильно

Только, насколько я понял, там УЖЕ указали?

Последний раз редактировалось RVS; 26.12.2006 в 12:59.
Теги
складская аналитика

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с изменением номера в закупочном контракте Ailen08 DAX: Функционал 9 05.05.2008 13:39
Автоматическая генерация номера партии simply2double DAX: Программирование 2 29.06.2006 17:29
Форма InventBatchIdLookup (выбор номера партии), поиск, фильтр, ... Daiver DAX: Функционал 2 28.11.2005 11:35
Не удаляется фильтр по складской аналитике sergy DAX: Программирование 18 14.02.2005 13:25
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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