Возможно ли узнать каким образом открыто окно редактивания - для создания новой записи или для редактирвания уже существующей. Это необходими для принятие решения по поводу вида окна.

Нравится

10 комментариев

Можно использовать состояние Dataset:
Dataset.State
dstInsert - вставка
dstEdit - редактирование
Либо вызывать различные окна в зависимости от нажатой кнопки редактирования.

По какому событию можно использовать состояние Dataset?

После его открытия, т.е. на onPrepare окна, но Вам может не подойти этот вариант, т.к. окно в этот момент уже прорисовывается. Потому и предложил завязываться на кнопках.

Если нужно до прорисовки то можно еще так попробовать (не лучший вариант):
переопределить базовое событие OnPrepare() у окна

function wnd_ContactEditOnPrepare(Window) {
   if (Window.Attributes('RecordID') == GUID_NULL) {
      //идет вставка, выполняем действия
 
   }
   wnd_BaseDBEditOnPrepare(Window);
}

onPrepare и функции обслуживание кнопок находяться в скрипте wnd_BaseGridArea.
То есть нужно их перенести в "локальный" скрипт?

Создайте скрипт, укажите его для своего окна (свойство Script) и пропишите в нем необходимые события.

Спасибо большое!

Этот код работает лучше не придумашь.

function wnd_ContactEditOnPrepare(Window) {
if (Window.Attributes('RecordID') == GUID_NULL) {
//идет вставка, выполняем действия

}
wnd_BaseDBEditOnPrepare(Window);
}

Самое обидное, что все элементы знакомы, но соединить ... Еще раз спасибо.

Создайте скрипт, укажите его для своего окна (свойство Script) и пропишите в нем необходимые события. - Тоже хорошая идея. По свободе попробую. Спасибо.

По-моему, коллекция Attributes также содержит признак IsNew, который устанавливает BaseDBEdit.

"Раловец Ольга" написал:По-моему, коллекция Attributes также содержит признак IsNew, который устанавливает BaseDBEdit.

Да, содержит. Спасибо.

Показать все комментарии