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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.08.2018, 10:48   #1  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Lightbulb Получения значения отредактированных данных
Доброго времени суток, мой вопрос в следующем:
Мне необходимо получить значения из полей, сразу после редактирования записи, чтобы в дальнейшем отправлять эти данные через JSON. Как это может быть реализовано?
Заранее благодарен!
Старый 27.08.2018, 11:14   #2  
Pandasama is offline
Pandasama
Участник
 
456 / 134 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Вопрос как-то криво составлен
1) получить данные из полей: взять значение из <cursor>.<Field>
2) сразу после редактирование - перекрыть на таблице метод .update(), например
Старый 27.08.2018, 11:43   #3  
SCP_00 is offline
SCP_00
Участник
 
19 / 19 (1) ++
Регистрация: 24.04.2018
До сохранения в таблице данные хранятся в датасоурсе.
Старый 27.08.2018, 13:18   #4  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
К сожалению я новичок в этом, а это единственная задача, которую мне необходимо выполнить? Не могли бы вы поконкретнее, с примером объяснить как это работает?
Старый 27.08.2018, 14:04   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,689 / 1192 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Fact Посмотреть сообщение
К сожалению я новичок в этом, а это единственная задача, которую мне необходимо выполнить? Не могли бы вы поконкретнее, с примером объяснить как это работает?
Вопрос философский

Физически, данные хранятся в базе MS SQL. Но изменения в них вносят на стороне клиента. Затем эти изменения сохраняются. Т.е. записываются в MS SQL.

Это "в общем". А конкретно, там целый каскад разных прослоек между MS SQL и тем, что видит клиент. Соответственно, и пример будет зависеть от того, из какой именно "прослойки" Вы берете данные для формирования своего сообщения.

Как понимаете, способов "вагон и маленькая тележка"

Вероятно, Вам проще будет просто явно выполнять сохранение перед отправкой, чтобы не заморачиваться со всеми этими тонкостями, особенно если задача разовая.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 27.08.2018, 14:17   #6  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Есть таблица SMAServiceOrderTable. В ней есть множество методов, я заострил свое внимание на методах, которые скопировал в отдельный класс:

На изменение, как раз нужно реализовать:
X++:
    [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Updated)]
    public static void SMAServiceOrderTable_onUpdated(Common sender, DataEventArgs e)
На создание, свою задумку уже реализовал:
X++:
    [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::FinalInsertValidation)]
    public static void SMAServiceOrderTable_onFinalInsertValidation(Common sender, DataEventArgs e)
Теперь подробнее рассмотрим метод на обновление:
X++:
    [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Updated)]
    public static void SMAServiceOrderTable_onUpdated(Common sender, DataEventArgs e)
    {
        GetData request = new GetData();
        request.CustomerID("123456789");
        request.Test1("This is test param nubmer one. My system of JSON send and recieve is work");
        str dataJson = FormJsonSerializer::serializeClass(request);
        System.Uri uri = new System.Uri("https://prod-12.westeurope.logic.azure.com/workflows/b68sd3asdfsdgf41edb6d97227da7042fd/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=tCLVeUdDrvHQYS-65dxjTODKG672K7bvFBK-9v3pmSI");
        System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
        System.Net.Http.StringContent queryString = new System.Net.Http.StringContent(dataJson);
        System.Net.Http.HttpResponseMessage postResult = httpClient.PostAsync(uri, queryString).Result;

        postResult.EnsureSuccessStatusCode();
    }
И класс GetData, существующий для последующий сериализации:

X++:
[DataContractAttribute]
class GetData
{
    str customerID;
    str test_param1;

    [DataMemberAttribute]
    public str CustomerID(str _customerID = customerID)
    {
        customerID = _customerID;
        return customerID; 
    }

    [DataMemberAttribute]
    public str Test1(str _test_param1 = test_param1)
    {
        test_param1 = _test_param1;
        return test_param1;
    }

}

В чем собственно цель: в методе на обновление нужно вместо строк которые я сам вписал, передать значения полей таблицы после редактирования. Я

Надеюсь понятно объяснил, спасибо!
Старый 27.08.2018, 13:19   #7  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от SCP_00 Посмотреть сообщение
До сохранения в таблице данные хранятся в датасоурсе.
Можете дать пример кода, как я могу это получить?
Старый 27.08.2018, 13:44   #8  
Pandasama is offline
Pandasama
Участник
 
456 / 134 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Что-то сезон новичков какой-то.
Непонятно, если "это единственная задача" - то зачем вы вообще с Ax и программированием связываетесь?
Старый 27.08.2018, 13:54   #9  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от Pandasama Посмотреть сообщение
Что-то сезон новичков какой-то.
Непонятно, если "это единственная задача" - то зачем вы вообще с Ax и программированием связываетесь?
С программированием я знаком, а вот с Ax не очень. Разбираюсь..
Так вы можете растолковать немного?
Старый 27.08.2018, 14:44   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,689 / 1192 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Входной параметр Common физически - это и есть запись таблицы с уже измененными значениями полей. Вам надо только уточнить, о какой именно таблице идет речь. Т.е. что за таблица была передана в Common.

Примерно так

X++:
[DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Updated)]
public static void SMAServiceOrderTable_onUpdated(Common sender, DataEventArgs e)
{

SMAServiceOrderTable  smaServiceOrderTable = sender as SMAServiceOrderTable;


GetData request = new GetData();
request.CustomerID(smaServiceOrderTable.CustomerID);

....

}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Fact (1).
Старый 27.08.2018, 15:02   #11  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Входной параметр Common физически - это и есть запись таблицы с уже измененными значениями полей. Вам надо только уточнить, о какой именно таблице идет речь. Т.е. что за таблица была передана в Common.

Примерно так

X++:
[DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Updated)]
public static void SMAServiceOrderTable_onUpdated(Common sender, DataEventArgs e)
{

SMAServiceOrderTable  smaServiceOrderTable = sender as SMAServiceOrderTable;


GetData request = new GetData();
request.CustomerID(smaServiceOrderTable.CustomerID);

....

}
Благодарю, это работает!
Старый 27.08.2018, 16:04   #12  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Входной параметр Common физически - это и есть запись таблицы с уже измененными значениями полей. Вам надо только уточнить, о какой именно таблице идет речь. Т.е. что за таблица была передана в Common.

Примерно так

X++:
[DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Updated)]
public static void SMAServiceOrderTable_onUpdated(Common sender, DataEventArgs e)
{

SMAServiceOrderTable  smaServiceOrderTable = sender as SMAServiceOrderTable;


GetData request = new GetData();
request.CustomerID(smaServiceOrderTable.CustomerID);

....

}
Еще небольшой вопрос, введя в конце orig(), получу значение до редактирования? или то же самое?
Старый 27.08.2018, 16:23   #13  
SCP_00 is offline
SCP_00
Участник
 
19 / 19 (1) ++
Регистрация: 24.04.2018
Цитата:
Сообщение от Fact Посмотреть сообщение
Еще небольшой вопрос, введя в конце orig(), получу значение до редактирования? или то же самое?
до
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
TTSBegin/TTSAbort. Насколько безопасен для базы данных этот код? CHESER85 DAX: Программирование 4 14.05.2014 17:48
Недоступность источника данных формы в display/edit-методах таблицы - баг или фича с глубоким смыслом? TasmanianDevil DAX: Программирование 10 03.08.2012 15:00
Распределенная база данных на основе View Владимир Максимов DAX: Программирование 27 04.09.2007 13:21
Расширенный тип данных и FormHelp Владимир Максимов DAX: Программирование 2 04.02.2004 17:02
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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