создание продажи
Скрипты
Разработка

Как вызвать диалог при создании записи?

Добрый день!

Реализовала открытие окна Продажа при нажатии на новую кнопку в карточке Задачи. Задача закрывается, новая Продажа открывается.
Когда создается какая-либо запись из контекстного меню реестра, то при сохранении такой записи выдается сообщение "Перейти к созданной записи?". Как мне вызвать такой диалог и переход к реестру при сохранении моей новой продажи, созданной из карточки задачи?

Нравится

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

для вызова диалога и сохранения попробуйте:

[javascript]
if (ShowConfirmationDialog("Перейти к созданной записи?") == wmrYes) {
SaveChangesWithCheck(Self, BaseDBEdit);
}
[/javascript]

Мне кажется, что сейчас и так должен появляться диалог, тк он как раз появляется когда работает SaveChangesWithCheck(Self, BaseDBEdit). Почему же он появляется при создании продажи из контекстного меню у контрагента?

Причина появления диалога в следующем: если проанализировать обработку события OnNotify раздела "Контрагенты", мы увидим такие строки:

[javascript]
if ((Message == 'MSG_OK') && (SenderCode == 'wnd_OpportunityEdit')) {
var DetailWindow = wndOpportunityDetail.Window;
ProcessNotifyMessage('wnd_OpportunitiesWorkspace', DetailWindow, Sender,
Message, Data);
return;
}
[/javascript]

Данный код выполняется после нажатия кнопки "ОК" в карточке редактирования продажи, созданной по действию из контекстного меню (окно редактирования посылает сообщение разделу). Аналогичные блоки есть и для задач, и для контактов.

Если же проанализировать функцию ProcessNotifyMessage, легко увидеть, что в процессе её работы отправляется нотификация главному окну wnd_Main. А в обработчике OnNotify этого окна вызывается функция AskAboutGoto, которая имеет вид:

[javascript]
function AskAboutGoto(Sender) {
if (ShowConfirmationDialog("Перейти к созданной записи?") == wmrYes) {
var RecordID = Sender.Attributes('RecordID');
var WorkspaceWindowCode = Sender.Attributes('WorkspaceWindowCode');
ShowWorkspace(WorkspaceWindowCode, RecordID);
}
}
[/javascript]

Она и вызывает диалог для подтверждения перехода к записи.

Да, все нашла.
При вызове окна редактирования Продажи NotifyObject присваиваю значение 'wnd_TaskWorkspace', но почему-то когда доходит до NotifyObject.Notify(...) не попадаю в wnd_TaskWorkspaceOnNotify.

Можете уточнить, как именно Вы устанавливаете значение для NotifyObject? Это должно быть окно. Если Вы делаете так:

[javascript]
Window.Attributes('NotifyObject') = 'wnd_TaskWorkspace';
[/javascript],

то ничего не получится.

Кроме того, в вышеприведённом примере раздела "Контрагенты" функционал реализован через действия, а у Вас - через

"Kat" написал:при нажатии на новую кнопку в карточке Задачи
. В этом случае лучше использовать обработку события OnNotify в скрипте карточки задачи.

Делаю так:
Window.Attributes('NotifyObject') = Services.GetNewItemByUSI('wnd_TaskWorkspace')
С окном задачи не очень удобно, мне кажется, потому что оно закрывается перед открытием продажи.

Так тоже не совсем верно: Вы создаёте новый экземпляр раздела, а в атрибут нужно передавать уже проинициализированный раздел.

Попробуйте из окна редактирования добраться к разделу "Задачи" и передать его в атрибут NotifyObject. Думаю, можно так:

[javascript]
Window.Attributes('NotifyObject') = Self.Attributes('NotifyObject').Attributes('WorkspaceWindow');
[/javascript]

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