27.06.2013, 15:12 | #1 |
Участник
|
Доброго дня всем
Дано: Форма + субоформа на ней В зависимости от значений в головной таблице субформа должна быть либо редактируемой, либо недоступной. Проблема состоит в следующем. Если мы стоим на записи, для которой субформа была нередактируемой (Условие = FALSE) и потом в главной форме создаем новую запись так, что Условие = TRUE, то у субформы все равно доступности нет (пока не появится хоть одна запись в таблице субформы). Причем, если всю форму закрыть, а потом открыть (на этой же записи), то субформа доступна. Подскажите, как лучше крутить этими доступностями, где лучше всего повесить обновление доступности субформы? Спасибо. |
|
28.06.2013, 10:32 | #2 |
Administrator
|
на OnAfterGetCurrRecord в главной форме повесить CurrForm.UPDATECONTROLS
больше мыслей нет |
|
28.06.2013, 16:12 | #3 |
Участник
|
Currentform.update(true) на OnAfterValidate поля от, которого зависит редактируемость сабформы?
|
|
30.06.2013, 20:59 | #4 |
Участник
|
В субформе написать функцию IsEditable(), где будут условия редактируемости из заголовка.
Вызывать в триггере главной формы onAfterGetCurrRecord(). Единственное, функцию IsEditable() попробовать без строки CurrForm.UPDATE в конце и с ней (будет без нее работать - хорошо). |
|
01.07.2013, 00:58 | #5 |
Участник
|
Пока читал, то сходу вспомнил доработку переприменения в Российской локализации помоему для 5-ки. Там принцип был именно такой же.
Далее, CurrForm.UPDATE будет вызывать сохранение записей, поэтому не факт, что будет корректно отрабатывать. Можно написать функцию на субформе, которая будет вызывать CurrForm.UPDATECONTROLS из головной формы (по аналогии со связкой меню Заголовок/строка заказов продажи или покупки. Можно еще поиграться вообще с функцией, по аналогии с названиями форм типа Showcaption.. Тут все записит от того, какой результат нужно получить |
|
01.07.2013, 09:31 | #6 |
Участник
|
Спасибо всем откликнувшимся. Но это все не срабатывает. Естественно, все эти методы пытались применить в разных вариациях. Работает весьма нестабильно - то есть сбуформа периодически (особенно при создании новой записи при "стоянии" на записи с недоступной субформой) не становится доступной на редактирование.
Пришлось сделать тупо - сдублировать субформу, убрав с нее все контролы, которые все равно скрывались на недоступной форме, форму сделать полностью не редактируемой - по сути дела только отображение данных. И при необходимости доступную субформу подменять на эту ReadOnly- форму. Такая подмена работает корректно, Хотя это очень некрасивое решение, т.к. если потребуется изменить одну из субформ (добавить новые поля, что=то сдвинуть или типа того) - придется менять обе сразу. Но пока красивого решения нет. а заказчик не готов ждать до бесконечности, пока наступит озарение. |
|
01.07.2013, 12:49 | #7 |
Участник
|
Кстати, обычно в таких случаях делают просто мастера создания новой записи. Это снимает проблему хитрых настроек и как бонус проверяет заполнение необходимых полей.
|
|
02.07.2013, 12:43 | #8 |
Участник
|
Не могу не сказать)
Выбранное решение некрасивое. В навижене есть вещи, которые реализовывать неприятно и касаются они чаще как раз интерфейса. Но решение плохое. С функцией в субформе точно не получилось? На ключевых полях заголовка повесьте на onAfterValidate() CurrForm.UPDATE; Это будет дергать триггер onAfterGetCurrRecord() в шапке. А оттуда зовите функцию из субформы. Все должно работать. |
|