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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.06.2015, 11:14   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Поррассуждаем? Как лучше работать с парой связанных значений в классах? (например, nullable)
Сразу скажу, я уже реализовал "как проще".
Но хотелось бы поррасуждать - вдруг есть какое-то более изящное решение?

И давайте для определенности будем говорить о:
1. ax2009 и ax2012.
2. о какой-нибудь обработке runBaseBatch - чтобы и у пользователя спрашивать, и между клиентом-сервером значение передавать, и сериализация была, и нужно было бы хранить в базе


Итак, задача: при определенном условии, у пользователя надо спросить значение чего-то. все значения имеют смысл. Но если условие не выполняется, то значений нет.

Примеры:
  • если для записи считают checksum, то поле checksum хранит контрольную сумму (любое значение имеет смысл)
  • если для данного клиента включен контроль кредитного лимита, то спросить и хранить этот кредитный лимит
  • для данной поставки нужен контроль даты поставки, то спросить и хранить дату доставки. при этом не введенное значение (datenull()) имеет смысл. Например, контроль включен, у клиента спросили, но ему не важно.
  • если по договору у клиента надо спросить подтверждение, то хранить Да/Нет, введенное пользователем.
  • работать с традиционным null-значением из внешней неаксаптовской базы
  • и т.п.

другими словами, в алгоритмах используется пара значений - tuple(есть ли значение, значение)

Задача сводится к "работа с nullable значениями"
с точки зрения программирования, очень похоже на работу с классом.
X++:
myClass = new MyClass();
if(myClass)
{
   myValue = myClass.parmMyValue();
   // делаем что-то со значением
}
else
{
   // класс не создался, нет значений
}
Думаю, что формулировка понятна.

===================================
Какие манипуляции хотелось бы делать с подобными значениями в Аксапте:
  1. хранить в базе
  2. передавать как параметр метода
  3. спрашивать значения у пользователя на формах и в программных диалогах
  4. передавать между клиентом и сервером (pack/unpack)
  5. сериализация = записывать/считывать подобные значения во внешние хранилища (XML, текстовый файл и т.п.)
  6. что-то еще?

==================================
Какие варианты реализации есть, на мой взгляд:
  1. выделить одно из значений как null. например, использовать не перечисление NoYes, а перечисление из 3х значений - NoYesNull
  2. объявлять/хранить как два независимые поля (две независимые переменные)
  3. объявлять как контейнер
  4. создать класс (что-то вроде tuple)
  5. временная таблица?
  6. что-то еще?

может что добавите пока буду создавать следующее сообщение с плюсами и минусами вариантов реализации.

заранее спасибо за конструктивное обсуждение.

Последний раз редактировалось mazzy; 10.06.2015 в 11:17.
Теги
null, nullable, tuple, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Универсальный изменятель значений полей wojzeh DAX: Программирование 17 26.09.2013 17:47
Как лучше хранить ссылки на записи - (RefTableId, Company, RefRecId) mazzy DAX: Программирование 41 08.07.2011 13:18
Как правильно хранить статичный набор начальных данных в классах? mazzy DAX: Программирование 58 14.04.2011 12:10
Последовательная замена множества уникальных значений на другие без возникновения дубликатов gl00mie DAX: Программирование 23 24.11.2010 15:05
Проверки заполненных значений в связанных таблицах. miklenew DAX: База знаний и проекты 11 25.12.2007 14:40

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

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

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