AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
CRM
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2011, 13:11   #1  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Там же, в LedgerJournalTransDaily на источнике данных LedgerJournalTrans ...
Метод active() постоянно вызывает метод setFurtherPostingProtection(), который меняет возможность редактирования 7 полей (тип счета и счет, тип корр.счета и коррсчет, суммы дебет/кредит и валюту) по факту заполненности полей FurtherPostingType и FurtherPostingRecId. Вот как это делает наш неизвестный герой:
X++:
void setFurtherPostingProtection()
{
    int i;
    DictTable       dictTable = new DictTable(ledgerJournalTrans.TableId);
    FormDataObject  objectLedgerJournalTrans;
    boolean         preventEdit;
    ;

    preventEdit = ledgerJournalTrans.FurtherPostingType && ledgerJournalTrans.FurtherPostingRecId;

    for (i = 1; i <= dictTable.fieldCnt(); i++)
    {
        objectLedgerJournalTrans = ledgerJournalTrans_ds.object(dictTable.fieldCnt2Id(i));
        if (objectLedgerJournalTrans)
        {
            if (preventEdit)
            {
                switch (dictTable.fieldCnt2Id(i))
                {
                    case fieldnum(LedgerJournalTrans, AccountType),
                         fieldnum(LedgerJournalTrans, AccountNum),
                         fieldnum(LedgerJournalTrans, OffsetAccountType),
                         fieldnum(LedgerJournalTrans, OffsetAccount),
                         fieldnum(LedgerJournalTrans, AmountCurDebit),
                         fieldnum(LedgerJournalTrans, AmountCurCredit),
                         fieldnum(LedgerJournalTrans, CurrencyCode)  :
                        objectLedgerJournalTrans.allowEdit(false);
                        break;
                    default :
                        objectLedgerJournalTrans.allowEdit(true);
                }
            }
            else
            {
                objectLedgerJournalTrans.allowEdit(true);
            }
        }
    }
}
Это SYS-слой...
Есть мнение, что за такое в таком месте - надо бить ...
Наверное даже ногами и наверное даже по голове ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 14.01.2011 в 13:17.
За это сообщение автора поблагодарили: fed (3), Vadik (5).
Старый 14.01.2011, 13:47   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Метод active() постоянно вызывает метод setFurtherPostingProtection(), который меняет возможность редактирования 7 полей
На сколько я вижу, код меняет доступность не только перечисленных 7 полей, но и всех остальных: "default: objectLedgerJournalTrans.allowEdit(true);" Может я чего-то не понимаю, но я не вижу как можно переписать этот код с сохранением всей заложенной в него лигики (ткните носом, кто видит)

Необходимо это или нет - это уже другой вопрос. А если это таким было ТЗ, тогда чего на кодера пенять? Это может быть баг, но это не wtf
Старый 14.01.2011, 13:58   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Может я чего-то не понимаю, но я не вижу как можно переписать этот код с сохранением всей заложенной в него лигики (ткните носом, кто видит)
Не сильно компактнее (по строчке кода на каждую из семи таблиц написать все же придется), но гораздо проще и читабельнее делается с Global::allowEditFieldsOnFormDS_W(), которого на SYS слое нет. Видимо, с учетом корпоративных порядков подобную дрянь многократно писать проще чем добиться добавления полезного метода в Global
P.S. а может у автора этот код никакого дискомфорта не вызывает - у них вообще похоже свое, особенное чувство прекрасного
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: S.Kuskov (1).
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:51.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.