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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.04.2011, 15:41   #21  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
============================
В С++ я бы написал что-то вроде
struct { int64 refTable; int refField } myStruct;
set<myStruct> myStructSet = ( {Table1, Field1}, {Table2, Field2} );
и получил бы одновременно и контроль типов, и легкость инициализации.

========================
извините что может не в тему но просто для расширения общего познания написал как бы выглядел этот код на ABAP.
============================
TYPE: BEGIN OF myStruct,
table TYPE integer64,
field TYPE integer,
END OF myStruct.

TYPE: BEGIN OF myStructComlex,
key TYPE myStruct,
value TYPE myStruct,
END OF myStructComlex.

TYPE myStructComlexTab TYPE HASH TABLE myStructComlex WITH UNIQUAE KEY key.
============================
Старый 10.04.2011, 16:11   #22  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от konopello Посмотреть сообщение
извините что может не в тему
не в тему.
и вы не написали как будет выглядеть добавление нескольких значений в эту хэш-таблицу.

если уж речь идет о таблицах, то fed предложил более изящный способ - создать структуру в АОТ. и дальше делать несколько insert'ов. и кода меньше, и проверок больше.

а в аксапте прямой аналог вашего кода - map (вариант я не выписывал с способы из-за явно избыточного key)
X++:
myMap = new(Types::string, Types::class);
myMy.add("someKey1", new myPair(table1, field1);
myMy.add("someKey2", new myPair(table2, field2);
чтобы не геммороится с key в аксапте есть класс set. и варианты 2.1, 2.2, 2.3 подразумевали работу именно с этим классом set.

но все равно кода получается слишком много по сравнению с
set<myStruct> myStructSet = ( {Table1, Field1}, {Table2, Field2} );
__________________
полезное на axForum, github, vk, coub.
Старый 10.04.2011, 17:31   #23  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
не в тему.
и вы не написали как будет выглядеть добавление нескольких значений в эту хэш-таблицу.
А будет выглядеть так
================
DATA:
lt_myStructComlexTab TYPE myStructComlexTab,
ls_myStructComlexTab LIKE LINE OF lt_myStructComlexTab.

CLEAR ls_myStructComlexTab.
ls_myStructComlexTab-key-table = 'TABLE1'.
ls_myStructComlexTab-key-field = 'FIELD1'.
ls_myStructComlexTab-value-table = 'TABLE2'.
ls_myStructComlexTab-value-field = 'FIELD2'.
INSERT ls_myStructComlexTab INTO TABLE lt_myStructComlexTab.
================

не совсем понял что значит гемороится с ключами, ядро само контролирует ключ.
если вам это не надо то можно тип таблицы изменить на простую.
================
TYPE myStructComlexTab TYPE STANDARD TABLE myStructComlex.
================
это аналог SET.

извините за за СПАМ.
Старый 10.04.2011, 18:46   #24  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от konopello Посмотреть сообщение
не совсем понял что значит гемороится с ключами, ядро само контролирует ключ.
?!

а! у вас структура хранится два раза: и в ключе, и в значении (value)
Цитата:
Сообщение от konopello Посмотреть сообщение
key TYPE myStruct,
value TYPE myStruct,
хорошо, что есть аналог set.

давайте все-таки вернемся к теме.
итак - аксапта.
контейнеры - статично, просто, без контроля, очень затратно по памяти.
класс-классов - полный контроль, но писать блин много. хотя, гуру утверждают, что окупается.
(временная) таблица - писать тоже много. но зато хоть какой-то контроль типов.
__________________
полезное на axForum, github, vk, coub.
Старый 10.04.2011, 19:45   #25  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
давайте все-таки вернемся к теме.
А можно уточнить? Что все-таки нужно? Хранить некие константные значения в коде (аналогично моему посту выше) и впоследствии на основе их заполнять некие данные или вести работу с набором переменных данных (например, разноска в ГК и классы LedgerVoucherList, LedgerVoucherTransList).
А то создание всяких коллекций, классов-оберток и т.д. актуально больше не для столько для начальных константных данных, сколько для переменных данных (разноска ГК)
__________________
Возможно сделать все. Вопрос времени
Старый 10.04.2011, 19:57   #26  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А можно уточнить? Что все-таки нужно? Хранить некие константные значения в коде (аналогично моему посту выше) и впоследствии на основе их заполнять некие данные или вести работу с набором переменных данных (например, разноска в ГК и классы LedgerVoucherList, LedgerVoucherTransList).
изначальная тема "хранить статичный набор начальных данных в классах"

я не очень понимаю в чем выбор между твоими вариантами.
да, нужно предоставить программисту (!) удобный механизм для заполнения набора начальных статичных константных данных. чтобы в дальнейшем что-то делать с этими данными.

причем, заполнение набора может проводится как в одном методе, так и в нескольких. например, часть добавляется (или убирается) в методах-потомках.
__________________
полезное на axForum, github, vk, coub.
Старый 10.04.2011, 20:08   #27  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
аналогично моему посту выше)
ага, спасибо.

вот суть:
вариант "хранения в коде" сводится к варианту fed - создать таблицу и инициализировать ее в коде.
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 529
Размер:	32.7 Кб
ID:	6737

вариант хранения в ресурсах не рассматривался. спасибо.
Нажмите на изображение для увеличения
Название: 2.PNG
Просмотров: 529
Размер:	68.7 Кб
ID:	6738

итак - аксапта. есть следующие способы хранения статичного набора начальных данных.
  • контейнеры - статично, просто, без контроля, очень затратно по памяти.
  • класс-классов - полный контроль, но писать блин много. хотя, гуру утверждают, что окупается.
  • (временная) таблица - писать тоже много. но зато хоть какой-то контроль типов. пример инициализации
  • хранить файл с наперед заданной структурой (например, xml) в ресурсах
__________________
полезное на axForum, github, vk, coub.
Старый 10.04.2011, 21:48   #28  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
я не очень понимаю в чем выбор между твоими вариантами.
Поясню.
1. Задача создания закладки "Номерные серии" в параметрах модуля. Пользователь ничего не вводит, однако ему выводится некая таблица (грид) значений, которые на самом деле хранятся в коде (контейнер контейнеров, классы, временная таблица - неважно). Важно, что при изменении соответствующего куска кода - данные в этой таблице должны меняться.

В этом случае мне нравится (в порядке убывания):
- вариант таблицы (лучше постоянной - как с номерными сериями)
- вариант XML (в памяти)
- вариант контейнера контейнеров
не нравится вариант класса классов или Set (Types::Class) - т.к. слишком много кода

2. Задача создания разноски в ГК. Тут нет начальных константных данных, однако по входящим данным генерируется некоторый набор записей. Генерируемый набор может быть представлен как набор экземпляров классов (Set Types::Class). Важно - что нам не нужно хранить в классах параметры, т.е. многие параметры входящие

В этом случае мне нравится (в порядке убывания):
- вариант класса классов (на худой конец Set Types::Class)
- вариант таблицы (лучше временной, как промежуточной, хотя может даже лучше и постоянной - т.к. все равно откат произойдет, если не закроется транзакция)
не нравится вариант XML (сложность реализации) и контейнера контейнеров / Map / Set / List (нечитабельный код)

PS. Упс... ответ уже получен - пункт 1. Но все равно - мнение свое выскажу
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 10.04.2011 в 21:52.
Старый 10.04.2011, 22:22   #29  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Не... это плохой пример инициализации. Создается ощущение, что нужно писать много кода в куче в одном месте.

Вот хороший пример:
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 498
Размер:	34.9 Кб
ID:	6739
Нажмите на изображение для увеличения
Название: Снимок2.PNG
Просмотров: 441
Размер:	42.0 Кб
ID:	6740

Каждый наследник заполняет только "свою" часть настроек.

Пример из жизни. Мы оказываем складские услуги сторонним организациям. Мы используем АХ. Каждый клиент присылает документ об отгрузке / приемке в электронном виде и каждый в своем формате. Задача хранить параметры импорта в разрезе форматов данных (на самом деле еще и в разрезе клиента). При этом параметры у каждого формата могут быть разные (типы разные) и количество их также может быть разным.

Создаем механизм, аналогичный номерным сериям. Создаем наследника на каждый тип формата данных. Т.о. в коде у нас создаются записи, каждая из которой отвечает за свой параметр. Какие-то параметры (к примеру, каталог импорта / экспорта) у нас будут общие для нескольких форматов данных => соответствующие строки из метода loadModule можно перенести в родительский класс.

Данное решение не учитывает AIF или какие- еще технологии и я не собираюсь обсуждать в этой ветке плюсы и минусы решения поставленной задачи именно такой реализацией. Однако, я хотел привести пример использования на практике идеи закладки "Номерные серии" как пример заполнения таблицы данными из кода.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 10.04.2011 в 22:26.
Старый 11.04.2011, 00:41   #30  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
класс-классов - полный контроль, но писать блин много. хотя, гуру утверждают, что окупается.
я за этот вариант если что то серьезное делать, ну или за временную таблицу. По моему контейнер не очень удобен в использовании и дебаге + накладные расходы.
Старый 12.04.2011, 12:03   #31  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Как мне кажется, вопрос о способе записи статических данных "вообще" в отрыве от способа использования этих самых статических данных - не имеет смысла.

Ну, например, разработчики Axapta может и хотели бы хранить данные о номерных сериях в виде контейнеров, но ведь использоваться-то они будут как записи таблицы. Так зачем же вводить промежуточные структуры, если в конце концов все-равно придется создавать записи? Ну, так сразу и создаем.

Т.е. способ дальнейшего использования этих самых статических данных собственно и определяет способ их задания. Все остальные соображения тут же отходят на второй план.

Кроме того, меня несколько удивляет акцентирование внимание на контроле типов данных. Это ты сам себе не доверяешь? Ну, в худшем случае, получишь ты ошибку не на этапе компиляции, а на этапе исполнения. Или написанный код предварительно не тестируется? А почему, собственно, надо контролировать только тип и не надо контролировать значение? Ведь тоже возможна ошибка!

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

я говорил о наборе пар <таблица, поле> для редактирования query.
я предполагал что-то сугубо внутренне-программистское. такое что не дается пользователю.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это ты сам себе не доверяешь?
и сам себе не доверяю - особенно если буду добавлять/изменять что-нибудь через несколько месяцев.
и не доверяю другим программистам - которые будут добавлять/изменять что-нибудь после меня через некоторое время.

а главное - хочу иметь штатный механизм с контролем, который использовали бы другие, а я при добавлении/изменении не запорол бы их работу.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Ну, в худшем случае, получишь ты ошибку не на этапе компиляции, а на этапе исполнения.
Хе... Это ж большая разница.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Или написанный код предварительно не тестируется? А почему, собственно, надо контролировать только тип и не надо контролировать значение? Ведь тоже возможна ошибка!
А мне нравится эта вывернутая логика:
Конечно же надо контролировать значение - "скажи как".

И мне нравится этот переход на личности:
"раз у тебя код не тестируется, поэтому зачем тебе контроль начальных данных?"

==============
В контейнерах нет контроля ни типа, ни значения.
Я спрашивал - есть ли механизм который контролирует хотя бы тип?
Мне ответили - только создавать свои классы (но достаточно трудоемко)
Мало того, контейнер уж очень неповоротливая структура (хоть и легкая в использовании)

Но в стандартном коде повсеместно используются контейнеры.
А какого-то промежуточного/смешанного способа нет - либо контейнеры, либо классы

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Т.е. контроль типов не то чтобы лишнее требование, но, скорее, из разряда приятных, но не обязательных бонусов. Есть - хорошо, нет - не очень-то и нужно...
__________________
полезное на axForum, github, vk, coub.
Старый 12.04.2011, 12:57   #33  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Я думаю важнее иметь контроль типов не в смысле контроля атомарных типов данных, а в смысле контроля самой структуры данных. Поясню. Например, если форматом хранения является контейнер сложной структуры (контейнер контейнеров), то очень просто можно запутаться в количестве параметров и порядке их включения во вложенные контейнеры. Здесь контроль типов данных нужен для того чтобы помочь разработчику сопоставить значение соответствующему параметру, а не для того чтобы предотвратить потерю точности при преоброзовании real в int.
За это сообщение автора поблагодарили: mazzy (2).
Старый 12.04.2011, 13:20   #34  
mayk is offline
mayk
Участник
Аватар для mayk
 
43 / 65 (3) ++++
Регистрация: 07.03.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
Хе... Это ж большая разница.
Не смертельная. Учитывая удобство, можно и потерпеть. Особенно если не смешивать record'ы и int'ы в одном контейнере.

по теме: зависит от.
контейнеры,
Код:
container fields;;
fields = [[#CustAccount, custTable.custAccount],
[#CustId, custTable.accountNum],
etc];
for(i=1;i<=conlen(fields);++i){
 [bookmark, value]=conpeek(fields,i);
 excelDocument.insert(bookmark, value, #worksheet);
иногда hook'и (типа Runbase.dialogPostInit)
Код:
void initQuery(){;
   query = new Query(querystr(aotquery));
   postInitQuery(); //наследники могут делать грязную работу здесь, не перекрывая initQuery()
Особенно если предполагается что вызов super'а накладен:
Код:
void initQueries(){;
   for(i=1;i<N;++i)
   query = new Query(querystr(aotquery));
   this.postInitQuery(query); 
   this.addQuery(query);//здесь хук для инициализации легче сделать чем super() в DerivedClass.initQueries()
лучше всего вместе с parm'ами

Код:
myClass = myClass::construct(/**/);
myClass.parmQuery().dataSourceTable(xx).range(...);
List'ы и struct'ы на этапе компиляции всё равно не поймают ошибку типов. И вроде не на ембеддеде клиент запускается, чтобы сильно о памяти беспокоиться.

Последний раз редактировалось mayk; 12.04.2011 в 13:22.
За это сообщение автора поблагодарили: mazzy (2).
Старый 12.04.2011, 14:41   #35  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
я говорил о наборе пар <таблица, поле> для редактирования query.
я предполагал что-то сугубо внутренне-программистское. такое что не дается пользователю.
Как "стандартно" задается пара <таблица, поле> для будущего Range? Очевидно, через функции tablenum(), fieldnum(). И вот КАК здесь можно ошибиться? Приведи пример.

Это очень показательный пример того, что без знания цели, выбор "идеального" средства - бессмысленное занятие

Цитата:
Сообщение от mazzy Посмотреть сообщение
А мне нравится эта вывернутая логика:
Конечно же надо контролировать значение - "скажи как".
Ну, это просто. Если известно, что речь идет о паре: таблица-поле, то, очевидно, можно проконтролировать корректность Id-таблица и корректность Id-поля. Только вот, не кажется ли, ну, мягко говоря, странным подобное занятие? Разве tablenum() и filednum() в принципе могут дать не корректное значение?

Цитата:
Сообщение от mazzy Посмотреть сообщение
И мне нравится этот переход на личности:
"раз у тебя код не тестируется, поэтому зачем тебе контроль начальных данных?"
Это не "переход на личности". Это доведение до абсурда, чтобы показать не корректность исходной постановки задачи.

Ведь насколько я понимаю, Вы не ставите задачу проверки значения не потому, что это невозможно "в принципе". Как раз-таки очень даже возможно. Просто Вы понимаете полную бессмысленность этой задачи. Однако контроль типов Вам не кажется бессмысленным. Почему, собственно? Только потому, что это относительно просто?
Старый 12.04.2011, 17:58   #36  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Как "стандартно" задается пара <таблица, поле> для будущего Range? Очевидно, через функции tablenum(), fieldnum(). И вот КАК здесь можно ошибиться? Приведи пример.
легко. здесь выкладывают проекты.
проекты могут быть импортированы в среду, где таких таблиц нет.

другой вариант: дев и продакт системы.
в дев таблицы и поля есть, а в продакт еще не перенесли.

или вот так: Несколько AOS: синхронность изменения объектов

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это очень показательный пример того, что без знания цели, выбор "идеального" средства - бессмысленное занятие
Как скажете

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Ведь насколько я понимаю, Вы не ставите задачу проверки значения не потому, что это невозможно "в принципе". Как раз-таки очень даже возможно. Просто Вы понимаете полную бессмысленность этой задачи. Однако контроль типов Вам не кажется бессмысленным. Почему, собственно? Только потому, что это относительно просто?
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 12.04.2011 в 18:16. Причина: добавил ссылку на соседнюю ветку.
Старый 12.04.2011, 18:17   #37  
Evgeniy2020 is offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Регистрация: 10.04.2007
Адрес: Москва, САО, СЗАО
Я бы может генерил бы на основе таблиц и полей, или классов (метаданных)
XML формы для ввода, что то вроде ASP.net или веб сервис,
и не программист мог бы вводить данные с привязкой к метаданным (не по id а возможно символьно)

а потом умный парсер, преобразовывал бы стрктуру XML и заполнял бы те данные для которых есть таблицы поля классы, или настроил бы генерить ошибку если не вся структура подгружена, или же частично загружать не выкидывая ошибок.

можно было бы сделать веб сервис поставщик данных, на основе того что вводят не программисты. в веб поля которые генерятся на основе дев метаданных.

Последний раз редактировалось Evgeniy2020; 12.04.2011 в 18:25.
Старый 12.04.2011, 19:41   #38  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
легко. здесь выкладывают проекты.
проекты могут быть импортированы в среду, где таких таблиц нет.

другой вариант: дев и продакт системы.
в дев таблицы и поля есть, а в продакт еще не перенесли.

или вот так: Несколько AOS: синхронность изменения объектов
Во всех описанных случаях при использовании tablenum() и fieldnum() будет ошибка на этапе компиляции. Импорт не получится. Нет причин в дополнительном контроле не только значений, но и типов данных.

Можно привести еще варианты, когда при вводе констант (статических данных) действительно необходим дополнительный контроль типов этих самых констант?
Старый 12.04.2011, 20:22   #39  
Ievgenii is offline
Ievgenii
Участник
Аватар для Ievgenii
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
111 / 113 (4) +++++
Регистрация: 21.09.2008
Адрес: Copenhagen, Denmark
К слову

Цитата:
Сообщение от Владимир Максимов
Как "стандартно" задается пара <таблица, поле> для будущего Range? Очевидно, через функции tablenum(), fieldnum(). И вот КАК здесь можно ошибиться? Приведи пример.


В Ax2012 как MFP уже рассказывал все ID выделяються отдельной инсталяцией. То есть tableNum(InventTable) != tableNum(InventTable) на разных машинах в числовых значениях. Это я к тому что в мета данных вне Ах хранить числовые значений не стоит.
__________________
Thx,
Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/
Старый 12.04.2011, 20:53   #40  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Во всех описанных случаях при использовании tablenum() и fieldnum() будет ошибка на этапе компиляции. Импорт не получится. Нет причин в дополнительном контроле не только значений, но и типов данных.
вы так уперлись в функции tablenum и fieldnum.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Можно привести еще варианты, когда при вводе констант (статических данных) действительно необходим дополнительный контроль типов этих самых констант?
конечно.
код цвета, тег html, шрифт, размеры шрифта, GUID, MAC-адрес, ip-адрес, адрес сайта в интернете, параметры границы, размеры окон по умолчанию, avi-файл отображения в progressBar, фигуры для тетриса, список начальных вопросов-ответов для Элизы, а также любые другие константы, например из аксаптовских макросов.

тысячи их.

Цитата:
Сообщение от mazzy Посмотреть сообщение
Дисклаймер 2:
Специально возьму пример не из области учета, а из области программирования низкого уровня (чтобы не начинать обсуждение в стиле "сделай по-другому", "используй другой функционал").
__________________
полезное на axForum, github, vk, coub.
Теги
как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Загрузка начальных данных MIVura DAX: Прочие вопросы 1 31.03.2009 14:52
Набор данных на лету HorrR DAX: Программирование 15 26.09.2008 15:21
Прогноз роста базы данных и выбор топологии системы, Как правильно расчитать возможный рост sergeypp DAX: Администрирование 0 05.12.2006 16:55
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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