AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 17.08.2005, 09:18   #1  
chi ist offline
chi
Участник
 
80 / 13 (1) ++
Registriert seit: 21.01.2004
? Что за поле LedgerBalancesTrans.LedgerBalancesVariant?
Собственно, сабж. Даже лэйбла к нему нет (и к его расширенному типу).
Alt 17.08.2005, 09:39   #2  
DreamCreator ist offline
DreamCreator
Moderator
Benutzerbild von DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Registriert seit: 04.11.2004
Ort: Казань
Класс LedgerVoucherBalancesList

переменная variant потом может инициализироватьи обновлять LedgerBalancesVariant

PHP-Code:
void new(LedgerBalancesMap _ledgerBalancesMap)
{
    
Xsession    session = new xsession();
;
    
LedgerBalances _ledgerBalancesMap;

    
variant session.sessionId() mod 20;

    
balanceList = new RecordSortedList(LedgerBalances.TableId);

Alt 17.08.2005, 09:41   #3  
chi ist offline
chi
Участник
 
80 / 13 (1) ++
Registriert seit: 21.01.2004
А для чего это поле нужно в таблице?
Alt 17.08.2005, 09:51   #4  
DreamCreator ist offline
DreamCreator
Moderator
Benutzerbild von DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Registriert seit: 04.11.2004
Ort: Казань
ИМХО: судя по результатам поиска в АОТ-е это поле используется при поиске (как параметр для поиска) и сортировке.
Alt 17.08.2005, 10:46   #5  
fed ist offline
fed
Moderator
Benutzerbild von fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2.914 / 5737 (197) ++++++++++
Registriert seit: 13.03.2002
Ort: Hüfingen,DE
Это поле добавлено в версии 3.0 для уменьшения взаимных блокировок.

Грубо говоря - идея следующая:
В старой Axapta (2.5/2.1) обороты по счетам и аналитикам накапливались в таблицах ledgerBalances и ledgerBalancesDim в разрезе счетов и периодов и в разрезе счетов, периодов и аналитик соответственно. Классы разноски в ledgerTrans после записи в саму ledgerTrans обновляли обороты в этих таблицах. Соответственно - если я начинал разносить журнал из 5000 строк, система обновляла одну из строк в ledgerBalances (скажем - по счету 60.01) и эта строка блокировалась до конца транзакции. При этом все остальные транзакции, которые пытались выполнить проводку на счет 60.01, ожидали ее окончания. Ну а поскольку разноска журнала из 5000 строк может занимать эдак часик, а то и два, все это приводило к высокому уровню блокировок, и большому количеству перекуров среди пользователей.

В версии 3.0 эти таблицы заменили на таблицы ledgerBalancesTrans и ledgerBalancesDimTrans. При этом - обороты по счету могут записываться в любую из 20 строк которые этому счету соответствуют. То есть - при обновлении ledgerTrans система более или менее случаным (в зависимости от номера сессии) образом выбирает одну из этих строк и пишет туда сумму оборотов. Благодаря этому - вероятность взаимных блокировок уменьшается в 20 раз. В то же время - если классам LedgerBalanceDim* или подобным необходимо посчитать обороты за период, то в общем-то, не возникает большой разницы между чтением одной строки из таблицы и чтением 20 строк из той же таблицы (Серверное железо-то теперь очень даже мощное). Так что тут проблем с производительностью не возникает.
This post has been rated by: mazzy (5), konopello (1), alex55 (1).
Alt 13.06.2007, 16:47   #6  
gaenar ist offline
gaenar
Участник
 
151 / 63 (3) ++++
Registriert seit: 26.03.2005
Возвращаюсь к вопросу о LedgerBalancesDimTrans.

А объясните, как может быть, что в LT только одна проводка на 800К, а в LedgerBalancesDimTrans две на ту же сумму и отличаются они только этим полем LedgerBalancesVariant? Из-за этого в отчёт попадают задвоенные обороты и выходит, что этой агрегированной таблицей пользоваться не стоит.
__________________
Умные тоже наступают на грабли, но только для того, чтобы поднять их с земли не нагибаясь.
Alt 14.06.2007, 10:09   #7  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von gaenar Beitrag anzeigen
Возвращаюсь к вопросу о LedgerBalancesDimTrans.

А объясните, как может быть, что в LT только одна проводка на 800К, а в LedgerBalancesDimTrans две на ту же сумму и отличаются они только этим полем LedgerBalancesVariant? Из-за этого в отчёт попадают задвоенные обороты и выходит, что этой агрегированной таблицей пользоваться не стоит.
1. У пользователей нет штатной возможности повлиять на промежуточные итоги (LedgerBalancesDimTrans)
2. Несоответствие итогов и проводок может создать только программист или администратор
2.1. Программист может вместо методов Insert, Update, Delete вызвать методы doInsert, doUpdate, doDelete. При вызове do-методов ядро не выполняет предопределенные процедуры. Следовательно при вызове do-методов на таблице проводок не изменятся итоги
2.2. администратор может выполнить какие-либо операции над таблицей проводок средствами СУБД.

Если программист и администратор вручную вмешиваются в базу, то они должны вручную обеспечить целостность базы. В данном случае пересчитать итоги.

Бухгалтерские итоги пересчитываются Главное меню \ Главная книга \ Периодические операции \ Пересчет данных периодов
__________________
полезное на axForum, github, vk, coub.
Alt 14.06.2007, 11:54   #8  
gaenar ist offline
gaenar
Участник
 
151 / 63 (3) ++++
Registriert seit: 26.03.2005
Да, после пересчёта всё хорошо. Спасибо.
Попрошу добавить в пакет на ночь.
Забывают пересчитывать вручную после смены аналитики средствами программиста.

By the way...
не могу понять, зачем в русской локализации код, отвечающий за добавление LedgerBalancesDimTrans и LedgerBalancesTrans вынесен из LedgerVoucherTransObject.postGroup() и занесён в "пост-проверку" в LedgerVoucher.post() ( в тело цикла for (more = ledgerTransList.first(ledgerTrans) ). Причём в зависимости от параметра Correspondense_RU. Видимо, из-за того, что метод splitTrans не возвращает созданный корреспондирующий LedgerTrans, и положить его в LedgerBalancesXXX сразу нет возможности.
__________________
Умные тоже наступают на грабли, но только для того, чтобы поднять их с земли не нагибаясь.

Geändert von gaenar (14.06.2007 um 13:45 Uhr)
Stichworte
ax3.0

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
сопоставление оплат клиента, переносов сальдо-поле накладная в общем журнале? Aquarius DAX: Функционал 3 28.01.2009 12:51
Поле "Оплатить до" в строке общего журнала longson DAX: Функционал 7 29.03.2008 14:38
вычисляемое поле ZhanR DAX: Программирование 8 28.09.2006 10:25
поле LedgerBalancesVariant simply2double DAX: Программирование 2 08.12.2005 18:23
Создание feature key на поле формы tov DAX: Администрирование 11 30.06.2003 15:49

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:38 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.