Проблема с Lookup Grid. После поднятия Lookup в Edit форме место нормальных значении выжы ИД. Делаешь refresh и получаеш уже нормальные значение.
В чем тут проблема
Версия 3.4.0.163

Нравится

7 комментариев

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Альбертас!

В продолжение телефонного разговора - будем ожидать от Вас копию базы данных по обращению 0216348.

Альбертас, пересмотрите, пожалуйста, все обработчики событий датасета в скрипте формы и скрипте датасета, если таковой есть. Сравните их со коробочной конфигурацией. Либо не хватает одного из стандартных обработчиков, либо в него дописан код, который вызывает "тихий свал", и корректное исполнение скрипта прекращается.

"Безродный Андрей" написал:

Здравствуйте, Альбертас!

В продолжение телефонного разговора - будем ожидать от Вас копию базы данных по обращению 0216348.


"Безродный Андрей" написал:

Здравствуйте, Альбертас!

В продолжение телефонного разговора - будем ожидать от Вас копию базы данных по обращению 0216348.


Получили ли бакуп?

Альбертас, речь идет о файле 0216348_TSA_PLASTA_340_LT.bak ?

"Безродный Андрей" написал:

Альбертас, речь идет о файле 0216348_TSA_PLASTA_340_LT.bak ?


Да

Альбертас,

причина подобного поведения была в том, что для колонок, которые в гриде отображались как "Datafield is disabled", в датасете не установлено свойство "Display Field".

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

Доброго времени суток, коллеги!

Есть страница с 2-мя Lookup'ами - "Объекты" и "Поля". Пользователь в первом выбирает объект системы, например Контакт, а во втором нужно в выпадающем списке отобразить все поля этого объекта. Вобщем что-то подобное построителю фильтров.

Подозреваю, что можно выудить эту всю информацию из таблицы SysSchema из колонки MetaData аналогичным способом, как описывалось тут. Или все-таки есть более грамотные варианты?

Нравится

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

Грамотный вариант именно на вашу проблему не скажу (нет сейчас под рукой BPM), но я находил все поля объекта так.
Как привязать к lookup-полю не знаю, ибо lookup-полю нужно id и таблица, которых у нас. Если как-то можно получить column.id, то может это вам и подойдет. (возможно надо создать справочник, а также скрипт, который будет добавлять все недостающие поля по объектам в этот справочник).
Ну вообщем вот небольшая подсказка, которая может пригодиться, а может и нет.

Благодарю, в принципе вариант, ИМХО, более изящный, чем я указывал.

Constantine, в качестве примера Вы можете использовать Страницу редактирования графика.
Поле EntityLookupEdit - используется для вывода объектов, OrderByFieldEdit и OrderByFieldToolButton - для выбора поля объекта из списка полей.
Обратите внимание, для выбора поля используется не Lookup, а текстовое поле и кнопка. Логика обработки нажатия на кнопку в подпроцессе OrderByFieldToolButtonClickEventSubProcess.

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

Здравствуйте, у меня возник вопрос. Каким образом можна сменить отображаемое поле в поле-справочник. Тоесть если в обьекте указано отображаемое поле Название и везде в полях-справочник при выборе определенной записи, поле содержит Id и Name..вопрос стоит в следующем, как сделать так (к примеру) чтобы при выборе продукта, выводилось не его Имя а допустим Артикул (или еще какое-нибудь поле).

Заранее спасибо.

Нравится

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

У объекта есть возможность выбрать из списка другое первичное поле для отображения.
После смены может возникнуть проблема в объектах, которые на него ссылаются, но она решаема.

"Зверев Александр" написал:

У объекта есть возможность выбрать из списка другое первичное поле для отображения.

После смены может возникнуть проблема в объектах, которые на него ссылаются, но она решаема.


к сожалению мне нужно сменить отображаемое поле только для 1 карточки редактирования, для всех остальных карточек, отображаемое поле должно остаться преджним

Игорь, можно попробовать воспользоваться методом

SomeEdit.setValueAndText(Guid,displayValue)

У метода есть аналог на C# и на JavaScript, то есть Вы можете вызвать его как с помощью AddScript, так и напрямую.
В случае использования AddScript обратиться к нужному контролу можно по его Id, который можно узнать, воспользовавшись методом, описанным здесь.

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

Рассмотрим задачу: необходимо реализовать множественный выбор, а именно, данные записываются из окна MultiSelectData в поле Lookup в виде строки String через запятую. Затем при открытии окна MultiSelectData - эти данные из строки отображаются в окне в виде списка StringList.

Наиболее правильным решением поставленной Вами задачи будет следующий алгоритм:

1) Создать 2 поля с типом строка, в которой необходим множественный выбор, в одном хранить IDs (ExtraOfferingIDs), в другом Имена (ExtraOfferingName).

2) В окне редактирования записи создать управляющий элемент (контрол) с типом LookupControl, например edtExtraOfferingName.

3) При инициализации окна (например, функция Initialize), необходимо считывать данные из Датасета и записывать их в созданный управляющий элемент, например:

edtExtraOfferingName.Value = Dataset.Values('ExtraOfferingIDs');
edtExtraOfferingName.Text = Dataset.ValAsStr('ExtraOfferingName');

4) На событии управляющего элемента OnPrepareSelectWindow необходимо этому окну передавать следующие атрибуты – KeyValues, DisplayFieldValues:
Self.Attributes('KeyValues') = Dataset.Values('ExtraOfferingIDs');
Self.Attributes('DisplayFieldValues') = Dataset.ValAsStr('ExtraOfferingName');

5) В окне MultiSelectData хранятся значения типа StringList (список). Следовательно, заполнение Вашего окна полученными значениями предусматривает предварительного создания функции, которая будет преобразовывать строку (с несколькими данными, приписанных например через запятую) в список. Иначе в окно MultiSelectData Вы не сможете поместить никаких значений.
В том случае если подобной функции Вы не реализовывали, то ниже высылаю Вам пример подобной функции. Реализовать необходимую Вам функцию Вы можете по аналогии с предоставленным примером:

function CreateStringListByCommaString(CommaString) {
var StringsList = System.CreateObject('TSObjectLibrary.StringsList');
if (CommaString != null) {
var StringDataArray = CommaString.split(',');
for (var i in StringDataArray) {
var StrData = StringDataArray[i];
StringsList.Add(StrData);
}
}
return StringsList;
}

6) На событии OnNotify необходимо обработать полученные из wnd_MultiSelectData значения, и записать их в таблицу. Примерный программный код приведен ниже:

eyValues = Sender.Attributes('KeyValues');
KeyValuesStr = KeyValues.CommaText;
DisplayFieldValues = Sender.Attributes('DisplayFieldValues');
DisplayFieldValuesStr = DisplayFieldValues.CommaText;
Dataset.Values('ExtraOfferingIDs') = KeyValuesStr;
Dataset.Values('ExtraOfferingName') = DisplayFieldValuesStr;
edtExtraOfferingName.Text = DisplayFieldValuesStr;

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

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