|  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 тоже отработал без ошибки !! Что это блин за баг такой. 
				__________________ Дмитрий | 
|  | 
|  | 
| 
 |