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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2014, 15:00   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
ax2012: что за таблица SubLedgerJournalTransferNumberSeqTmp? почему содержит много данных?
ax2012

разбираюсь с этим *** subledger
что за таблица SubLedgerJournalTransferNumberSeqTmp?
почему содержит много данных? около 100К записей

msdn утверждает, что эта таблица содержит временные данные ( table holds the subledger journal transfer temporary data)
http://msdn.microsoft.com/en-us/libr...berseqtmp.aspx

а почему тогда таблица регулярная?
и где она должна очищаться?

удаление записей есть только в методе \Classes\SubledgerJournalTransferCommand\createNumSeqTmpData
но непохоже, чтобы этот метод выполнял массовую очистку

может кто разбирался с этими **** субкнигами?
За это сообщение автора поблагодарили: gl00mie (2).
Старый 27.01.2014, 15:29   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Судя по всему, она используется для того, чтобы генерировать номера журналов ГК ( \Classes\SubledgerJournalTransferCommand\generateJournalNumbers ) чтобы можно было потом их вставить одним insert_recordset ом (как, например, тут \Classes\SubledgerJournalTransferCommand\insertGeneralJournalEntryRelated).

По идее можно было бы использовать временную таблицу типа TempDB но почему-то так не сделали - надо выяснить. И похоже очищается она только перед генерацией новой порции - что довольно подозрительно.
За это сообщение автора поблагодарили: gl00mie (2).
Старый 27.01.2014, 15:33   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
И похоже очищается она только перед генерацией новой порции - что довольно подозрительно.
не то чтобы "очищается" удаляются записи "текущего сеанса".
а откуда может возникнуть порядка 100К записей? и как они должны удаляться полностью?
Старый 27.01.2014, 16:29   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
По идее они должны создаваться вначале каждого переноса из субкниги в ГК и удаляться в конце. Но сейчас я вижу, что они создаются в отдельной транзакции.

Так как перенос может осуществляться в отдельном пакетном задании, в случае систематического сбоя, вероятно, он может генерировать там записи снова и снова. Сейчас таблица растет? Насколько последний transferID в этой таблице отличается от последнего transferID в \Data Dictionary\Tables\GeneralJournalEntry?
Старый 27.01.2014, 16:36   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Так как перенос может осуществляться в отдельном пакетном задании, в случае систематического сбоя, вероятно, он может генерировать там записи снова и снова. Сейчас таблица растет? Насколько последний transferID в этой таблице отличается от последнего transferID в \Data Dictionary\Tables\GeneralJournalEntry?
хороший вопрос. но я пока имею доступ только к бэкапу. узнаю.

transferID - разные. для каждого в среднем по 100 записей. есть и группы по 2-3тыс. записей.


правильно ли я понимаю, что записи остаются только в результате ошибки?
я правильно понимаю, что таблицу можно просто очистить вручную sql-запросом?
а то я что-то засомневался.
Старый 28.01.2014, 09:39   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Судя по перекрестным ссылкам это должно быть так. Причем исключения обработаны корректно - значит должен происходить какой-то сбой. но зуб не дам - надо спросить у коллег.

Если решишь чистить, учитывай статус (subledgerJournalEntry.Status == SubledgerJournalEntryStatus::Transferred) чтобы не потереть данные текущих транзакций

Последний раз редактировалось belugin; 28.01.2014 в 09:43.
За это сообщение автора поблагодарили: mazzy (5).
Старый 28.01.2014, 10:04   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
максим, может подскажешь или выскажешь свои соображения...
а зачем этот "закат солнца вручную"?

ведь есть нормальные номерные серии, на худой конец есть recid...
зачем выделять и резервировать номера таким... хм... необычным способом? чего хотели добиться этой таблицей?
Старый 28.01.2014, 10:08   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Если внимательно присмотреться, то там создаются номера из номерных серий это просто вспомогательная таблица, чтобы можно было затем при создании записей присваивать их одним insert|update_recordset, а не создавать вручную позаписно - я подробнее постараюсь сегодня-завтра посмотреть.
Старый 28.01.2014, 10:22   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
чтобы можно было затем при создании записей присваивать их одним insert|update_recordset
и только?
Старый 29.01.2014, 09:06   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
и только?
Насколько я вижу, да - таблица используется только в коде переноса из субкниги в ГК (в классе SubledgerJournalTransferCommand и его расширения для корреспонденции - последнее, впрочем можно не рассматривать, так как концептуально там дублируется примерно тот же алгоритм, только с учетом группировки по парам проводок).

Сначала туда генерируются номера будущих GeneralJournalEntry, ( \Classes\SubledgerJournalTransferCommand\createNumSeqTmpData дл создания таблицы, \Classes\SubledgerJournalTransferCommand\generateJournalNumbers для присвоения номеров )

Затем вставляются сами Entry, используя номера оттуда ( \Classes\SubledgerJournalTransferCommand\insertGeneralJournalEntryRelated )

Затем она используется, чтобы привязать проводки к GeneralJournalEntry ( \Classes\SubledgerJournalTransferCommand\insertGeneralJournalAccountEntryRelated )

И в конце записи удаляются, а при исключении еще и возвращаются номера в номерную серию: ( конец \Classes\SubledgerJournalTransferCommand\executeTransfer )

Если так не делать, то вся вставка записей в ГК деградирует по быстродействию (придется использовать позаписную вставку, а не запросы к SQL серверу)
За это сообщение автора поблагодарили: mazzy (5).
Теги
ax2012, главная книга

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что за компании в демоданных AX2012 R2? Почему такие данные? mazzy DAX: Функционал 2 21.05.2013 01:18
Что лучше, много номенклатур или много конфигураций? axvrp DAX: Функционал 75 21.09.2010 16:13
Надо преименовать ItemId. Почему блокируется вся таблица? blokva DAX: Программирование 1 12.03.2008 12:10
Расширенный тип данных и FormHelp Владимир Максимов DAX: Программирование 2 04.02.2004 17:02
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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