Страница 1 из 1
Одна browse много update form
Добавлено: 26 Май 2017, 19:02
gopstop2007
Таблица с таб-ами, в зависимости от таб-а и нажатии клавиши Update должна вызваться "нужная" Update Form.
В стандартной Browse нет возможности вклинится в execute для подстановки своих Update Form, решение только с помощью OMIT ?

Одна browse много update form
Добавлено: 26 Май 2017, 19:39
Yufil
1 вариант. Напиши Update-процедуру типа Source, которая вызывает ту или иную форму, в зависимости от...
2 вариант - создать совсем пустую процедуру Dummy, которая вообще ничего не делает, поставить её в качестве формы обновления, а потом взглянуть в код и до/после вызова Dummy вставить выбор той или иной формы.
Вот, нашёл в работающем коде, нужно было вызвать процедуру testeditor или ScreenEditor в зависимости от типа записи
Код: Выделить всё
ThisWindow.Run PROCEDURE(USHORT Number,BYTE Request)
ReturnValue BYTE,AUTO
CODE
ReturnValue = PARENT.Run(Number,Request)
!-- Это я вставил
IF SELF.Request = ViewRecord
ReturnValue = RequestCancelled ! Always return RequestCancelled if the form was opened in ViewRecord mode
ELSE
GlobalRequest = Request
IF Loc:ScreenType = 'T'
TestEditor(1)
ELSE
ScreenEditor(1)
END
ReturnValue = GlobalResponse
END
RETURN ReturnValue
!--- А это сгенерировано
IF SELF.Request = ViewRecord
ReturnValue = RequestCancelled ! Always return RequestCancelled if the form was opened in ViewRecord mode
ELSE
GlobalRequest = Request
Dummy
ReturnValue = GlobalResponse
END
RETURN ReturnValue
Одна browse много update form
Добавлено: 26 Май 2017, 20:26
kreator
А зачем разные Update Form? Разные таблицы/файлы редактируются? Временное решение какое-то?
Было дело, я форму рисовал с несколькими закладками (активные/не активные в зависимости от условий).
А вообще метод Run для разных хитрых штук с Update Form.
А в десятке ещё заложена возможность по условию делать Update Form или EIP.
Одна browse много update form
Добавлено: 27 Май 2017, 8:57
gopstop2007
Yufil писал(а): 26 Май 2017, 19:39
Вот, нашёл в работающем коде, нужно было вызвать процедуру testeditor или ScreenEditor в зависимости от типа записи
Спасибо Yufil, я так и вставляю с помощью OMIT , думал еще есть решение кроме этого
kreator писал(а): 26 Май 2017, 20:26
А зачем разные Update Form?
В зависимости от условий, наличие и скрытие дополнительных таб-ов в форме не выход, одна Update форма на два поля, другая на пол-экрана

и потом использовать раздельные Update формы в зависимости от условий проще.
Одна browse много update form
Добавлено: 27 Май 2017, 9:46
kreator
gopstop2007 писал(а): 27 Май 2017, 8:57
одна Update форма на два поля, другая на пол-экрана
Как вариант, два поля можно в EIP редактировать. Это в шаблонах предусмотрено. Как раз, может, для таких случаев. И логика вроде бы в этом есть - зачем открывать тяжёлую форму для редактирования пары-тройки полей.
Одна browse много update form
Добавлено: 27 Май 2017, 10:06
gopstop2007
kreator писал(а): 27 Май 2017, 9:46
Как вариант, два поля можно в EIP редактировать. Это в шаблонах предусмотрено. Как раз, может, для таких случаев. И логика вроде бы в этом есть - зачем открывать тяжёлую форму для редактирования пары-тройки полей.
я два поля для примера привел

, а например форма для перемещения и форма для розничной продажи, + форму для продажи через штрих код, + форму для планшета и т.д....

Одна browse много update form
Добавлено: 27 Май 2017, 11:17
Yufil
Тогда самый простой вариант - сделать Update Procedure типа Source и передать ей параметр каким-то образом (если шаблон допускает, то напрямую, если нет - через какую-то глобальную переменную)
Код: Выделить всё
UpdateSourceProcedure PROCEDURE(...)
Code
CASE UpdateType
OF 1
UpdateProcedure1()
OF 2
UpdateProcedure2()
....
RETURN
И никаких игрищ с OMIT
Одна browse много update form
Добавлено: 27 Май 2017, 13:08
gopstop2007
Yufil писал(а): 27 Май 2017, 11:17
Тогда самый простой вариант - сделать Update Procedure типа Source и передать ей параметр каким-то образом (если шаблон допускает, то напрямую, если нет - через какую-то глобальную переменную)
И никаких игрищ с OMIT
Спасибо Yufil, попробую для сравнения

Одна browse много update form
Добавлено: 28 Май 2017, 18:45
finsoftrz
Я тоже через source процедуру делаю. В данном случае, без параметра, анализируется тип документа и вызывается соответствующая форма. А EIP вообще никогда не использую. Формы всякими шаблонами автоматически распознаются и навешивается разный функционал (логические блокировки, логирование, распределение прав доступа и т.п.). С EIP, наверно, тоже можно что-то придумать, но для единообразия не стал заморачиваться... Когда некоторые клиенты переходили с 1С, думал, будут роптать, там при редактировании документов раньше был только EIP. Нет, не роптали, быстро привыкли, им даже удобнее показалось. Единственная хитрость, когда жмыкают по колонке в броузе, форма открывается с автоматическим позиционированием на нужное поле. Это шаблоном соответствующим обеспечивается.