04.09.2017, 15:11 | #1 |
Участник
|
Kashperuk Ivan: Development tutorial: insert_recordset using the Query class
Источник: http://kashperuk.blogspot.com/2017/0...recordset.html
============== IntroductionI am sure most of you are familiar with set-based X++ CUD operators: insert_recordset, update_recordset and delete_from. They allow performing database operations with a large number of records in a single roundtrip to the server, instead of a row-by-row type of operation, which depends on the number of rows being processed. As a result, they can provide a very significant boost in Источник: http://kashperuk.blogspot.com/2017/0...recordset.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
04.09.2017, 17:41 | #2 |
Участник
|
Забавная конструкция - статический метод класса Query, в который надо передать инстанс класса Query. Ну и для Map'а могли бы специальный класс сделать.
X++: Query::insert_recordset(salesLineHistory, targetToSourceMap, query); а так... ура, товарищи! наконец в ядре новые методы для Query! Последний раз редактировалось mazzy; 04.09.2017 в 17:50. |
|
04.09.2017, 18:26 | #3 |
Участник
|
Отвечая на твой вопрос в блоге - добавили его в АХ 2012, просто, видимо, прошло незаметно для большинства.
А у меня нету 2012, поэтому пример в 7ке Все должно быть аналогично обычному insert_recordset - то есть если сложилось так, что нужно перейти в row-by-row, то будет построчно. И .т.д. |
|
|
За это сообщение автора поблагодарили: mazzy (12), raz (10). |
04.09.2017, 20:05 | #4 |
Участник
|
это я понял. и посмотрел в АОТ )))
скорее, я плохо сформулировал на неродном языке. в статье есть два утверждения: 1. ввели в ax2012. 2. вот вам проект axpp для акс7. но в статье нигде не говорится что этот функционал ввели и в акс7. поэтому, на мой взгляд, статья имеет некоторый непоследовательный характер. исправляется просто - к фразе "ввели в ax2012 sp3" добавить "и в акс7". Или в разделе Example как то Последний раз редактировалось mazzy; 04.09.2017 в 20:07. |
|
04.09.2017, 20:40 | #5 |
Участник
|
Цитата:
Сообщение от mazzy
это я понял. и посмотрел в АОТ )))
скорее, я плохо сформулировал на неродном языке. в статье есть два утверждения: 1. ввели в ax2012. 2. вот вам проект axpp для акс7. но в статье нигде не говорится что этот функционал ввели и в акс7. поэтому, на мой взгляд, статья имеет некоторый непоследовательный характер. исправляется просто - к фразе "ввели в ax2012 sp3" добавить "и в акс7". Или в разделе Example как то Цитата:
In Microsoft Dynamics AX 2012 R3 a static method was added on the Query class, that allows to solve the two problems above for insert_recordset. This is of course now also available in Microsoft Dynamics 365 for Finance and Operations: Enterprise edition.
|
|
04.09.2017, 21:43 | #6 |
Участник
|
Мне всегда казалось, что эту фичу в 12ке для отчетов добавили https://blogs.msdn.microsoft.com/axp...atures-part-6/
Так теперь МС возьмётся все инсерты переписывать или это просто как можно было бы сделать но сами мы так делать не будем ? |
|
05.09.2017, 00:07 | #7 |
Участник
|
Цитата:
Сообщение от skuull
Мне всегда казалось, что эту фичу в 12ке для отчетов добавили https://blogs.msdn.microsoft.com/axp...atures-part-6/
Так теперь МС возьмётся все инсерты переписывать или это просто как можно было бы сделать но сами мы так делать не будем ? |
|
|
За это сообщение автора поблагодарили: skuull (2). |
05.09.2017, 07:23 | #8 |
Участник
|
А почему update и delete не сделали? Напрашивается сделать.
|
|
05.09.2017, 08:47 | #9 |
Участник
|
Вероятно, был уже готовый сценарий где надо использовать insert_recordset с Query но не было для update и delete.
Но тут нет людей из platform team так что вряд ли вы можете узнать точно, почему сделали что-то другое вместо этого |
|
05.09.2017, 11:04 | #10 |
Участник
|
Цитата:
И не только бизнес-логики, но и платформенного. К сожалению. Впрочем, обсуждение уже было Оver-engineering - "зачем так сложно?" |
|
12.09.2021, 19:23 | #11 |
Участник
|
У кого-нибудь получалось использовать в качестве выбираемых полей TableId ?
Для массовой вставки записей в таблицу с полями типа RefTableId, RefRecId.
__________________
Дмитрий |
|
13.09.2021, 08:08 | #12 |
Участник
|
Можно, например, добавить в джойн c нужной табличкой SQLDictionary.
__________________
Sergey Nefedov |
|
13.09.2021, 19:43 | #13 |
Участник
|
Сегодня полдня потратил из-за ошибки, подобной тем что упоминаются в ссылках :
https://dynamicsuser.net/ax/f/develo...t-of-an-insert https://community.dynamics.com/ax/f/...n-custom-table Запускаю Query::insert_recordset , а там бардак с полями! Система при формировании скрипта INSERT INTO два раза упоминает одно и то же заполняемое поле и SQL сваливается в ошибку "The column name 'xxx' is specified more than once in the SET clause or column list of an INSERT ...". Для запуска использовал класс-наследник от RunBaseBatch с RunOn=CalledFrom, запускал класс через action-пункт меню. Долбился-долбился, а потом случайно запустил класс напрямую из репозитария. И insert_recordset отработал без ошибки !! Потом для эксперимента установил у класса RunOn=Server. Вызвал класс через пункт меню. И insert_recordset тоже отработал без ошибки !! Что это блин за баг такой.
__________________
Дмитрий |
|
|
|