AXForum  
Go Back   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 13.01.2011, 12:47   #1  
ValeriyZ is offline
ValeriyZ
Участник
 
21 / 10 (1) +
Join Date: 02.09.2010
Location: Киев
Итак задача следующая:
Есть Документ - форма с Header-ом и связаной с ним Сабформой(Сабформа А).
Необходимо: добавить еще одну сабформу(Сабфаорма Б), в которой отображать записи, отфильтрованые на основании текущей записи в СабФорме А данные в СабФорме Б.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 11:25.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.