Хочу сделать функцию добавления записи в модальном режиме и возвратом null или RecordID
Хочу сделать функцию добавления записи и возвратом null или RecordID
function AddRecordByWnd(WindowName) {
var Attributes = GetNewDictionary();
Attributes('RecordID') = GUID_NULL;
var DefaultValues = GetNewDictionary();
var EditWindow = Services.GetNewItemByUSI(WindowName);
SetAttributesByDictionary(EditWindow, Attributes);
SetAttribute(EditWindow, 'DefaultValues', DefaultValues);
EditWindow.Prepare();
ModalResult = EditWindow.ShowModal();
if (ModalResult == wmrOK) {
return EditWindow.Attributes.Values('RecordID');
} else {
return null;
}
}
Все вроде бы работает хорошо, но с одним но.
Вызываю так:
AddRecordByWnd('wnd_Account_Edit')
Появляется карточка, ничего не заполняю, жму OK.
Выдается сообщение, что мол поле не заполнено. Кликаю в сообщении OK.
Карточка закрывается и фугкция возвращает RecordID не существующей записи.
Внимание, вопрос: почему карточка закрывается если она не заполнена корректно, хотя выводится сообщение что она не заполнена?
Нравится
Здравствуйте, Евгений!
После нажатия на кнопку "ОК" в окне о незаполненных обязательных полях, мы попадаем в тело основной функции и ModalResult == wmrOK?
В таком случае, тут нужно делать дополнительную проверку.
По идее как работает это в стандартном режиме, так это окно не закрывается пока не заполниш все или не нажмешь отмена. Не?
Здравствуйте, Евгений.
Дело в том, что после нажатия на кнопку "ОК" в окне предупреждения о том, что заполнены не все поля, в случае с модальным показом окна, карточка закрывается с результатом wrmOK, после чего мы попадаем в тело основной функции.
Передам данную информацию разработчикам для анализа.
В данный момент предлагаю Вам дополнить Вашу логику проверкой того, была ли добавлена запись в датасет либо нет, к примеру:
[javascript]
//-----------------------------------------------------------------------------
// scr_Test
//-----------------------------------------------------------------------------
function Main()
{
AddRecordByWnd('wnd_AccountEdit');
}
function AddRecordByWnd(WindowName) {
do
{
var Attributes = GetNewDictionary();
Attributes('RecordID') = GUID_NULL;
var DefaultValues = GetNewDictionary();
var EditWindow = Services.GetNewItemByUSI(WindowName);
SetAttributesByDictionary(EditWindow, Attributes);
SetAttribute(EditWindow, 'DefaultValues', DefaultValues);
EditWindow.Prepare();
var USI = EditWindow.ComponentsByName('dlData').Dataset.USI;
var count = checkCount(USI);
ModalResult = EditWindow.ShowModal();
}
while (checkCount(USI) == count)
if (ModalResult == wmrOK) {
return EditWindow.Attributes.Values('RecordID');
} else {
return null;
}
}
function checkCount(USI)
{
var Dataset = Services.GetNewItemByUSI(USI);
Dataset.Open();
var count = Dataset.RecordsCount;
Dataset.Close();
return count;
}
[/javascript]