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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2011, 12:47   #1  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Регистрация: 02.09.2010
Адрес: Киев
Итак задача следующая:
Есть Документ - форма с Header-ом и связаной с ним Сабформой(Сабформа А).
Необходимо: добавить еще одну сабформу(Сабфаорма Б), в которой отображать записи, отфильтрованые на основании текущей записи в СабФорме А данные в СабФорме Б.

Возможно ли это вообще в класическом клиенте?

Пробывал добавлять сабформу непосредственно на форму-источник сабформы(А) - ругаеться компилятор при запуске основной формы.

Заранее благодарен за ответы!
Старый 13.01.2011, 13:10   #2  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Хм... Сабформу к сабформе приделать это весело)))
Что касается Вашей задачи то на классическом клиенте ее реализовать можно Посмотрите например заказ продажи, в нем когда вы переходите по строкам меняется информация о товаре в правой стороне, отвечает за это форма 46, только в вашем случае в правой части нужно поместить TableBox.
Старый 13.01.2011, 13:11   #3  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Итак задача следующая:
Есть Документ - форма с Header-ом и связаной с ним Сабформой(Сабформа А).
Необходимо: добавить еще одну сабформу(Сабфаорма Б), в которой отображать записи, отфильтрованые на основании текущей записи в СабФорме А данные в СабФорме Б.

Возможно ли это вообще в класическом клиенте?

Пробывал добавлять сабформу непосредственно на форму-источник сабформы(А) - ругаеться компилятор при запуске основной формы.

Заранее благодарен за ответы!
вот почитайте
NAV4U - может оказаться полезным
Старый 13.01.2011, 13:18   #4  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Регистрация: 02.09.2010
Адрес: Киев
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Хм... Сабформу к сабформе приделать это весело)))
Что касается Вашей задачи то на классическом клиенте ее реализовать можно Посмотрите например заказ продажи, в нем когда вы переходите по строкам меняется информация о товаре в правой стороне, отвечает за это форма 46, только в вашем случае в правой части нужно поместить TableBox.
Думал о таком, но как заполнять этот TableBox даными из другой таблицы(не той, которая являеться SourceTable для сабформы)???
Старый 13.01.2011, 13:19   #5  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Регистрация: 02.09.2010
Адрес: Киев
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Итак задача следующая:
Есть Документ - форма с Header-ом и связаной с ним Сабформой(Сабформа А).
Необходимо: добавить еще одну сабформу(Сабфаорма Б), в которой отображать записи, отфильтрованые на основании текущей записи в СабФорме А данные в СабФорме Б.

Возможно ли это вообще в класическом клиенте?

Пробывал добавлять сабформу непосредственно на форму-источник сабформы(А) - ругаеться компилятор при запуске основной формы.

Заранее благодарен за ответы!
вот почитайте
NAV4U - может оказаться полезным
Спасибо, когдато мельком пробегал - попробую разобраться, авось поможет
Старый 13.01.2011, 13:23   #6  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Итак задача следующая:
Есть Документ - форма с Header-ом и связаной с ним Сабформой(Сабформа А).
Необходимо: добавить еще одну сабформу(Сабфаорма Б), в которой отображать записи, отфильтрованые на основании текущей записи в СабФорме А данные в СабФорме Б.

Возможно ли это вообще в класическом клиенте?

Пробывал добавлять сабформу непосредственно на форму-источник сабформы(А) - ругаеться компилятор при запуске основной формы.

Заранее благодарен за ответы!
Взаимодействие главной формы с первой сабформой осуществляйте через XMLDOM (поищите на Мибусо, на этом форуме - полно примеров). В момент ответа главной форме от первой сабформы, вызывайте нужную вам функцию фильтрации во второй сабформе (через CurrForm.FORM...) и обновляйте ее.
Старый 13.01.2011, 13:29   #7  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Регистрация: 02.09.2010
Адрес: Киев
Цитата:
Сообщение от Orwell Посмотреть сообщение
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Итак задача следующая:
Есть Документ - форма с Header-ом и связаной с ним Сабформой(Сабформа А).
Необходимо: добавить еще одну сабформу(Сабфаорма Б), в которой отображать записи, отфильтрованые на основании текущей записи в СабФорме А данные в СабФорме Б.

Возможно ли это вообще в класическом клиенте?

Пробывал добавлять сабформу непосредственно на форму-источник сабформы(А) - ругаеться компилятор при запуске основной формы.

Заранее благодарен за ответы!
Взаимодействие главной формы с первой сабформой осуществляйте через XMLDOM (поищите на Мибусо, на этом форуме - полно примеров). В момент ответа главной форме от первой сабформы, вызывайте нужную вам функцию фильтрации во второй сабформе (через CurrForm.FORM...) и обновляйте ее.
Спсибо, буду пробывать(на сколько я понял тут http://www.nav4u.ru/archives/55-kurs...aem-sabformoj/ во втором способе как раз упоминаеться XMLDOM)
Старый 13.01.2011, 13:39   #8  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Хм... Сабформу к сабформе приделать это весело)))
Что касается Вашей задачи то на классическом клиенте ее реализовать можно Посмотрите например заказ продажи, в нем когда вы переходите по строкам меняется информация о товаре в правой стороне, отвечает за это форма 46, только в вашем случае в правой части нужно поместить TableBox.
Думал о таком, но как заполнять этот TableBox даными из другой таблицы(не той, которая являеться SourceTable для сабформы)???
Не зная деталей тяжело подсказать оптимальное решение. Если в правой сабформе предполается всего несколько строк, то за TableBox может сойти несколько TextBox - ов, как это и сделано в 46 форме. Кстати главная форма может иметь и несколько сабформ, но в таком случае обмен данными придется вести через кодеюнит с SingleInstance = true.
Старый 13.01.2011, 13:52   #9  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Хм... Сабформу к сабформе приделать это весело)))
Что касается Вашей задачи то на классическом клиенте ее реализовать можно Посмотрите например заказ продажи, в нем когда вы переходите по строкам меняется информация о товаре в правой стороне, отвечает за это форма 46, только в вашем случае в правой части нужно поместить TableBox.
Думал о таком, но как заполнять этот TableBox даными из другой таблицы(не той, которая являеться SourceTable для сабформы)???
Не зная деталей тяжело подсказать оптимальное решение. Если в правой сабформе предполается всего несколько строк, то за TableBox может сойти несколько TextBox - ов, как это и сделано в 46 форме. Кстати главная форма может иметь и несколько сабформ, но в таком случае обмен данными придется вести через кодеюнит с SingleInstance = true.
Какой SingleInstance кодэюнит?! Не путайте человека.
Тогда бы уж ссылку дали на 521-ю форму 5-ки (Журнал Применения..). Покажете, где там сингл инстанс CU используется? Ну или хотя бы напишите - в чем может быть смысл сингл инстанс кодэюнитов на формах с несколькими сабформами. Ответ очевиден - смысла нет.
Старый 13.01.2011, 14:00   #10  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
Сообщение от Orwell Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Хм... Сабформу к сабформе приделать это весело)))
Что касается Вашей задачи то на классическом клиенте ее реализовать можно Посмотрите например заказ продажи, в нем когда вы переходите по строкам меняется информация о товаре в правой стороне, отвечает за это форма 46, только в вашем случае в правой части нужно поместить TableBox.
Думал о таком, но как заполнять этот TableBox даными из другой таблицы(не той, которая являеться SourceTable для сабформы)???
Не зная деталей тяжело подсказать оптимальное решение. Если в правой сабформе предполается всего несколько строк, то за TableBox может сойти несколько TextBox - ов, как это и сделано в 46 форме. Кстати главная форма может иметь и несколько сабформ, но в таком случае обмен данными придется вести через кодеюнит с SingleInstance = true.
Какой SingleInstance кодэюнит?! Не путайте человека.
Тогда бы уж ссылку дали на 521-ю форму 5-ки (Журнал Применения..). Покажете, где там сингл инстанс CU используется? Ну или хотя бы напишите - в чем может быть смысл сингл инстанс кодэюнитов на формах с несколькими сабформами. Ответ очевиден - смысла нет.
Смысл очевиден коллега, передать из одной сабформы данные для второй
Старый 13.01.2011, 18:32   #11  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Orwell Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Хм... Сабформу к сабформе приделать это весело)))
Что касается Вашей задачи то на классическом клиенте ее реализовать можно Посмотрите например заказ продажи, в нем когда вы переходите по строкам меняется информация о товаре в правой стороне, отвечает за это форма 46, только в вашем случае в правой части нужно поместить TableBox.
Думал о таком, но как заполнять этот TableBox даными из другой таблицы(не той, которая являеться SourceTable для сабформы)???
Не зная деталей тяжело подсказать оптимальное решение. Если в правой сабформе предполается всего несколько строк, то за TableBox может сойти несколько TextBox - ов, как это и сделано в 46 форме. Кстати главная форма может иметь и несколько сабформ, но в таком случае обмен данными придется вести через кодеюнит с SingleInstance = true.
Какой SingleInstance кодэюнит?! Не путайте человека.
Тогда бы уж ссылку дали на 521-ю форму 5-ки (Журнал Применения..). Покажете, где там сингл инстанс CU используется? Ну или хотя бы напишите - в чем может быть смысл сингл инстанс кодэюнитов на формах с несколькими сабформами. Ответ очевиден - смысла нет.
А где в 521-й форме две сабформы?
Вообще говоря две сабформы противречат идеалогии разработки Navision, вряд ли в стандартной базе такое найдется. Если не ошибась, есть даже такой вопрос в тестах на девелопера
Старый 14.01.2011, 09:07   #12  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от Fordewind Посмотреть сообщение
А где в 521-й форме две сабформы?
5.0. 15-й и 60-й контролы в 521-й форме. Логика работы одной непосредственным образом зависит от другой, через взаимодействие с главной формой.
Никто и не говорит, что это субформа на субформу (хотя и это можно сделать, средства описаны выше по ветке). Это 2 субформы главной формы... Хоть и являются они одним физическим объектом, но на форме присутствуют в виде 2-х контролов, с разной, но взаимосвязанной логикой...
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Вообще говоря две сабформы противречат идеалогии разработки Navision, вряд ли в стандартной базе такое найдется.
Не противоречат. Нашлось.
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Если не ошибась, есть даже такой вопрос в тестах на девелопера
Такого вопроса нет.
Старый 14.01.2011, 09:18   #13  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Смысл очевиден коллега, передать из одной сабформы данные для второй

Просто не все на этом форуме обладают опытом, позволяющим самостоятельно делать какие-то "нетривиальные" разработки. И когда новичок прочитает ваши слова - он ведь и попытается так реализовать... Хотя, повторюсь, предложение абсолютно нерациональное. Хорошо, что не написали в духе "Сделать отдельную табличку, в которой хранить, а потом удалять данные.", и на том спасибо. А что? "Смысл же очевиден - передать из одной сабформы данные для второй."
Старый 14.01.2011, 09:48   #14  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
Сообщение от Orwell Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Смысл очевиден коллега, передать из одной сабформы данные для второй

Просто не все на этом форуме обладают опытом, позволяющим самостоятельно делать какие-то "нетривиальные" разработки. И когда новичок прочитает ваши слова - он ведь и попытается так реализовать... Хотя, повторюсь, предложение абсолютно нерациональное. Хорошо, что не написали в духе "Сделать отдельную табличку, в которой хранить, а потом удалять данные.", и на том спасибо. А что? "Смысл же очевиден - передать из одной сабформы данные для второй."
ОК. Вижу нужно разъяснить мою точку зрения. Я не настаиваю на том что она является единственно правильной.
Вот пример с mibuso (Вы кстати посылая туда человека, хотя бы ссылку то давали). Что видим? На главной форме 2 сабформы. Как вторая сабформа узнает что произошло на первой (та в которой строки заказа)? На главной форме таймер, в котором происходит опрос первой сабформы и изменения во второй. Отлично работает, НО форма то у нас маленькая, а если не ней будет висеть еще куча контролов? И начнутся глюки и тормоза. Так вот чтобы уйти от таймера на главной форме и заставить сабформы обмениваться между собой информацией и можно использовать SingleInstance. Хотя это и извращение, но не большее чем XMLDOM, которым Вы призываете пользоваться начинающего специалиста. Извините если что не так))
Старый 14.01.2011, 10:12   #15  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от prefreitor Посмотреть сообщение
ОК. Вижу нужно разъяснить мою точку зрения. Я не настаиваю на том что она является единственно правильной.
Вот пример с mibuso (Вы кстати посылая туда человека, хотя бы ссылку то давали). Что видим? На главной форме 2 сабформы. Как вторая сабформа узнает что произошло на первой (та в которой строки заказа)? На главной форме таймер, в котором происходит опрос первой сабформы и изменения во второй. Отлично работает, НО форма то у нас маленькая, а если не ней будет висеть еще куча контролов? И начнутся глюки и тормоза. Так вот чтобы уйти от таймера на главной форме и заставить сабформы обмениваться между собой информацией и можно использовать SingleInstance. Хотя это и извращение, но не большее чем XMLDOM, которым Вы призываете пользоваться начинающего специалиста. Извините если что не так))
По поводу Мибусо - конечно же, имел ввиду не данный аддон, а топики, посвященные как раз таки XMLDOM'у. Открываем гугл, набиваем в строке поиска XMLDOM Subform - первой же строкой появляется топик http://www.mibuso.com/forum/viewtopic.php?t=7998 (Send messages from subform to parent form). Читаем, смотрим, разбираемся...
Старый 14.01.2011, 11:37   #16  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Orwell Посмотреть сообщение
Так вот чтобы уйти от таймера на главной форме и заставить сабформы обмениваться между собой информацией и можно использовать SingleInstance. Хотя это и извращение, но не большее чем XMLDOM, которым Вы призываете пользоваться начинающего специалиста. Извините если что не так))
Я пользуюсь в этих случаях только XMLDOM, прекрасно работает.
А вот с SingleInstance-CU не могу представить, как это может работать:
User производит какие-то изменения в Header'e. Согласно связи Header <--> Subform1 обновляется Subform1.
Subform1 посылает в SI-CU информацию, что она (Subform1) обновилась.
Каким макаром Subform2 узнает, что ей (Subform2) нужно обновиться? Разве что, через OnTimer() посекундно обращаться к SI-CU.
Но ведь надо обязательно обойтись без OnTimer()'а !
Старый 14.01.2011, 13:14   #17  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
Сообщение от AlexB Посмотреть сообщение
Цитата:
Сообщение от Orwell Посмотреть сообщение
Так вот чтобы уйти от таймера на главной форме и заставить сабформы обмениваться между собой информацией и можно использовать SingleInstance. Хотя это и извращение, но не большее чем XMLDOM, которым Вы призываете пользоваться начинающего специалиста. Извините если что не так))
Я пользуюсь в этих случаях только XMLDOM, прекрасно работает.
А вот с SingleInstance-CU не могу представить, как это может работать:
User производит какие-то изменения в Header'e. Согласно связи Header <--> Subform1 обновляется Subform1.
Subform1 посылает в SI-CU информацию, что она (Subform1) обновилась.
Каким макаром Subform2 узнает, что ей (Subform2) нужно обновиться? Разве что, через OnTimer() посекундно обращаться к SI-CU.
Но ведь надо обязательно обойтись без OnTimer()'а !
Тут не то, насколько я понимаю требуется. Юзер производит изменения в строках, т.е допустим в 1 сабформе, а вторая должна реагировать. От таймера мы уходим в главной форме, вторая сабформа его соответственно получает, но ценой кодюнита. В конечном итоге, имеем то что если форма сильно загружена контролами и различными событиями получаем значительное увеличение стабильности работы. Чуть выше есть ссылка на примерчик с таймером на главной форме.
Способ с XMLDOM думаю надо взять на заметку, когда нибудь потребуется
Старый 14.01.2011, 14:24   #18  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Регистрация: 02.09.2010
Адрес: Киев
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Цитата:
Сообщение от Orwell Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Смысл очевиден коллега, передать из одной сабформы данные для второй

Просто не все на этом форуме обладают опытом, позволяющим самостоятельно делать какие-то "нетривиальные" разработки. И когда новичок прочитает ваши слова - он ведь и попытается так реализовать... Хотя, повторюсь, предложение абсолютно нерациональное. Хорошо, что не написали в духе "Сделать отдельную табличку, в которой хранить, а потом удалять данные.", и на том спасибо. А что? "Смысл же очевиден - передать из одной сабформы данные для второй."
ОК. Вижу нужно разъяснить мою точку зрения. Я не настаиваю на том что она является единственно правильной.
Вот пример с mibuso (Вы кстати посылая туда человека, хотя бы ссылку то давали). Что видим? На главной форме 2 сабформы. Как вторая сабформа узнает что произошло на первой (та в которой строки заказа)? На главной форме таймер, в котором происходит опрос первой сабформы и изменения во второй. Отлично работает, НО форма то у нас маленькая, а если не ней будет висеть еще куча контролов? И начнутся глюки и тормоза. Так вот чтобы уйти от таймера на главной форме и заставить сабформы обмениваться между собой информацией и можно использовать SingleInstance. Хотя это и извращение, но не большее чем XMLDOM, которым Вы призываете пользоваться начинающего специалиста. Извините если что не так))
Воспользовался как раз этим примером. Работате))) Спасибо!)
Старый 14.01.2011, 18:20   #19  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Регистрация: 02.09.2010
Адрес: Киев
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Цитата:
Сообщение от Orwell Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Смысл очевиден коллега, передать из одной сабформы данные для второй

Просто не все на этом форуме обладают опытом, позволяющим самостоятельно делать какие-то "нетривиальные" разработки. И когда новичок прочитает ваши слова - он ведь и попытается так реализовать... Хотя, повторюсь, предложение абсолютно нерациональное. Хорошо, что не написали в духе "Сделать отдельную табличку, в которой хранить, а потом удалять данные.", и на том спасибо. А что? "Смысл же очевиден - передать из одной сабформы данные для второй."
ОК. Вижу нужно разъяснить мою точку зрения. Я не настаиваю на том что она является единственно правильной.
Вот пример с mibuso (Вы кстати посылая туда человека, хотя бы ссылку то давали). Что видим? На главной форме 2 сабформы. Как вторая сабформа узнает что произошло на первой (та в которой строки заказа)? На главной форме таймер, в котором происходит опрос первой сабформы и изменения во второй. Отлично работает, НО форма то у нас маленькая, а если не ней будет висеть еще куча контролов? И начнутся глюки и тормоза. Так вот чтобы уйти от таймера на главной форме и заставить сабформы обмениваться между собой информацией и можно использовать SingleInstance. Хотя это и извращение, но не большее чем XMLDOM, которым Вы призываете пользоваться начинающего специалиста. Извините если что не так))
Воспользовался как раз этим примером. Работате))) Спасибо!)
Мдаа, терь дебагером на этой форме по-тригерам не пробежаться...))
Старый 14.01.2011, 18:38   #20  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от ValeriyZ Посмотреть сообщение
Мдаа, терь дебагером на этой форме по-тригерам не пробежаться...))
Вот и я к тому же:
на нашей фирме руки тому отрывают, кто OnTimer пользует там, где можно обойтись без него
 


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

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

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