|
![]() |
#1 |
Участник
|
Да-да согласен это класс.... торопился, ошибся.
Цитата:
Если потом в строках журнала ОС измените аналитику , сформированную таким образом, то и в проводки ОС и проводки ГК пойдет именно измененная из строк журнала.
|
|
![]() |
#2 |
Moderator
|
|
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Moderator
|
Различать по полю AssetTransType таблицы RAssetTrans. Поле содержит значения enum'а RAssetTransType: RAssetTransType::Acquisition = 3 - стоимость, RAssetTransType:: Depreciation = 0 - амортизация.
|
|
|
За это сообщение автора поблагодарили: raniel (1). |
![]() |
#5 |
Мрачный тип
|
Цитата:
Trans'ы ОС'овские создаются наследниками класса RAssetPost, в данном случае - RAssetPost_CompanyReceipt. Вызывается метод этого класса createTrans, в котором дважды создается запись в RAssetTrans. В одном случае для инициализации RAssetTrans вызывается метод этого же класса initAcquisitionTrans() (для суммы стоимости) и initDepreciationTrans() (для износа). Что мы в них видим ? А в них обоих есть вызов родительского метода initFromLedgerJournalTrans(), в котором аналитика RAssetTrans инициализируется методом dimension() на этой же таблице (в качестве параметра передается туда аналитика строки журнала). вот этот метод X++: public Dimension dimension(Dimension _dimension) { Dimension assetDimension; int x; ; assetDimension = this.assetStandards().Dimension; for (x = 1; x <= dimof(assetDimension); x++) { assetDimension[x] = _dimension[x] ? _dimension[x] : assetDimension[x]; } return assetDimension; } Мы здесь видим соединение двух аналитик (переданной как параметр из строки журнала и текущей из модели учета) по принципу "Если журнальная аналитика на уровне X пуста - в проводку пойдет аналитика уровня X из модели ОС". О полной замене аналитики из журнала речи нет - есть речь о дополнении. Эта штука работает, если между моментом формирования строк журнала ОС и разноской журнала некий подлый юзер дополнил некую аналитику в модели учета, которой нет в журнале. Если на этом уровне в журнале есть аналитика - хоть заменяйся ее в модели, но в проводку ос пойдет из журнала.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
![]() X++: public Dimension dimension(Dimension _dimension) { Dimension assetDimension; int x; ; assetDimension = this.assetStandards().Dimension; for (x = 1; x <= dimof(assetDimension); x++) { assetDimension[x] = _dimension[x] ? _dimension[x] : assetDimension[x]; } return assetDimension; } Мы здесь видим соединение двух аналитик (переданной как параметр из строки журнала и текущей из модели учета) по принципу "Если журнальная аналитика на уровне X пуста - в проводку пойдет аналитика уровня X из модели ОС". О полной замене аналитики из журнала речи нет - есть речь о дополнении. Эта штука работает, если между моментом формирования строк журнала ОС и разноской журнала некий подлый юзер дополнил некую аналитику в модели учета, которой нет в журнале. Если на этом уровне в журнале есть аналитика - хоть заменяйся ее в модели, но в проводку ос пойдет из журнала. Цитата:
public void updateNow(LedgerVoucher _ledgerVoucher,
LedgerPostingType _posting, LedgerJournalTrans _ledgerJournalTrans) { LedgerPostingType ledgerPostingType = LedgerPostingType::None; RAssetStandards assetStandards = this.assetStandards(_ledgerJournalTrans); LedgerVoucherTransObject ledgerVoucherTransObject; RAssetPost assetPost; ; if (this.check(_ledgerJournalTrans)) { _ledgerJournalTrans.RAssetStandardId = assetStandards.AssetStandardId; if (_ledgerJournalTrans.AssetCanDisposal_RU || ! _ledgerJournalTrans.AssetToFromRecId_RU) { assetPost = RAssetPost::construct(_ledgerJournalTrans, _ledgerVoucher, assetStandards.AssetStandardId); assetPost.run(); } Цитата:
if (_ledgerJournalTrans.AssetCanDisposal_RU || ! _ledgerJournalTrans.AssetToFromRecId_RU)
И соответственно внутрь никогда не попадёт, а именно там вычисляется и прописывается Dimensions. И Это стандартный функционал. Ну повторите ради интереса пример. Создайте ОС , сделайте приём укажите амортизацию. Создайте Журнал ОС, пропишите разную аналитику у ОС и его амортизации, разнесите и гляньте в RAssetTrans аналитика будет одинаковой что у амортизации что у ОС. |
|
![]() |
#7 |
Мрачный тип
|
Простите, некоей нелогичности не замечаете ?
Внимательно вглядитесь в условие и в приведенные значение ... По Вашему мнению X++: if (_ledgerJournalTrans.AssetCanDisposal_RU || ! ledgerJournalTrans.AssetToFromRecId_RU) Т.е. X++: if(true || !false)
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 04.08.2010 в 22:52. |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
![]() Простите, некоей нелогичности не замечаете ?
Внимательно вглядитесь в условие и в приведенные значение ... По Вашему мнению X++: if (_ledgerJournalTrans.AssetCanDisposal_RU || ! ledgerJournalTrans.AssetToFromRecId_RU) Т.е. X++: if(true || !false) Я прежде чем написать сюда, дебагером ни раз пробегал по коду и задаю вопрос точно зная как оно у меня считает. Мне интересно зачем так сделано? Для других операций всё ок, отрабатывает отлично, но там и создаются всего 2 строки. а тут при приёме 4 строки. Если у Вас нет времени то не стоит мне отвечать как бы лишь бы ответить. Просто сделайте контрольный пример. Мне интересно что у Вас получится. Заранее спасибо. Последний раз редактировалось raniel; 05.08.2010 в 09:54. |
|
|
![]() |
||||
Тема | Ответов | |||
Продажа ОС | 7 | |||
Сторно ввода в эксплуатацию ОС | 16 | |||
Операции с ОС, переданными в аренду | 2 | |||
Массовая внутригрупповая продажа/покупка ОС | 0 | |||
"Ловля" проводок в ГК по ОС в модуле ОС | 17 |
|