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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.03.2011, 09:41   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DAsm Посмотреть сообщение
Как мне передать параметр разноски во вторую форму чтобы уже в зависимости от значения таблицы можно было выставлять свойство allowedit true или false.
Я уже упоминал, что механизм DynaLink действует не только в момент открытия формы, он продолжает работать до тех пор пока не будет закрыта первая форма! (открыв строки неразнесённого журнала, пользователь может перейти на первой форме на разнесённый и в форме строк отобразаться уже его строки). Это значит, что установить доступность строк журнала один раз при открытии формы не выйдет. Как быть? Доступность строк нужно устанавливать не в событии открытия формы, а в событии смены ведущего источника данных. Для это предназначен метод источника данных DataSource.linkActive(), не спутайте с DataSource.Active(), последний это событие смены активной строки своего датасурса.

Будем считать, что с вопросом "в какой момент менять доступность?" мы разобралсь, теперь вернёмся к вопросу о том "как находясь на второй форме получить значение признака разноски с активной строки первой формы?".
Вообще есть несколько способов передачи данных между объектами (формами/отчётами/диалогами) и все они основаны на струтуре Args. Cамый универсальный способ - это во втором объекте получить ссылку на первый и вызвать заранее написаный метод который бы возвращал нужные нам данные. Делается это так:
X++:
    Object  caller; // используем абстрактный тип Object для того чтобы уйти от раннего связывания
    ;
    caller = args().caller(); // получаем ссылку на вызвавший объект
    prm = caller.<>(); // имя метода не проверяется на этапе компиляции. Используется позднее связывание
Также часто используется метод args().record() для передачи табличных курсоров. Во многих случаях система сама упраляет созданием, наполнением и передачей структуры Args.

Применительно к вашей задаче стоит отметить, что в системе разработан большой набор стандартных классов, реализующих стандартное поведение. Поведение типовое и понятное всем пользователем, независимо от того в каком из модулей системы они работают. Если вы смотрели формы tutorial_JournalTable и tutorial_JournalTransMovement, то вы наверное уже обратили внимание на классы JournalFormTable и JournalFormTrans. Правльно будет ипользовать их в своих разработках. В этом случае вам не придется заново программировать вещи, общие для всех типовых форм.

Цитата:
Сообщение от DAsm Посмотреть сообщение
Остается научится выводить отчет и каким-то образом выводить правильное количество строк во второй форме по значениям в первой.
Не совсем понял, что именно у вас пока не получается.

Последний раз редактировалось S.Kuskov; 03.03.2011 в 09:57.
Старый 04.03.2011, 09:24   #2  
DAsm is offline
DAsm
Участник
 
11 / 10 (1) +
Регистрация: 02.03.2011
Спасибо за исчерпывающие ответы. Буду разбираться понемногу.
Цитата:
Не совсем понял, что именно у вас пока не получается.
Тут у меня вопрос как сделать так, что бы в первой таблице "Журнал" в колонке "Количество строк" выводилось значения количества строк в этом журнале. Мне нужно при инициализации таблицы "Журнал" считывать количество строк со второй таблицы?
Старый 04.03.2011, 11:24   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DAsm Посмотреть сообщение
Тут у меня вопрос как сделать так, что бы в первой таблице "Журнал" в колонке "Количество строк" выводилось значения количества строк в этом журнале.
Это также типовая задача для форм журналов, следовательно её реализация уже есть в стандартных класах. Например в тестовой форме tutorial_JournalTable количество строк отображается на вкладе "История" в группе "Итоги".
Цитата:
Сообщение от DAsm Посмотреть сообщение
Мне нужно при инициализации таблицы "Журнал" считывать количество строк со второй таблицы?
Суть стандартного подхода в том чтобы количество строк не рассчитывать каждый раз, а хранить в таблице журналов. Ну и соответственно обновлять его каждый раз при вставке и удалении строк. Ещё раз повтрю, что данный механизм уже реализован в стандарных классах JournalFormTable и JournalFormTrans, и что бы им воспользоваться просто нужно внедрить их в свою форму, так как это показано на примере тестовых форм tutorial_JournalTable и tutorial_JournalTransMovement.
Старый 04.03.2011, 11:51   #4  
DAsm is offline
DAsm
Участник
 
11 / 10 (1) +
Регистрация: 02.03.2011
Цитата:
Суть стандартного подхода в том чтобы количество строк не рассчитывать каждый раз, а хранить в таблице журналов.
Ну а для начала мне нужно обнулить все значения строк? А потом уже при добавлении удалении обновлять данные? А как быть с тем чтобы именно значение "количество строк" в таблице "Журналы" не могли модифицироваться? Как из 1 формы мне получать значения во второй? Или так же с передачей параметров?
И к сожалению я не могу понять логику туториалов вообще. Похоже я в программировании не так силен как предполагал. И не открываются кстати формы туториалов по журналам требуя какой-то активный буфер или выдавая ошибки...
Старый 04.03.2011, 12:25   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DAsm Посмотреть сообщение
Ну а для начала мне нужно обнулить все значения строк? А потом уже при добавлении удалении обновлять данные?
Порядок работы пользователя таков, что сначала он создаёт заголовок/шапку журнала, а только потом создаёт его строки. Так? Т.е в начальный момент, когда журнал уже есть, а строк ещё нет, количество строк равно нулю (это значению по умолчанию). Потом при вводе строк можно на форме строк перехватить это событие и обновить значение в таблице журналов. Или я не понял ваш вопрос?

Цитата:
Сообщение от DAsm Посмотреть сообщение
А как быть с тем чтобы именно значение "количество строк" в таблице "Журналы" не могли модифицироваться?
Ну это то как раз совсем просто. Стоит лишь установить свойства AllowEdit и AllowEditOnCreate у нужного поля таблицы в значение false.

Цитата:
Сообщение от DAsm Посмотреть сообщение
Как из 1 формы мне получать значения во второй? Или так же с передачей параметров?
Тут наверное стоит уточнить, что работа с данными может происходит не только на уровне форм, но и на уровне таблиц. Т.е. вам никто не мешает находясь на форме 1 обращаться к данным таблицы 2. Данные, который храняться в БД, в отличии от временных данных кокторые связанны с конкретным объектом, доступны в любом объекте аксапты.

Цитата:
Сообщение от DAsm Посмотреть сообщение
И к сожалению я не могу понять логику туториалов вообще. Похоже я в программировании не так силен как предполагал.
Логика в том, чтобы отделить дизайн (саму форму), от поведения (кода в обработчиках событий). Т.е. на самой форме кода остаётся по минимому, только переадресация управления соответствующим методам класса. Классы собраны в иерархии. В базовых классах реализуются общие ньюнсы поведения в наследниках более спецефические, относящиеся к более конкретной задаче.

Цитата:
Сообщение от DAsm Посмотреть сообщение
И не открываются кстати формы туториалов по журналам требуя какой-то активный буфер или выдавая ошибки...
Форма строк журнала не может быть открыта сама по себе, только в контексте какого-то журнала. Она не предназанчена для отображения всех строк всех журналов сразу, только конкретного. Т.е. открыть её можно только по кнопке "Строки" на форме журналов.
А форма tutorial_JournalTable тоже не открывается?
Теги
axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно связать таблицы в форме? Как показать параметры партии? mazzy DAX: Программирование 10 27.10.2010 15:56
Фильтр строк подчиненной таблицы на форме demon46 DAX: Программирование 4 15.07.2008 15:41
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
проблема с вызовом новой (добавленной) таблицы alpin DAX: Программирование 4 12.01.2004 14:31
Объединить несколько полей таблицы в одном поле Grid-а на форме? storer DAX: Программирование 2 12.11.2003 14:08
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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