AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2017, 15:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
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  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Забавная конструкция - статический метод класса Query, в который надо передать инстанс класса Query. Ну и для Map'а могли бы специальный класс сделать.


X++:
Query::insert_recordset(salesLineHistory, targetToSourceMap, query);
интересно, будут ли работать skip-методы, logToDatabase-методы...

а так... ура, товарищи! наконец в ядре новые методы для Query!
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 04.09.2017 в 17:50.
Старый 04.09.2017, 18:26   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Отвечая на твой вопрос в блоге - добавили его в АХ 2012, просто, видимо, прошло незаметно для большинства.
А у меня нету 2012, поэтому пример в 7ке

Все должно быть аналогично обычному insert_recordset - то есть если сложилось так, что нужно перейти в row-by-row, то будет построчно. И .т.д.
За это сообщение автора поблагодарили: mazzy (12), raz (10).
Старый 04.09.2017, 20:05   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Отвечая на твой вопрос в блоге - добавили его в АХ 2012
это я понял. и посмотрел в АОТ )))

скорее, я плохо сформулировал на неродном языке.
в статье есть два утверждения:
1. ввели в ax2012.
2. вот вам проект axpp для акс7.

но в статье нигде не говорится что этот функционал ввели и в акс7.
поэтому, на мой взгляд, статья имеет некоторый непоследовательный характер.

исправляется просто - к фразе "ввели в ax2012 sp3" добавить "и в акс7".
Или в разделе Example как то обосновать упомянуть, что проект для акс7.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 04.09.2017 в 20:07.
Старый 04.09.2017, 20:40   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от mazzy Посмотреть сообщение
это я понял. и посмотрел в АОТ )))

скорее, я плохо сформулировал на неродном языке.
в статье есть два утверждения:
1. ввели в ax2012.
2. вот вам проект axpp для акс7.

но в статье нигде не говорится что этот функционал ввели и в акс7.
поэтому, на мой взгляд, статья имеет некоторый непоследовательный характер.

исправляется просто - к фразе "ввели в ax2012 sp3" добавить "и в акс7".
Или в разделе Example как то обосновать упомянуть, что проект для акс7.
Поправил.

Цитата:
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  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Мне всегда казалось, что эту фичу в 12ке для отчетов добавили https://blogs.msdn.microsoft.com/axp...atures-part-6/
Так теперь МС возьмётся все инсерты переписывать или это просто как можно было бы сделать но сами мы так делать не будем ?
Старый 05.09.2017, 00:07   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от skuull Посмотреть сообщение
Мне всегда казалось, что эту фичу в 12ке для отчетов добавили https://blogs.msdn.microsoft.com/axp...atures-part-6/
Так теперь МС возьмётся все инсерты переписывать или это просто как можно было бы сделать но сами мы так делать не будем ?
К сожалению, по-другому (без особой потери производительности) не получается, поэтому да, многие запросы вставки записей перепишем так
За это сообщение автора поблагодарили: skuull (2).
Старый 05.09.2017, 07:23   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А почему update и delete не сделали? Напрашивается сделать.
Старый 05.09.2017, 08:47   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Logger Посмотреть сообщение
А почему update и delete не сделали? Напрашивается сделать.
Вероятно, был уже готовый сценарий где надо использовать insert_recordset с Query но не было для update и delete.

Но тут нет людей из platform team так что вряд ли вы можете узнать точно, почему сделали что-то другое вместо этого
Старый 05.09.2017, 11:04   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Вероятно, был уже готовый сценарий где надо использовать insert_recordset с Query но не было для update и delete.
Да, именно так и происходит планирование функционала в МС. К сожалению.
И не только бизнес-логики, но и платформенного. К сожалению.

Впрочем, обсуждение уже было
Оver-engineering - "зачем так сложно?"
__________________
полезное на axForum, github, vk, coub.
Старый 12.09.2021, 19:23   #11  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
У кого-нибудь получалось использовать в качестве выбираемых полей TableId ?
Для массовой вставки записей в таблицу с полями типа RefTableId, RefRecId.
__________________
Дмитрий
Старый 13.09.2021, 08:08   #12  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
362 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Можно, например, добавить в джойн c нужной табличкой SQLDictionary.
__________________
Sergey Nefedov
Старый 13.09.2021, 19:43   #13  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Сегодня полдня потратил из-за ошибки, подобной тем что упоминаются в ссылках :
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 тоже отработал без ошибки !! Что это блин за баг такой.
__________________
Дмитрий
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Kashperuk Ivan: Development tutorial link: Extending the Warehouse management functionality after application seal Blog bot DAX Blogs 0 16.04.2017 02:31
Kashperuk Ivan: Development tutorial: SysExtension framework with SysExtensionIAttribute and an Instantiation strategy Blog bot DAX Blogs 0 01.04.2017 02:17
Kashperuk Ivan: Development tutorial: Platform improvements for handling X++ exceptions the right way Blog bot DAX Blogs 0 30.03.2017 14:11
Kashperuk Ivan: Development tutorial: SysExtension framework in factory methods where the constructor requires one or more arguments Blog bot DAX Blogs 4 19.03.2017 23:56
Kashperuk Ivan: Development tutorial: Extensible base enumerations in Microsoft Dynamics AX 7 Blog bot DAX Blogs 0 27.09.2016 00:19
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:51.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.