Здраствуйте! У меня такая задача: В окне контрагентов есть кнопка при нажатии на которую выводиться окно с гридом. Как мне назначить этому окну окно редактирования?? Вот код вызова окна :
function amiShowAccountsOT7ReportOnExecute(ActionMenuItem) {
var resultWindow = Services.GetNewItemByUSI('wnd_ReportAccountsOT7');
resultWindow.Prepare();
resultWindow.Show();
}
Нравится
Если для окна 'wnd_ReportAccountsOT7' родительским окном является wnd_BaseGridArea, Вам достаточно перед Prepare установить атрибут EditWindowUSI : resultWindow.Attributes('EditWindowUSI') = 'EditWindow'.
rusultWindow.Attributes('EditWindowUSI') = '[Необходимое значение]'
(перед Prepare)
Ошибку выдает
[09.08.17 12.22.58.114] (E) Ошибка выполнения метода 'amiShowAccountsOT7ReportOnExecute'. OLE error 80020101 «Call Stack»
А если в скрипте этой формы прописать что нибудь типа форму редактирования?
rusultWindow.Attributes('EditWindowUSI') = 'wnd_AccountEdit'
А окно то создалось? И если создалось, то является ли то что получилось окном. Гляньте значение rusultWindow и если не пустое, то гляньте у него ServiceTypeCode.
Может точка с запятой ? может ошибка resultWindow rusultWindow
? я ошибся в первом коментарии.
Да действительно я сам тоже не посмотрел. Только теперь вылазиет окно отладки и все никакого эффекта. Непонятно почему? Может нужно еще что передать этому окну? Ведь там надо как то сделать чтобы оно по конкретной записи открывалось?
Это все умеет wnd_BaseGridArea. Убедитесь, чтобы у Вас запускался Prepare для базового окна. (Дайте листинг События OnPrepare для окна wnd_ReportAccountsOT7)
function wnd_ReportAccountsOT7OnPrepare(Window) {
scr_BaseGridArea.wnd_BaseGridAreaOnPrepare(Window);
}
Здравствуйте.
В этой ситуации, действительно, лучше посмотреть на сервисы.
Terrasoft Support Team.
Попробуйте сделать так:
function amiShowAccountsOT7ReportOnExecute(ActionMenuItem) { var Attributes = GetNewDictionary(); Attributes('EditWindowUSI') = 'wnd_AccountEdit'; Attributes('NotifyObject') = Self; ShowEditWindowEx('wnd_ReportAccountsOT7', Attributes); }
Нет так не работает) Выдает ошибку в скрипте scr_DB вот в этой функции
function GetDatasetFieldValue(Dataset, FieldName) {
if (!IsDatasetEmpty(Dataset)) {
var Field = Dataset.Datafields(FieldName);
return Field.Value;
} else {
return null;
}
}
на той строке которая выделена жирным)
Проверьте наличие в датасете поля, название которого передается в FieldName.
Стоп, мы назначаем гриду окно редактирования, или передаем в грид, показаный из карточки контрагента ссылку на эту карточку?
"Underscore a.k.a. _" написал:Стоп, мы назначаем гриду окно редактирования, или передаем в грид, показаный из карточки контрагента ссылку на эту карточку?
Первое)
"Кривонос Максим" написал: Attributes('EditWindowUSI' = 'wnd_AccountEdit';
Attributes('NotifyObject' = Self;
О, полезли баги из-за смайлов :)
Щас сервисы посмотрим...
У Вас там есть вьюха, я так понимаю. Дайте скрипт ее создания.
Максим, добрый день.
Возник вопрос, в какой момент должно возникать окно редактирования для Вашего грида. В стандартном функционале оно возникает при нажатии кнопки "Добавить", но в Вашем окне все кнопки грида скрыты вместе с содержащим их фреймом. Как только Вы установите хотя бы фрейму и кнопке "Добавить" свойства IsVisible = true, Вы сразу же сможете вызвать окно редактирования по кнопке "Добавить". По крайней мере, у меня получилось на предоставленных Вами сервисах.
По кнопке добавить вызываеться не редактирование а добавление новой записи) А при нажатии на кнопку изменить выдаеться окно отладки) притом там нет ни скрипта где произошла ошибка ни лог не выдаеться) И непонятно из за чего тут ошибка??????????
К сожалению, предоставленных Вами сервисов отчёта недостаточно для воспроизведения проблемы. Думаю, нужны ещё как минимум сервисы tbl_Account, tbl_Contract, tbl_Invoice и tbl_Cashflow. В общем, все те, которые используются в запросе отчёта.