Свои карточки редактирования для разных типов документов

Доброго дня!

Задача наверняка довольно тривиальная, но для меня, как для не совсем опытного разработчика, она не так проста.

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

Буду очень признательна за любые ссылки и помощь.

Версия Террасофт СРМ 3.4.0

Нравится

2 комментария

У кнопки есть свойство PopupMenu, в результате выбора которого появляется стрелочка около кнопки, в которой будет выпадать список документов (Для меню надо создать ActionMenu в невизуальных свойствах) (Возьмите в качестве примера кнопку "Удалить")
На записи в меню надо повесить скрипты открытия окон в зависимости от выбора на кнопке

var EditWindowUSI = 'wnd_Window';
var Attributes = GetNewDictionary();
Attributes.Add('NotifyObject', Self);
ShowEditWindowEx(EditWindowUSI, Attributes);

Но довольно плохо сказать на кнопку "Добавить". Карточку же надо будет открывать, можно копировать запись, а значит надо будет прописать выбор окон на "Изменить" (amiEditAction) и "Копировать" (amiCopyAction), и это не через PopumMenu, а универсально, смотреть тип и открывать.

как вариант - сделать отдельные представления (DataGridView) для разных типов документов - и открывать окна, исходя из того, которое из них активно:

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;
	}
}

Но анализ типа документа при открытии надо делать, если вы хотите видеть все\несколько типов сразу в одном гриде

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