Обработка событий карточки редактирования

Здравствуйте!

Нужно добавить в карточку редактирования "Заявки" новый тип заявки (в моем случае - тип "Отгрузки клиентам"). При выборе именно этого типа пользователем должны стать доступны для редактирования (или отобразиться, оба варианта устрят) новые добавленные мною поля, присущие только этому типу.
Как это реализовать?
Насколько я понял, проверка значения поля осуществляется с помощью функции ValAsBool(), которая возвращает значение true или false для переданного ей параметра, сопоставляя его с записями в массиве структур ValAsBool. Так вот как добавить в эту структуру новое значение поля с соответствующим ему булевым значением?
Может быть я иду не в том направлении? Тогда подскажите, как реализовать поставленную передо мной задачу?

Нравится

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

Алексей, добрый день.

В принципе, данный функционал можно реализовать посредством пользовательских полей. Они отображаются для заданных типов записей.
Настройка пользовательских полей детально описана в книге Руководство Администратора, в главе 4.3. Настройка пользовательских полей, на странице 147:
http://www.training.terrasoft.ru/system/files/TS_AG_3.4.0.pdf

Как с помощью данного механизма можно настроить динамическую блокировку для редактирования или отображение одних полей по выбору значений в других полях? Данный сервис не представляет вообще никакой возможности обработки событий. Вопрос остался открытым.

Алексей,

Создавая пользовательские поля, Вы определяете тип записи, для которых они будут отображаться.
Если данный механизм Вам не подходит, используйте событие OnDatasetDataChange невизуального элемента dlData (функция dlDataOnDatasetDataChange в сервисе wnd_OrderEditScript) и конструкцию switch-case:

switch (DataField.Name) { //изменяемое поле
	case 'TypeID': //если изменилось поле Тип
		if (Dataset.Values('TypeID') == 'Идентификатор типа Отгрузки клиентам') { //если значение поля Тип = Отгрузки клиентам
			edtNewAddedField.IsEnabled = true; //новый добавленный контрол видим
		} else { //иначе
			edtNewAddedField.IsEnabled = false; //новый добавленный контрол невидим
		}
		break; //конец условия
}

Maxim, спасибо, я понял, разобрался

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