Доброго дня!
Задача наверняка довольно тривиальная, но для меня, как для не совсем опытного разработчика, она не так проста.
Итак, что нужно сделать: у нас есть несколько типов документов, сильно отличающихся друг от друга, поэтому было принято решение сделать отдельные карточки редактирования для каждого типа. При этом при нажатии на кнопку "Добавить" в основном реестре раздела Документы должен появляться выпадающий список с возможностью выбора нужного типа документа и открытия соответствующей карточки редактирования. Как создать карточку редактирования понятно, а вот что вешать непосредственно на обработчик события - нажатия кнопки, не понятно.
Буду очень признательна за любые ссылки и помощь.
Версия Террасофт СРМ 3.4.0
Нравится
У кнопки есть свойство PopupMenu, в результате выбора которого появляется стрелочка около кнопки, в которой будет выпадать список документов (Для меню надо создать ActionMenu в невизуальных свойствах) (Возьмите в качестве примера кнопку "Удалить")
На записи в меню надо повесить скрипты открытия окон в зависимости от выбора на кнопке
[javascript]
var EditWindowUSI = 'wnd_Window';
var Attributes = GetNewDictionary();
Attributes.Add('NotifyObject', Self);
ShowEditWindowEx(EditWindowUSI, Attributes);
[/javascript]
Но довольно плохо сказать на кнопку "Добавить". Карточку же надо будет открывать, можно копировать запись, а значит надо будет прописать выбор окон на "Изменить" (amiEditAction) и "Копировать" (amiCopyAction), и это не через PopumMenu, а универсально, смотреть тип и открывать.
как вариант - сделать отдельные представления (DataGridView) для разных типов документов - и открывать окна, исходя из того, которое из них активно:
[javascript]
function btnAddOnClick(Control) {
UpdateWindowEditByDGV(grdData.ActiveView.Name);
...
}
function UpdateWindowEditByDGV(ActiveView) {
switch (ActiveView) {
case 'dgvAviaTickets':
BaseGridArea.AddDataDefaultValues('DocumentTypeID') = '{4160920E-B12C-468D-ABEA-F73A8F643DD9}'
BaseGridArea.EditWindowUSI = 'wnd_DocumentEdit';
break;
case 'dgvVoucher':
BaseGridArea.AddDataDefaultValues('DocumentTypeID') = '{3E9E6891-1CB5-4DDB-8ECA-D941DD4F241E}'
BaseGridArea.EditWindowUSI = 'wnd_DocumentEdit';
break;
case 'dgvGreenCard':
BaseGridArea.AddDataDefaultValues('DocumentTypeID') = '{7055DEEB-399B-40F6-B782-F61750F58B70}';
BaseGridArea.EditWindowUSI = 'wnd_GreenCard';
BaseGridArea.AddDataDefaultValues('GCNumberCard') = 'RUS/002/';
break;
default:
BaseGridArea.AddDataDefaultValues('DocumentTypeID') = ''; // todo подставить АКТ
BaseGridArea.EditWindowUSI = 'wnd_DocumentEdit';
break;
}
}
[/javascript]
Но анализ типа документа при открытии надо делать, если вы хотите видеть все\несколько типов сразу в одном гриде