Скрипты
Разработка

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

Доброго дня!

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

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

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

Версия Террасофт СРМ 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;
	}
}

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

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