Обновление Browse в другом дорабатываемом интерфейсе

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Обновление Browse в другом дорабатываемом интерфейсе

Сообщение BlazeBio »

У меня проблема. Дорабатываю интерфейс
L_SKLAD::ACTCOMPL.SPECIFINFO
В нём есть screen SCRSPECIFINFOKOMPL, который добавляется кнопка, производящая вычисления и заменяющая значение в колонке SOPRORDA.PRICE(цена компонента комплекта) браузера этого же интерфейса BRRASPREDMCRAZ.
При замене меняется также поле SPSOPR.RPRICE (сумма полей SOPRORDA.PRICE браузера) скрина SCRSPECIFINFOKOMPL . В последней колонке браузера проставляется SKLV* SOPRORDA.PRICE, где SKLV(количество компонентов) колонка браузера.
Так вот этот интерфейс, открывается через другой уже существующий интерфейс L_SKLAD::ACTCOMPL.EDITSOPR, в котором также есть браузер(BRBYNAMERAZ). В этом браузере отображены комплекты.
Здесь, нажимая, CTRL+ENTER открывается интерфейс L_SKLAD::ACTCOMPL.SPECIFINFO с компонетами комплектов.
Проблема в том, что поле цены комплекта в браузере
L_SKLAD::ACTCOMPL.EDITSOPR.BRBYNAMERAZ.SUMPRICE не совпадает с полем в L_SKLAD::ACTCOMPL.SPECIFINFO.SCRSPECIFINFOKOMPL. cуммы полей в
ssum(SKLV*SOPRORDA.PRICE) (Неизвестно куда заносится сумма по ssum).
L_SKLAD::ACTCOMPL.SPECIFINFO.SCRSPECIFINFOKOMPL.SPSOPR
Но при ручном измененении значений в браузере L_SKLAD::ACTCOMPL.EDITSOPR.BRBYNAMERAZ. или
L_SKLAD::ACTCOMPL.SPECIFINFO.BRRASPREDMCRAZ даже на тоже самое значение, то обновление поля SUMPRICE происходит и оно тогда совпадает с полем SPSOPR.PRICE в скрине SCRSPECIFINFOKOMPL.
Не могу понять почему в первом случае поле не обновляется, а во втором обновляется. А нужно, чтобы обновлялось. Может нужно прописать на какое-то событие (стандартное) в L_SKLAD::ACTCOMPL.EDITSOPR, чтобы в L_SKLAD::ACTCOMPL.EDITSOPR при rescanpanel(BRBYNAMERAZ) обновлялся браузер.
Последний раз редактировалось BlazeBio 14 май 2010, 19:23, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

rescanpanel(#tabla)
если в другом фейсе меняете то rereadrecord(#tabla)
ну еще поля могут пересчитываться по cmCheckfield или cmPositionchange
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

rescanpanel и rereadrecord работают, но не обновляется поле sumprice.
Это поле является вычисляемым.
При Sumprice:=spsopr.kol*prv - компилятор выдаёт сообщение, что поле является вычисляемым и заменит его нельзя.
Поле Sumprice обновляется, но при ручном редактировании одного из полей браузера 1-го или 2-ого интерфейсов, даже при банальной замене допустим поля SOPRORDA.PRICE c 10000 на 10000, то обновление в SUMPRICE происходит.
Проблема в том, что почему-то именно для этого поля не происходит rescanpanel или readrecord ?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

значит срабатывают события в которых вычисляется это поле.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Хорошо, если срабатывают какие-то события, то они скорее всего стандартные. Я добавил обновление браузера BRBYNAMERAZ в событие cmDone 2-го интерфейса, но оно обновляет все поля этого браузера в 1-м интерфейсе кроме этого вычисляемого. На события cmClose, cmCancel, cmCheckField, cmPosiionChanged, cmDefault во 2-м интерфейсе браузер, если и реагирует (поля обновляются в BRBYNAMERAZ кроме вычисляемого), то при закрытии 2-го интерфейса пропадают изменения в браузере и вообщее в полях 1-го интерфейса даже в скрине.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

это лишний раз доказывает, что вычисление идет в событиях. inherited то вызывали? а перед ним мессагу? Вообще в ваших окнах отображаются данные из разных табл. Значится дело в cmUpdateRecord - смотрите по журналу какие таблы меняются.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

inherited вызывал в Init обоих интерфейсов. А в cmUpdateRecord не срабатывает вовсе, даже c inherited, хотя в событии по кнопке во 2-м интерфейсе используется update current soprorda. И месагу вызывал. И ресканил все таблицы используемые в обоих интерфейсах и по событию cmUpdateRecord. Это какое-то заколдованное поле.
Ответить