|
08.02.2022, 23:53 | #1 |
Участник
|
Цитата:
Цитата:
Цитата:
по-русски, их можно называть "движения". Цитата:
Цитата:
Цитата:
авторы россикского класса вот тоже побоялись. Цитата:
по поводу pack/unpack создал отдельную тему List/Set/Map/Array: deep clone через pack/create в классических Аксаптах Цитата:
Сообщение от Masel
В качестве решения предлагается изменить структуру хранения так, чтобы дублирование выполнялось командой container1 = container2, это работает быстро. А для того, чтобы изменить интерфейс работы с классом модифицировать taxTransactionRelationshipCollection метод, чтобы он выдавал данные в привичном виде, собирая из контейнеров результат.
и огромное вам спаибо за предложенное решение. но решить можно еще лучше. прежде всего, потому что у вас нет организационных ограничений. В Майкрософте каждый объект АОТ приписан к определенной команде. И разработчик другой команды не имеет права менять чужой объект без согласования. Поэтому разработчики Московской команды часто вынуждены делать странные решения сбоку, вместо того, чтобы просто расширить функционал другого объекта АОТ. У вас таких ограничений нет - вы можете менять любой класс, любую таблицу, любой объект АОТ. Очень многие странности в Аксапте можно решить просто перенеся функционал в другой класс. Вот такая вот организация труда у них там в Майкрософте. Подумайте - а что если бы метод merge существовал прямо в классе с идиотским назвнием LedgerPostingOneToManyCollection? Цитата:
Подумайте не только об этом месте. Ведь по сути, данное место просто окрашивает движения разными enum-признаками. Рано или поздно эти признаки надо будет как-то связать с исходными движениями. Поскольку сейчас признаки хранятся в коллекции, то надо будет снова делать цикл по одному и искать исходные движения по одному. А можно было бы сделать select-join со временной таблицей Похоже, что беда в том, что данный код класса с идиотским названием делал человек, который не знает ни аксапту, ни СУБД. Причем, этот код прошел ревью. Т.е. либо это был team lead, который может впендюрить код без ревью, либо вся команда была уровня "не знаю ни аксапту, ни СУБД". И я даже не знаю какой вариант хуже... Цитата:
Цитата:
между p-code и .net слишком дорогой маршаллинг. Цитата:
Цитата:
Огромное спасибо за предложенное решение. Последний раз редактировалось mazzy; 09.02.2022 в 00:10. |
|
09.02.2022, 11:51 | #2 |
Участник
|
Это не дублирование, вы просто получите вторую ссылку на тот же экземпляр таблицы.
Я если честно не понимаю просто эту идею, что это даст. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
09.02.2022, 12:11 | #3 |
Участник
|
Цитата:
доступ к приватной переменной map и возможность напрямую использовать методы этого map, вместо публичного интерфейса. В общем, я понял. Спасибо, что предложили решение, которое реально увеличивает производительность. |
|
09.02.2022, 18:16 | #4 |
Участник
|
Да нет, вроде не ошибаюсь. Такой джоб у меня выдает 2 записи и в 2012 и в d365. Два курсора по одной таблице. Вставляете в любой, получаете записи в обоих курсорах.
X++: TmpFrmVirtual tmp1, tmp2; tmp1.clear(); tmp1.ItemId = 'item1'; tmp1.insert(); tmp2.setTmpData(tmp1); tmp2.clear(); tmp2.ItemId = 'item2'; tmp2.insert(); select count(RecId) from tmp1; info(strFmt("%1", tmp1.recId)); |
|
|
За это сообщение автора поблагодарили: mazzy (10). |
Теги |
faq, tax, налоги, оптимизация, производительность |
|
Похожие темы | ||||
Тема | Ответов | |||
Вызов метода базового класса | 15 | |||
jerry-dynamics: tax codes | 0 | |||
Вызов класса из другого класса | 9 | |||
передача курсора в два класса | 3 | |||
Запустить метод класса | 2 |
|