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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.03.2005, 16:47   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Журнал платежей поставщиков
Привет.
Проблема с формой Платежей (строки) поставщиков. - LedgerJournalTrans_VendPaym.
Началось все с того, что обнаружилось следующее поведение в форме:
Создаю несколько строк в журнале. проставляю какие нибудь счета. Даты пока все одинаковые.
Далее становлюсь на строку, к примеру, первую, меняю дату на другую. И курсором перехожу на другую запись ( на вторую. ) при этом меняется дата во второй строке на ту, что ввел в первой.

Начал рыть код. Это происходит при сохранении текущей записи. Последовательность вызовов следующая:
\Forms\LedgerJournalTransVendPaym\Data Sources\LedgerJournalTrans\Methods\write
там ledgerJournalEngine.write(ledgerJournalTrans); вызывается.
в нем 28 строка: this.adjustLedgerJournalTrans(_ledgerJournalTrans);
в нем 8 строкой: if (ledgerJournalEngine_Server.adjustDate(_ledgerJournalTrans, this))//, voucherDateList))

В этом методе следующий код:
PHP код:
    ttsbegin;
    
dateCorrected false;

    while   
select  forUpdate ledgerJournalTransLocal
            where   ledgerJournalTransLocal
.journalNum == _ledgerJournalTrans.journalNum &&
                    
ledgerJournalTransLocal.voucher    == _ledgerJournalTrans.voucher
    
{
        if (
ledgerJournalTransLocal.recId != _ledgerJournalTrans.recId)
        {
            
ledgerJournalTransLocal.transDate _ledgerJournalTrans.transDate;
            if (
_ledgerJournalEngine)
                
_ledgerJournalEngine.currencyModified(ledgerJournalTransLocal);
            
ledgerJournalTransLocal.doUpdate();
            
dateCorrected true;
        }
    }
    
ttscommit
То есть для всех строк этого журнала проставляется та же дата, что и для той, которую только что изменили.

И наконец, вопрос:

Это так и должно быть, или это глюк, который просто никто не замечал???
Больше что-то похоже на второе.
А если должно так быть, то почему? Неужели нельзя указать другую дату для отдельной строки?

Спасибо
Старый 30.03.2005, 18:06   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Журнал платежей поставщиков
Цитата:
Изначально опубликовано kashperuk
Это так и должно быть, или это глюк, который просто никто не замечал???
Больше что-то похоже на второе.
А если должно так быть, то почему? Неужели нельзя указать другую дату для отдельной строки?
Вы неправильно ставите вопрос: дату можно указать для ваучера.
Ваучер - это набор строк с одинаковым номером документа ГК.
Аксапта определяет номер ваучера в зависимости от настроек журнала.
По-умолчанию, в настройках журнала стоит опция "Изменять номер при балансе"

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

Если в строке журнала вводится корр.счет. То сумма дебета и сумма кредита автоматически совпадают. Таким образом (если для каждой строки вводится корр.счет), вы видите отдельный номер ГК в каждой строке.

Если же ваши пользователи корр.счет пропустили. То Аксапта считает, что пользователь вводит многострочную проводку. В этом случае следующие строчки будут получать ОДИНАКОВЫЙ номер ваучера, пока дебет не сравняется с кредитом.

А один ваучер может быть только с одной датой.
Разные даты вы можете указать только для разных ваучеров.

См. картинку.
Первые три строки относятся к одному ваучеру. Первые три строки с разными датами сделать не получится никак

Вложения
Тип файла: img62815-1 (19.3 Кб, 634 просмотров)
Старый 30.03.2005, 18:14   #3  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
Очень хороший ответ, спасибо.
Но наши пользователи корр.счет не пропустили, а не указали сознательно...
ну проще им сначала перечислить даты, поставщиков и суммы,
а уже потом выбирать на каждую строчку банк...

так то.
Старый 30.03.2005, 18:48   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано linney
Очень хороший ответ, спасибо.
Но наши пользователи корр.счет не пропустили, а не указали сознательно...
ну проще им сначала перечислить даты, поставщиков и суммы,
а уже потом выбирать на каждую строчку банк...

так то.


Анекдот:
Русские мужики купили японскую бензопилу. Решили проверить.
Подсунули ей доску.
- Вжик - сказала японская бензопила
- О! - сказали русские мужики
Подсунули ей бревно.
- Вжик - сказала японская бензопила
- О! - сказали русские мужики
Подсунули ей желензный лом
- Кряк - сказала японская бензопила
- Э-э-э - махнули рукой русские мужики...
Старый 31.03.2005, 18:10   #5  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
ага... и ружья у нас кирпичом не чистют..
Старый 31.03.2005, 20:24   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
ружья кирпичом не чистют у них
Старый 27.10.2009, 16:06   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Angry LedgerJournalEngine_Server.adjustDate() перебивает курсы!
Подниму эту давнишнюю тему - хочу вернуться к коду чудо-метода ledgerJournalEngine_Server.adjustDate(), который с 2005-го года в неизменном виде перекочевал и в 2009-ю Аксапту:
X++:
ttsbegin; 
dateCorrected = false; 
while   select  forUpdate ledgerJournalTransLocal 
        where   ledgerJournalTransLocal.journalNum == _ledgerJournalTrans.journalNum && 
                ledgerJournalTransLocal.voucher    == _ledgerJournalTrans.voucher 
{ 
    if (ledgerJournalTransLocal.recId != _ledgerJournalTrans.recId) 
    { 
        ledgerJournalTransLocal.transDate = _ledgerJournalTrans.transDate; 
        if (_ledgerJournalEngine) 
            _ledgerJournalEngine.currencyModified(ledgerJournalTransLocal); 
        ledgerJournalTransLocal.doUpdate(); 
        dateCorrected = true; 
    } 
} 
ttscommit;
Обратите внимание, что этот чудо-код в рамках журнала перебивает дату во всех строчках с одинаковым ваучером, кроме переданной, не глядя на то, какая именно дата там уже прописана - пусть бы и везде одинаковая. Фигня? Конечно, если бы не последующий вызов _ledgerJournalEngine.currencyModified() на всех строчках, кроме переданной, который в общем случае приводит к перезатиранию введенного пользователем курса валюты - опять же, во всех строчках, кроме переданной. В результате, допустим, хотим мы создать строки с одним ваучером и датой и указать там свой курс - не тот, что в карточке валюты. А этот чудо-метод во всех строках, кроме одной, перебивает нам курс на тот, что в карточке! Хорошо, если журнал создается руками, и пользователь это заметит, а вот если из кода, и после вставки строки журнала дергается ledgerJournalEngine.write(), вызывающий эту "коррекцию" даты, и журнал сразу разносится, то получается, мягко говоря, фигня
Старый 27.10.2009, 18:05   #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
А почему у вас при программном создании строк меняется дата ваучера?
__________________
С уважением,
glibs®
Старый 27.10.2009, 18:09   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
В том-то и дело, что она не меняется - у всех строк с одинаковым ваучером дата тоже одинаковая. Другое дело, что тот же LedgerJournalEngine со своими допущениями может дергать adjustDate() чаще, чем нужно, а тот тупо не смотрит, одинаковая ли в строках дата...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Корректно ли списывать в Журнале платежей Поставщиков затраты на Услуги банка ? Aquarius DAX: Функционал 6 13.04.2007 21:59
Права доступа к Menu Item Журнал платежей tolstjak DAX: Администрирование 6 13.09.2005 08:31
Журнал платежей поставщикам. Сальдо откуда-то берется. NJD DAX: Функционал 0 18.08.2005 17:24
Журнал платежей заблокирован системой bucken DAX: Функционал 4 20.05.2005 19:31
Права доступа - Журнал платежей SDA DAX: Прочие вопросы 1 20.09.2004 23:10
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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