14.04.2011, 09:04 | #1 |
Участник
|
Отчеты в ReportingServices
Всем Доброе!
Может кто писал отчеты в репортинге для DAX 2009, интересует какие таблицы подвязаны для оприходования номенклатуры и сдачи на склад, по каким критериям отбирать? Заранее благодарствую |
|
14.04.2011, 11:40 | #2 |
Участник
|
Если вы знаете, где в интерфейсе Аксапты у вас находятся приходы, и как посмотреть по конкретному приходу, сдана номенклатура на склад или нет, то могу порекомендовать способ для помощи в создании нужных вам запросов.
Конкретный запрос писать не буду, так как слишком много условий в каждом конкретном случае. Два инструмента, которые вам предложу, возможно помогут вам самому разобраться. Примеры, приведенные мной, абстрактны. 1. Открываете форму закупок (надеюсь, у вас там находятся "приходы" ?). Правой кнопкой мыши - далее из контекстного меню выбираете "Настройка". В открывшейся форме есть последняя закладка "Запрос". В ней видно, какие таблицы задействованы на форме, какие между ними связи, какие критерии отбора заданы. Вот как это выглядит на экране 2. Есть замечательная утилита, которая позволяет узнать, какое поле на форме из какой таблицы берется. Чтобы это заработало, можно накатить проект в тестовое приложение вашей Аксапты SharedProject_FormDigger_AX2009.xpo Утилита описана здесь Где же это поле?! (Form digger) Вот как это работает в Аксапте: |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), Ilyaae (1). |
14.04.2011, 11:52 | #3 |
Участник
|
Обычно эта утилита используется для обратной задачи . Увидеть источник данных понтрола можно и без дополнительных утилит в поле "Системное имя" на вкладке "Выходная форма" окна, скриншот которого вы привели в первом вложении
|
|
14.04.2011, 11:57 | #4 |
Участник
|
Согласен, но комбинацию клавиш ALT~ быстрее нажать, да и сама форма быстрее открывается, чем форма настройки. Плюс еще в форм-диггере можно выйти на свойства поля в таблице, на код дисплейного метода.
Встаете на нужное поле на форме и нажимаете ALT~, получается эффект больший, чем от формы настройки. |
|
14.04.2011, 19:32 | #6 |
Участник
|
Упс... Надеюсь, накатили на тестовое приложение?
Попытаемся вылечить: 1) Откройте проект. Нажмите на проекте правой кнопкой мыши. Выберите пункт "Компилировать". 2) Для каждого класса, входящего в проект, сделайте инкрементную компиляцию. Всего в проекте три класса. Нажмите по названию класса правой кнопкой мыши - далее "Надстройки" - далее "Инкрементная компиляция" 3) Активируйте окно "Сообщения компилятора" 4) Посмотрите, чтобы в сообщениях компилятора не было ошибок Если в сообщениях компилятора найдены ошибки, то сделайте снимок экрана этих ошибок и покажите их здесь. 5) Попробуйте открыть форму в Аксапте.Если снова появится ошибка, то покажите снимок экрана с ошибкой. Постарайтесь, чтобы все сообщение влезло в картинку. Последний раз редактировалось Ace of Database; 14.04.2011 в 19:36. |
|
14.04.2011, 19:39 | #7 |
Участник
|
Да, и еще. Если срочно надо реанимировать открытие форм, то зайдите в класс SysSetupFormRun, в метод task(). Там закомментируйте строку
X++: if (!FormDigger::overloadButton(this, _p1)) X++: //if (!FormDigger::overloadButton(this, _p1)) Но надеюсь, что все же приведенная выше реанимация поможет Последний раз редактировалось Ace of Database; 14.04.2011 в 20:10. |
|
14.04.2011, 20:46 | #8 |
Участник
|
Еще появилась одна идея.
Скорее всего, у вас класс SysSetupFormRun был модифицирован, в частности, в него был добавлен метод raiseEvent_W(). Попробуйте экспортировать этот класс из приложения, где у вас формы открываются нормально в приложение, в которое накатили FormDigger. Затем найдите в этом классе метод task(), в нем перед строкой X++: ret = super(_p1); X++: //EVO: 31.01.09 #DEV02 Find from control by name --> if (!FormDigger::overloadButton(this, _p1)) //EVO: 31.01.09 #DEV02 Find from control by name <-- |
|
15.04.2011, 09:33 | #9 |
Участник
|
Спасибо. Поступил проще, переписал приложение заного локально. Буду пробовать дальше.
|
|
15.04.2011, 10:04 | #10 |
Участник
|
Попробуйте опять накатить проект, только не накатывайте класс SysSetupFormRun.
Проверьте, что все работает. Потом в этом классе в методе task(), перед строкой X++: ret = super(_p1); X++: //EVO: 31.01.09 #DEV02 Find from control by name --> if (!FormDigger::overloadButton(this, _p1)) //EVO: 31.01.09 #DEV02 Find from control by name <-- X++: //EVO: 31.01.09 #DEV02 Find from control by name --> if (!FormDigger::overloadButton(this, _p1)) //EVO: 31.01.09 #DEV02 Find from control by name <-- ret = super(_p1); |
|