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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2004, 09:32   #1  
mpa is offline
mpa
Участник
 
64 / 12 (1) ++
Регистрация: 26.01.2002
Адрес: Москва - Нижний Новгород
Фотозагадка - складские журналы
В Axapta 3.0 имеется "технологическую особенность", которая приводит в системному переименованию номера складского журнала.
Решение уже найдено, как стандартное, так и с использованием "напильника".
Но перед тем, как опубликовать решение хочется узнать, сможете ли вы повторить данную ситуацию?
Итак, внимание на экран...
Нажмите на изображение для увеличения
Название: img47214-1.jpg
Просмотров: 328
Размер:	47.2 Кб
ID:	1116
За это сообщение автора поблагодарили: Kabardian (2).
Старый 14.10.2004, 09:40   #2  
Twin is offline
Twin
Участник
 
60 / 10 (1) +
Регистрация: 09.01.2002
Адрес: Omsk
старо как мир - паспорт записи, только зачем это нужно?
Старый 14.10.2004, 10:02   #3  
mpa is offline
mpa
Участник
 
64 / 12 (1) ++
Регистрация: 26.01.2002
Адрес: Москва - Нижний Новгород
При переименовании через "Паспорт записи" тип изменения RenameKey, а не Update.
Старый 14.10.2004, 12:44   #4  
Twin is offline
Twin
Участник
 
60 / 10 (1) +
Регистрация: 09.01.2002
Адрес: Omsk
А можно этим секретным способом поменять не код разнесенного журнала, а скажем название журнала или автора модификации?
Старый 14.10.2004, 13:26   #5  
VadimVN is offline
VadimVN
Участник
 
71 / 12 (1) ++
Регистрация: 21.11.2003
Легко!
Более того, эта "фича" работает ещё и в клиентах поставщиках, что куда как смешнее.

Создаем новый журнал, ему присваивается номер, тут же удаляем созданный журнал, тут же в форме идем на любой существующий журнал, изменяем любое поле и сохраняем. Любуемся результатом.
Ax 3.0 SP1 RU.
Старый 14.10.2004, 14:26   #6  
mpa is offline
mpa
Участник
 
64 / 12 (1) ++
Регистрация: 26.01.2002
Адрес: Москва - Нижний Новгород
Цитата:
Сообщение от VadimVN
Создаем новый журнал, ему присваивается номер, тут же удаляем созданный журнал, тут же в форме идем на любой существующий журнал, изменяем любое поле и сохраняем. Любуемся результатом.
Ax 3.0 SP1 RU.
На Axapta 3.0 CIS SP3 HF2 такого повторить не получилось, а SP1 далеко. На самом деле по описанию очень похоже, и я готов в это поверить.

Молодца VadimVN!!!

Чего сделать, чтобы это повторить?
Последовательность на примере журнала с типом "Проводка":
  1. Создаем новый журнал с типом «Проводка», поле «Название» не заполняем.
  2. Не удаляя нового журнала, переходим на существующий журнал (в журнале есть строки).
  3. Нажимаем кнопку "Сохранить"... и получаем сообщение Неправильная спецификация 'Журнал', Номерная серия '<Код ном.серии>' не допускает изменение на меньшее значение., где <Код ном.серии> - номерная серия для нумерации журналов.
Далее получается то, что отражено на рисунке выше. При этом строки из существующего журнала остаются ссылаться на на него, а фактически он теперь с другим номером.

Чего сделать, чтобы этого не повторялось?
Вариантов может быть два:
  1. Без "напильника" - в настройках номерной серии <Код ном.серии> указать галку "Уменьшение номера" на закладке "Разное".
  2. С "Напильником" - в классе JournalFormTable в методе datasourceActivePre после скобки добавить проверку
    X++:
    void datasourceActivePre()
    {
        // ---> Добавить сюда
        if (numberSeqFormHandler)
            numberSeqFormHandler.formMethodDataSourceLinkActive();
        // <---
    
        if (journalTableData.canBeAutoUnlocked())
Спасибо Борисову Николаю за помощь в исправлении ошибки.
За это сообщение автора поблагодарили: Dino (0).
Старый 15.10.2004, 08:49   #7  
андрей is offline
андрей
Участник
 
28 / 11 (1) +
Регистрация: 13.05.2002
а в AX30SP2 добавление указанной проверки проблемы не решает (
Старый 15.10.2004, 12:44   #8  
mpa is offline
mpa
Участник
 
64 / 12 (1) ++
Регистрация: 26.01.2002
Адрес: Москва - Нижний Новгород
Пожалуйста, протестируйте данную ситуацию на других сервис-паках, в том числе и без CIS.

Тестировалось (были ошибки):
  • Axapta 3.0 CIS SP3 HF2
  • Axapta 3.0 CIS SP3 HF2 + CU1 (пререлиз).
Старый 15.10.2004, 16:55   #9  
Firestarter is offline
Firestarter
Участник
 
49 / 10 (1) +
Регистрация: 11.11.2003
А все же:
1. как попасть в форму, приведенную в начале топика?
2. как поменять название уже разнесенного журнала?
Старый 05.10.2005, 11:15   #10  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Вот и мы встали на эти грабли.

Ошибка все еще присутсвует в системе вплоть до SP4.

Чтобы быстро воспроизвести ошибку надо:
в складских журналах создать строку и не сохраняя ее перейти на другую строчку и нажать сохранить, этой строке присвоиться новый № от созданной строки, т.е. в результате строки потеряют шапку.

Я нашел где ее исправить, но немного сомневаюсь, давайте коллективно подумаем.

\Classes\NumberSeqFormHandler\formMethodDataSourceValidateWrite

PHP код:
        curRecord this.curRecord();
        if (
curRecord.(fieldIdNum) != LastNumber && !this.checkChangeNumber(lastNumber,curRecord.(fieldIdNum)))
        {
            
// BugFix -->
            //curRecord.(fieldIdNum) = lastNumber;
            // зачем изменять поле в записи, если мы возвращаем ошибку записи?
            // BugFix <--
            
if (formDataSource)
                
formDataSource.refresh();

            
// SYP-Modification SP3 - Begin
            
validateWriteFailed false;
            
// SYP-Modification SP3 - End
            
return false;
        } 
Старый 06.10.2005, 12:56   #11  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
raz
думаю, что твое исправление в качестве заплатки вполне сгодиться для складских журналов, у которых номер генерится автоматом.
Однако, предположим, что пользователю разрешено менять номера журналов в бОльшую сторону, а юзер взял и сменил номер в меньшую, тогда исправленный метод ругнется, но оставит номер введенный пользователем.

Мне кажется, что для нормальной работы надо менять логику работы класса NumberSeqFormHandler
1. при перемещении по списку журналов LastNumber соответствовал текущему положению (сохраненные - "", а созданные = номер журнала).
2. Проверку на изменение номера журнала ручками надо делать не в момент сохранения, а сразу по изменению.
3. Номерная серия (класс NumberSeq) тоже должна отслеживать перемещения по списку журналов, чтобы занимать и освобождать соответствующие номера.
4. И все это должно работать во всех формах.
Так что, задачка по масштабам для фанатов или M$BS
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Складские журналы, перемещение в гриде стрелками курсора coolibin DAX: Программирование 8 20.11.2008 19:37
Добавление новых полей в журналы и разноска V.Yelkin DAX: Программирование 30 02.10.2008 15:09
Дополнительные журналы ksenia DAX: Функционал 4 02.06.2004 15:20
Складские журналы Проводка, Прибыль\Убыток Serg DAX: Функционал 1 29.12.2003 19:17
Опция печати - складские журналы ??? Swetik DAX: Функционал 6 04.06.2003 13:15
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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