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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.04.2021, 14:01   #1  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
DAX2009 сохранение значения всех полей таб.переменной вовне
Привет.
Кто-нибудь может поделится методом позволяющим сохранить все поля табличной переменной куда-нибудь вовне AX (например в файл в виде xml или еще как, в котором будет "имя поля" - "значение").

Задача.
Понадобилось проанализировать список изменяемых полей до и после выполнения блока команд.
Т.е. нужно куда то сохранить список всех полей таб.переменной ДО выполнения блока команд, а потом сохранить список всех полей этой же переменной ПОСЛЕ выполнения блока команд.
Для ручного анализа и поиска какие поля поменялись.
P.S.
Я подумал может кто-нибудь задавался такой задачей, и реализовал такой удобный метод

Последний раз редактировалось oleggy; 30.04.2021 в 14:10.
Старый 30.04.2021, 14:10   #2  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Не пробовали журналирование включить на таблице
Там будет вам и "кто" и "когда" и "что на что" поменял.
Старый 30.04.2021, 14:26   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
У табличной переменной есть метод xml()

Если не устроит стандартная реализация можете сами перебрать в цикле все поля таблицы и сгенерировать строку в нужном вам формате.
Пример как это сделать можно посмотреть в методах buf2buf() или buf2con() класса Global
Старый 01.05.2021, 11:17   #4  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от oleggy Посмотреть сообщение
Для ручного анализа и поиска какие поля поменялись.
Файл xml из 200 полей "до" и "после" очень увлекательно сравнивать вручную
Быстрее свою функцию написать, которая будет перебирать и сравнивать поля по списку из DictTable.
__________________
Дмитрий
Старый 01.05.2021, 11:56   #5  
Pandasama is offline
Pandasama
Участник
 
457 / 137 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Цитата:
Сообщение от Damn Посмотреть сообщение
Файл xml из 200 полей "до" и "после" очень увлекательно сравнивать вручную
Да любой сравнивалкой текста, типа notepad++
Старый 05.05.2021, 12:18   #6  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от smailik Посмотреть сообщение
Не пробовали журналирование включить на таблице
Там будет вам и "кто" и "когда" и "что на что" поменял.
Этот вариант походит только если момент ДО - перед всеми изменениями а момент ПОСЛЕ - перед выполнением update().
В моем случае моменты ДО / ПОСЛЕ происходят в где то середине блоков команд до выполнения update().

Последний раз редактировалось oleggy; 05.05.2021 в 12:20.
Старый 05.05.2021, 14:10   #7  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от oleggy Посмотреть сообщение
Этот вариант походит только если момент ДО - перед всеми изменениями а момент ПОСЛЕ - перед выполнением update().
В моем случае моменты ДО / ПОСЛЕ происходят в где то середине блоков команд до выполнения update().
... и, соответственно, ttscommit, так?

А зачем это нужно, позвольте поинтересоваться?

DataBaseLog - отражает реальные изменения в БД. А вот что должен отразить Ваш метод - я как-то пока даже представить себе не могу...
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 05.05.2021 в 14:14.
Старый 05.05.2021, 17:49   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от oleggy Посмотреть сообщение
В моем случае моменты ДО / ПОСЛЕ происходят в где то середине блоков команд до выполнения update().
Если речь идет о процессе изменения, то можно смотреть в отладчике (debugger). Все изменения будут выделяться красным цветом. Т.е. по шагам выполняешь процесс в отладчике и смотришь, какие поля меняют цвет

Выгрузка в файл - сомнительный способ анализа в этом случае. Неудобно слишком
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 19.05.2021, 16:21   #9  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
может пригодиться
https://alexvoy.blogspot.com/2013/09...ame-table.html
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: oleggy (1).
Старый 20.05.2021, 07:47   #10  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от RVS Посмотреть сообщение
DataBaseLog - отражает реальные изменения в БД. А вот что должен отразить Ваш метод - я как-то пока даже представить себе не могу...
В той ситуации мне нужно было понять какие поля меняются после выполнения блока команд. Не доходя до update.
Т.к. на update генерировалась ошибка, соответственно журнал БД тут не помог бы, ничего не сохраняется.
Нужно было найти какое значение в каком поле причина ошибки.

Последний раз редактировалось oleggy; 20.05.2021 в 09:01.
Старый 20.05.2021, 07:52   #11  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Все изменения будут выделяться красным цветом. Т.е. по шагам выполняешь процесс в отладчике и смотришь, какие поля меняют цвет
Выгрузка в файл - сомнительный способ анализа в этом случае. Неудобно слишком
Если таблица слишком большая то можно поле пропустить прокручевая список полей вверх-вниз ища красное.
В процессе дебага удобно выгружать как раз куда то вне аксапты, что бы потом этот файл открыть. Аксапта же блокируется на момент дебага.
А так вписал в двух местах в код сохранить значения таблицы а потом эти два файла открыть в том же Notepad и посмотреть..
Это же для оперативных случаев, что бы по быстрому понять причину.
Конечно если засесть плотно то можно и ручным способом все найти. Только это время.
Старый 21.05.2021, 22:10   #12  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
X++:
XMLDocument::newXml(CompanyInfo::find().xml()).save(strFmt("C:\\Temp\\companyInfo%1.xml", timenow()));
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получение значения из поля диалога AX2009 syl DAX: Программирование 11 14.07.2015 18:14
Как изменить значения полей из кода? andriy_s DAX: Программирование 12 19.03.2010 23:37
Значения по умолчанию kvg6 DAX: Программирование 22 26.05.2006 15:45
пересчет полей на форме kitty DAX: Программирование 1 04.10.2005 12:50
очистка полей. простой вопрос Антон Солдатов DAX: Программирование 4 04.04.2003 10:28

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:59.