Возможно ли узнать каким образом открыто окно редактивания - для создания новой записи или для редактирвания уже существующей. Это необходими для принятие решения по поводу вида окна.
Нравится
Можно использовать состояние Dataset:
Dataset.State
dstInsert - вставка
dstEdit - редактирование
Либо вызывать различные окна в зависимости от нажатой кнопки редактирования.
После его открытия, т.е. на onPrepare окна, но Вам может не подойти этот вариант, т.к. окно в этот момент уже прорисовывается. Потому и предложил завязываться на кнопках.
Если нужно до прорисовки то можно еще так попробовать (не лучший вариант):
переопределить базовое событие OnPrepare() у окна
function wnd_ContactEditOnPrepare(Window) { if (Window.Attributes('RecordID') == GUID_NULL) { //идет вставка, выполняем действия } wnd_BaseDBEditOnPrepare(Window); }
Создайте скрипт, укажите его для своего окна (свойство Script) и пропишите в нем необходимые события.
Спасибо большое!
Этот код работает лучше не придумашь.
function wnd_ContactEditOnPrepare(Window) {
if (Window.Attributes('RecordID') == GUID_NULL) {
//идет вставка, выполняем действия
}
wnd_BaseDBEditOnPrepare(Window);
}
Самое обидное, что все элементы знакомы, но соединить ... Еще раз спасибо.
По-моему, коллекция Attributes также содержит признак IsNew, который устанавливает BaseDBEdit.