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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.04.2013, 13:32   #21  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Увеличьте значение макроса currentVersion - присвойте следующую версию. А то у вас отображается старая версия Query, сохраненная методом pack до того, как вы добавили Range.
И по тому полю, что стоит у табьлицы индексом, добавьте Range и сделайте его Hidden. Ну а вообще да, лучше создать Query в АОТ, чтобы наглядно можно было его редактировать.
Не знал, что увеличение значения в макросе даёт такие изменения.
Значение увеличил - появилось нужное мне поле - сотрудник(EmplTaBle.EmplId).

Цитата:
Сообщение от Ace of Database
И по тому полю, что стоит у табьлицы индексом, добавьте Range и сделайте его Hidden.
Вы имеете ввиду в методе initQuery добавить строку

X++:
   qbr = qbds.addRange(fieldnum(VendSpListJour, EmplId));
? Или что?
Старый 02.04.2013, 13:36   #22  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Добавить две строки
X++:
qbr = SysQuery::findOrCreateRange(qbds, fieldnum(VendSpListJour, EmplId));
qbr.status(RangeStatus::Hidden);
Старый 02.04.2013, 13:39   #23  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Добавил эти две строчки - пропало моё поле и снова появилось то, которое стоит индексом на таблице.

Значение в currentversion пробовал увеличивать - не помогло.
Старый 02.04.2013, 13:42   #24  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
А у вас что, поле EmplId есть в двух таблицах? Тогда без разницы, по какой таблице идет фильтрация. Попробуйте поиграться с конструктором Query в АОТ, как я написал.
Старый 02.04.2013, 13:44   #25  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
А у вас что, поле EmplId есть в двух таблицах? Тогда без разницы, по какой таблице идет фильтрация. Попробуйте поиграться с конструктором Query в АОТ, как я написал.
Нет, в одной оно есть.
Хорошо, спасибо, буду делать query.

Вот если оставить так

X++:
 qbr = qbds.addRange(fieldnum(VendSpListJour EmplId));
то работает, но в label пишется не то, что мне нужно, блин ))

Буду искать как их делать, чтобы был нужный запрос. Спасибо вам ещё раз.
Старый 02.04.2013, 13:45   #26  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от user_ax Посмотреть сообщение
Добавил эти две строчки - пропало моё поле и снова появилось то, которое стоит индексом на таблице.

Значение в currentversion пробовал увеличивать - не помогло.
А какое поле стоит индексом в таблице? Поведение Query такое, что когда вы прячете в Range одно индексное поле, Аксапта начинает отображать поле из следующего индекса. Надо по следующему полю тоже Range добавлять и делать его hidden. И так до тех пор, пока все индексные поля не кончатся, и Аксапта не перестанет их добавлять на форму.

Последний раз редактировалось Ace of Database; 02.04.2013 в 13:47.
Старый 02.04.2013, 13:47   #27  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
А какое поле стоит индексом в таблице?
InternalSP, код спецификации(гененрируется номерной серией).
Старый 02.04.2013, 13:49   #28  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
По этому полю тоже сделайте Range со статусом Hidden. И так до тех пор, пока все индексные поля не кончатся, и Аксапта не перестанет их добавлять на форму
Старый 02.04.2013, 13:52   #29  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
По этому полю тоже сделайте Range со статусом Hidden. И так до тех пор, пока все индексные поля не кончатся, и Аксапта не перестанет их добавлять на форму
Попробовал сделать так, как вы сказали, в итоге опять пустой Group.

Мне нужно, чтобы в label, где спецификация к договору было Сотрудник.

Старый 02.04.2013, 13:53   #30  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Сейчас код выглядит так

X++:
    qbds = query.addDataSource(tablenum(VendSpListJour));
 //  qbr = qbds.addRange(fieldnum(VendSpListJour, EmplId));
    qbr = SysQuery::findOrCreateRange(qbds, fieldnum(VendSpListJour, InternalSp));
    qbr.status(RangeStatus::Hidden);
    qbr = SysQuery::findOrCreateRange(qbds, fieldnum(VendSpListJour, EmplId));
    //qbr.status(RangeStatus::Hidden);
Старый 02.04.2013, 13:59   #31  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Попробуйте добавить строку
X++:
qbr.label("Сотрудник");
Старый 02.04.2013, 14:00   #32  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Попробуйте добавить строку
X++:
qbr.label("Сотрудник");
Не сработало.
Старый 02.04.2013, 14:08   #33  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
У себя попробовал в дизайнере Query метку у Range поменять - тоже не работает. Значит надо либо так и оставить, либо метку поля VendSpListJour.EmplId в таблице поменять.
Старый 02.04.2013, 14:12   #34  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
У себя попробовал в дизайнере Query метку у Range поменять - тоже не работает. Значит надо либо так и оставить, либо метку поля VendSpListJour.EmplId в таблице поменять.
Не совсем так, она работает, но не на этой форме, а на форме, которую вызывает prompt, там в поле "поле" Пишет Сотрудник.

Так оставить точно не получиться, консультант по головке не погладит.

Так метка ведь верно выводится, если её изменить, измениться только названия поля, а название самое Group останется таким же.
Я вот про это


А то может я неверно выразился
Старый 02.04.2013, 14:47   #35  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Я так понял, что эта метка - название таблицы, которая добавлена в источник.

Хотел добавить в источники ещё и таблицу EmplTable, чтобы отображалось нужное название, но выдаёт ошибку "недопустимый диапазон"(

X++:
 qbds = query.addDataSource(tablenum(EmplTable));
    qbds = query.addDataSource(tablenum(VendSpListJour));
    qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, EmplId));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable,AltNum));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, DEL_Alias));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, PartyId));
    qbr.status(RangeStatus::Hidden);
    qbr = qbds.addRange(fieldnum(VendSpListJour, EmplId));

    queryRun = new QueryRun(query);
Старый 02.04.2013, 14:48   #36  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
В этом случае могу предложить только хакерский метод. Запустите ваш класс. В открывшейся форме нажмите правой кнопкой мыши - настройки. Найдите группу, у которой надпись "Спецификация к договору". Запомните ее английское наименование - должно быть что-то наподобие Grp_5.
В методе dialog вашего класса после вызова super напишите код
X++:
dialog.form().design().control("Grp_5").userPromptText("Сотрудник");
Старый 02.04.2013, 14:50   #37  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
В этом случае могу предложить только хакерский метод. Запустите ваш класс. В открывшейся форме нажмите правой кнопкой мыши - настройки. Найдите группу, у которой надпись "Спецификация к договору". Запомните ее английское наименование - должно быть что-то наподобие Grp_5.
В методе dialog вашего класса после вызова super напишите код
X++:
dialog.form().design().control("Grp_5").userPromptText("Сотрудник");
Да, да, я тоже хотел так сделать, только тут получается заминочка, если в последствии будет дорабатываться эта форма, и будет добавлен ещё один group , то тогда название изменится у существующего. Но за неимением лучшего решения наверное сделаю так.
Старый 02.04.2013, 14:50   #38  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
перепишите ваш код так:
X++:
    qbds = query.addDataSource(tablenum(EmplTable));
    qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, EmplId));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable,AltNum));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, DEL_Alias));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, PartyId));
    qbr.status(RangeStatus::Hidden);
    qbds = qbds.addDataSource(tablenum(VendSpListJour));
    qbr = qbds.addRange(fieldnum(VendSpListJour, EmplId));
Старый 02.04.2013, 14:53   #39  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
это позволит избежать хакерские методы
Старый 02.04.2013, 14:59   #40  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Нет, вот так. Надо добиться того, чтобы в фильтрацию попало поле EmplTable.EmplId вместо поля VendSpListJour.EmplId. Чтобы у вас на группе полей вылезла метка таблицы EmplTable вместо таблицы VendSpListJour
X++:
    qbds = query.addDataSource(tablenum(EmplTable));
    qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, EmplId));
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable,AltNum));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, DEL_Alias));
    qbr.status(RangeStatus::Hidden);
        qbr = SysQuery::findOrCreateRange(qbds, fieldnum(EmplTable, PartyId));
    qbr.status(RangeStatus::Hidden);
    qbds = qbds.addDataSource(tablenum(VendSpListJour));
За это сообщение автора поблагодарили: user_ax (1).
Теги
runbasereport, диалог, динамическая форма, периодическая операция, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Универсальный изменятель значений полей wojzeh DAX: Программирование 17 26.09.2013 17:47
Последовательная замена множества уникальных значений на другие без возникновения дубликатов gl00mie DAX: Программирование 23 24.11.2010 15:05
Периодическая операция Приемка. Ошибка в спецификации. Объясните RSJustInTime DAX: Функционал 6 02.02.2006 14:02
Сводное планирование - изменения&изменения мин. Alexm DAX: Прочие вопросы 1 05.04.2005 10:43
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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