04.08.2010, 12:02 | #1 |
Участник
|
про ОС...
Вопрос по ОС(модуль основные средства).
Создаём журнал на Приём. формируются 4 строки по ОС. Одна бухгалтерская другая налоговая и их амортизации. После разноски эти же строки формируются в RAssetTrans. По идее они должны подхватывать аналитику из строк журнала LedgerJournalTrans, но нет, они берутся из RassetStandarts. и соответственно аналитика амортизации такая же как и аналитика у Балансовой стоимости бухгалтерской и налоговой строчки(аналитика ложиться не так как в строках журнала). Это можно увидеть в методе createTrans таблицы RAssetJournal. Зачем так сделано? И вообще как после связать таблицу RAssetTranc c LedgerJournalTrans чтоб выдрать правильную аналитику? Или я малость не понимаю идеологию модуля? |
|
04.08.2010, 12:41 | #2 |
Мрачный тип
|
Таблицы RAssetJournal нет. Ни в 3-ке, ни в 4-ке, ни в 2009 - это класс, вообще-то.
Аналитика строк журнала ОС берется не напрямую с таблицы моделей учета, а с вызова метода этого класса, который ее делает наслоением аналитик : 1) Общих для модуля 2) Общих для настройки модели учета 3) Самой модели конкретного ОС 4) Аналитики сдачи в аренду Если потом в строках журнала ОС измените аналитику , сформированную таким образом, то и в проводки ОС и проводки ГК пойдет именно измененная из строк журнала.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: raniel (1). |
04.08.2010, 13:06 | #3 |
Участник
|
Да-да согласен это класс.... торопился, ошибся.
Цитата:
Если потом в строках журнала ОС измените аналитику , сформированную таким образом, то и в проводки ОС и проводки ГК пойдет именно измененная из строк журнала.
|
|
04.08.2010, 13:30 | #4 |
Moderator
|
|
|
04.08.2010, 13:39 | #5 |
Участник
|
|
|
04.08.2010, 14:38 | #6 |
Moderator
|
Различать по полю AssetTransType таблицы RAssetTrans. Поле содержит значения enum'а RAssetTransType: RAssetTransType::Acquisition = 3 - стоимость, RAssetTransType:: Depreciation = 0 - амортизация.
|
|
|
За это сообщение автора поблагодарили: raniel (1). |
04.08.2010, 14:57 | #7 |
Мрачный тип
|
Цитата:
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 из модели ОС". О полной замене аналитики из журнала речи нет - есть речь о дополнении. Эта штука работает, если между моментом формирования строк журнала ОС и разноской журнала некий подлый юзер дополнил некую аналитику в модели учета, которой нет в журнале. Если на этом уровне в журнале есть аналитика - хоть заменяйся ее в модели, но в проводку ос пойдет из журнала.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
04.08.2010, 18:41 | #8 |
Участник
|
Цитата:
Сообщение от 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 аналитика будет одинаковой что у амортизации что у ОС. |
|
04.08.2010, 22:47 | #9 |
Мрачный тип
|
Простите, некоей нелогичности не замечаете ?
Внимательно вглядитесь в условие и в приведенные значение ... По Вашему мнению X++: if (_ledgerJournalTrans.AssetCanDisposal_RU || ! ledgerJournalTrans.AssetToFromRecId_RU) Т.е. X++: if(true || !false)
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 04.08.2010 в 22:52. |
|
05.08.2010, 09:50 | #10 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
Простите, некоей нелогичности не замечаете ?
Внимательно вглядитесь в условие и в приведенные значение ... По Вашему мнению X++: if (_ledgerJournalTrans.AssetCanDisposal_RU || ! ledgerJournalTrans.AssetToFromRecId_RU) Т.е. X++: if(true || !false) Я прежде чем написать сюда, дебагером ни раз пробегал по коду и задаю вопрос точно зная как оно у меня считает. Мне интересно зачем так сделано? Для других операций всё ок, отрабатывает отлично, но там и создаются всего 2 строки. а тут при приёме 4 строки. Если у Вас нет времени то не стоит мне отвечать как бы лишь бы ответить. Просто сделайте контрольный пример. Мне интересно что у Вас получится. Заранее спасибо. Последний раз редактировалось raniel; 05.08.2010 в 09:54. |
|
05.08.2010, 11:24 | #11 |
Мрачный тип
|
AssetCanDisposal_RU - это флаг запуска создания проводки ОС по строке журнала. Реализует возможность проведения операций ОС, в которых кол-во проводок ОС(создаются только по тем строкам журнала ОС, где этот флаг выставлен) не равно кол-ву проводок ГК (создаются по каждой строке журнала ОС). Подобное характерно для операций выбытия (по одной модели одного ОС - проводка ОС одна, проводок ГК несколько, строк журнала ОС несколько, флаг установлен только в одной строке из нескольких по данной модели)
Можно получить более подробную информацию о состоянии пары строк журнала ОС по одной модели учета ? Какие там стоят типы операций и каково состояние флага AssetCanDisposal_RU ? Вариантов для операции приема я видел всего два : 1) Если в обоих строках журнала при создании проставлен тип операции "Прием", то этот флаг должен быть выставлен только в одной из двух строк, и создание пары RAssetTrans по стоимости и износу будет инициировано классом RAssetPost_CompanyReceipt исключительно с одной строки LedgerJournalTrans, в которой этот флаг выставлен - т.е. в обоих проводках ОС и проводках ГК будет одна и та же аналитика с одной строки журнала ОС. 2) Если в строках при создании проставлены "Ввод в эксплуатацию" и "Амортизация", то флаг должен стоять в обоих строках LedgerJournalTrans. В таком случае создание RAssetTrans будет инициировано двумя разными наследниками RAssetPost c двух разных строк журнала и в проводки ОС/проводки ГК пойдет разная аналитика с разных строк журнала. У Вас, похоже, первый случай ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
05.08.2010, 12:06 | #12 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
AssetCanDisposal_RU - это флаг запуска создания проводки ОС по строке журнала. Реализует возможность проведения операций ОС, в которых кол-во проводок ОС(создаются только по тем строкам журнала ОС, где этот флаг выставлен) не равно кол-ву проводок ГК (создаются по каждой строке журнала ОС). Подобное характерно для операций выбытия (по одной модели одного ОС - проводка ОС одна, проводок ГК несколько, строк журнала ОС несколько, флаг установлен только в одной строке из нескольких по данной модели)
Можно получить более подробную информацию о состоянии пары строк журнала ОС по одной модели учета ? Какие там стоят типы операций и каково состояние флага AssetCanDisposal_RU ? Вариантов для операции приема я видел всего два : 1) Если в обоих строках журнала при создании проставлен тип операции "Прием", то этот флаг должен быть выставлен только в одной из двух строк, и создание пары RAssetTrans по стоимости и износу будет инициировано классом RAssetPost_CompanyReceipt исключительно с одной строки LedgerJournalTrans, в которой этот флаг выставлен - т.е. в обоих проводках ОС и проводках ГК будет одна и та же аналитика с одной строки журнала ОС. 2) Если в строках при создании проставлены "Ввод в эксплуатацию" и "Амортизация", то флаг должен стоять в обоих строках LedgerJournalTrans. В таком случае создание RAssetTrans будет инициировано двумя разными наследниками RAssetPost c двух разных строк журнала и в проводки ОС/проводки ГК пойдет разная аналитика с разных строк журнала. У Вас, похоже, первый случай ... |
|
05.08.2010, 13:39 | #13 |
Мрачный тип
|
Если просто поставить у всех флаг, без изменения типа операции в журнале - после разноски задвоятся проводки по ОС и ГК.
Вообще , "Прием" - операция фантомная, живущая только в журнале, в проводках ОС не существующая (при разноске она создает проводки ОС по вводу и амортизации) и в расчете балансов по ОС не участвующая. Потому можно и обмануть слегка систему, слегка изменив тип создаваемых операций - несложная модификация класса RAssetProposal_CompanyReceipt, создающего строки по приему:
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: raniel (1). |
05.08.2010, 16:30 | #14 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
.....Потому можно и обмануть слегка систему, слегка изменив тип создаваемых операций - несложная модификация класса RAssetProposal_CompanyReceipt, создающего строки по приему:
а если просто там выставлю для всех ledgerJournalTrans.AssetCanDisposal_RU = true это плохо будет?.... да заметил что так лучше не делать.... Последний раз редактировалось raniel; 05.08.2010 в 17:17. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Продажа ОС | 7 | |||
Сторно ввода в эксплуатацию ОС | 16 | |||
Операции с ОС, переданными в аренду | 2 | |||
Массовая внутригрупповая продажа/покупка ОС | 0 | |||
"Ловля" проводок в ГК по ОС в модуле ОС | 17 |
|