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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.06.2013, 15:12   #1  
Lapunder is offline
Lapunder
Участник
 
40 / 10 (1) +
Регистрация: 24.04.2008
Доброго дня всем

Дано: Форма + субоформа на ней
В зависимости от значений в головной таблице субформа должна быть либо редактируемой, либо недоступной.

Проблема состоит в следующем. Если мы стоим на записи, для которой субформа была нередактируемой (Условие = FALSE) и потом в главной форме создаем новую запись так, что Условие = TRUE, то у субформы все равно доступности нет (пока не появится хоть одна запись в таблице субформы). Причем, если всю форму закрыть, а потом открыть (на этой же записи), то субформа доступна.

Подскажите, как лучше крутить этими доступностями, где лучше всего повесить обновление доступности субформы?

Спасибо.
Старый 28.06.2013, 10:32   #2  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
на OnAfterGetCurrRecord в главной форме повесить CurrForm.UPDATECONTROLS
больше мыслей нет
Старый 28.06.2013, 16:12   #3  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Currentform.update(true) на OnAfterValidate поля от, которого зависит редактируемость сабформы?
Старый 30.06.2013, 20:59   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
В субформе написать функцию IsEditable(), где будут условия редактируемости из заголовка.
Вызывать в триггере главной формы onAfterGetCurrRecord().
Единственное, функцию IsEditable() попробовать без строки CurrForm.UPDATE в конце и с ней (будет без нее работать - хорошо).
Старый 01.07.2013, 00:58   #5  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Пока читал, то сходу вспомнил доработку переприменения в Российской локализации помоему для 5-ки. Там принцип был именно такой же.
Далее, CurrForm.UPDATE будет вызывать сохранение записей, поэтому не факт, что будет корректно отрабатывать.
Можно написать функцию на субформе, которая будет вызывать CurrForm.UPDATECONTROLS из головной формы (по аналогии со связкой меню Заголовок/строка заказов продажи или покупки.

Можно еще поиграться вообще с функцией, по аналогии с названиями форм типа Showcaption..

Тут все записит от того, какой результат нужно получить
Старый 01.07.2013, 09:31   #6  
Lapunder is offline
Lapunder
Участник
 
40 / 10 (1) +
Регистрация: 24.04.2008
Спасибо всем откликнувшимся. Но это все не срабатывает. Естественно, все эти методы пытались применить в разных вариациях. Работает весьма нестабильно - то есть сбуформа периодически (особенно при создании новой записи при "стоянии" на записи с недоступной субформой) не становится доступной на редактирование.

Пришлось сделать тупо - сдублировать субформу, убрав с нее все контролы, которые все равно скрывались на недоступной форме, форму сделать полностью не редактируемой - по сути дела только отображение данных. И при необходимости доступную субформу подменять на эту ReadOnly- форму. Такая подмена работает корректно, Хотя это очень некрасивое решение, т.к. если потребуется изменить одну из субформ (добавить новые поля, что=то сдвинуть или типа того) - придется менять обе сразу.
Но пока красивого решения нет. а заказчик не готов ждать до бесконечности, пока наступит озарение.
Старый 01.07.2013, 12:49   #7  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Кстати, обычно в таких случаях делают просто мастера создания новой записи. Это снимает проблему хитрых настроек и как бонус проверяет заполнение необходимых полей.
Старый 02.07.2013, 12:43   #8  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Не могу не сказать)
Выбранное решение некрасивое. В навижене есть вещи, которые реализовывать неприятно и касаются они чаще как раз интерфейса.
Но решение плохое.
С функцией в субформе точно не получилось? На ключевых полях заголовка повесьте на onAfterValidate() CurrForm.UPDATE; Это будет дергать триггер onAfterGetCurrRecord() в шапке. А оттуда зовите функцию из субформы. Все должно работать.
 


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

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

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