Нужно добавить в карточку редактирования "Заявки" новый тип заявки (в моем случае - тип "Отгрузки клиентам"). При выборе именно этого типа пользователем должны стать доступны для редактирования (или отобразиться, оба варианта устрят) новые добавленные мною поля, присущие только этому типу.
Как это реализовать?
Насколько я понял, проверка значения поля осуществляется с помощью функции ValAsBool(), которая возвращает значение true или false для переданного ей параметра, сопоставляя его с записями в массиве структур ValAsBool. Так вот как добавить в эту структуру новое значение поля с соответствующим ему булевым значением?
Может быть я иду не в том направлении? Тогда подскажите, как реализовать поставленную передо мной задачу?
В принципе, данный функционал можно реализовать посредством пользовательских полей. Они отображаются для заданных типов записей.
Настройка пользовательских полей детально описана в книге Руководство Администратора, в главе 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;//конец условия}