23.10.2012, 14:04 | #1 |
Заноза в заднице
|
Обновление значения поля в форме при изменении связанной записи
Исходные данные: есть форма Сделки, в которой есть связанное представление записей "Платежные поручения".
Необходимо: обновлять значение выбранного поля основной формы Сделки при добавлении либо изменении записи связанных "Платежных поручений". Если в деталях, то происходит следующее: есть набор записей платежных поручений по сделке, данные оплат по которым нужно иметь в виде суммы в поле сделки. При этом сумма должна учитываться для оплаченных платежных поручений (только в статусе "Оплачено"), что соответственно, добавляет требования, согласно которым удаленные либо отмененные платежные поручения исключаются из общей суммы. Был создан плагин, который реагирует на изменения платежных поручений и если ты их заводишь и обновляешь - сумма связанной сделки пересчитывается и обновляется для записи, но, если платежные поручения создаются или изменяются непосредственно из связанного представления формы сделки, то актуальная сумма будет отображена в форме сделки только после принудительного обновления нажатием F5. Хотелось бы, чтобы поле реагировало на действия, производимые с платежными поручениями, и, в описанном мной режиме не пришлось бы дополнительно обновлять форму сделки (скриптом из события OnSave формы платежного поручения обновить форму сделки получается, но фокус со связанного представления теряется).
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
23.10.2012, 15:22 | #2 |
Участник
|
Можно считывать сумму платежных поручений через ajax при переходе в навигации на форму (Information/Сведения)
Код: document.getElementById("areaForm").attachEvent("onpropertychange", function (e) { if (e.propertyName == "style.display" && e.srcElement.style.display == "inline") ReloadSum(); }); |
|
|
За это сообщение автора поблагодарили: Likefire (1). |
23.10.2012, 16:08 | #3 |
Чайный пьяница
|
Делал подобную доработку. При запуске формы запускался скрипт, который через определённые интервалы вычитывал при помощи вебсервисов значение интересующего поля. Если полученное значение не равнялось акуальному - просто подменял.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
23.10.2012, 16:35 | #4 |
Заноза в заднице
|
Цитата:
Сообщение от Anros
Можно считывать сумму платежных поручений через ajax при переходе в навигации на форму (Information/Сведения)
Код: document.getElementById("areaForm").attachEvent("onpropertychange", function (e) { if (e.propertyName == "style.display" && e.srcElement.style.display == "inline") ReloadSum(); });
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
23.10.2012, 16:41 | #5 |
Заноза в заднице
|
Использовать таймер, на мой взгляд, непозволительно с точки зрения как ресурсов, так и вариантов для обработки. К тому же, смысла в этом немного, поскольку входы в область отображаемого поля весьма ограничены с точки зрения событий: ты либо обновляешь форму и всё само обновляется, либо следишь за переходом к основным табам. Да, конечно,- придется определять сходным образом события всех имеющихся табов, поскольку, можно перейти к любому из них, а потом подняться/опуститься до области расположения обновляемого поля. И да,- понятно, что добавление новых табов нужно сопровождать определением события.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
23.10.2012, 16:45 | #6 |
Участник
|
Цитата:
Сообщение от Likefire
Я и сам думал об этом. Скорее всего это единственный выход в данной ситуации. Однако вопрос: почему в качестве примера приведен вариант с внедрением в DOM обработчика события "onpropertychange"? Вероятно, потому что этот пример для четвертой версии, потому что в 2011 есть предопределенное событие TabStateChange, хотя могу ошибаться,- поправьте, если что.
|
|
23.10.2012, 16:47 | #7 |
Участник
|
Цитата:
|
|
|
|