при выборе Контрагента в справочнике Торговая точка открывались только записи, связанные с этим контрагентом
1.в дизайне процессов при переносе элемента (например Читать данные) не открывается карточка для редактирования этого элемента, ничего не могу сделать
2. Есть объект Заказ
У него есть поля-справочники Контрагент и Торговая точка(Торговая точка это по сути деталь Контрагента, у Контрагента может не быть Торговых точек )
Подскажите как сделать в карточке редактирования Заказа, чтобы при выборе Контрагента
в справочнике Торговая точка открывались только записи, связанные с этим контрагентом
3.При создании Заказа торговая точка может не указываться, запись создаётся, но при повторном открытии выскакивает ошибка
я так понимаю ругается на то, что не найдена запись ....как быть?
Нравится
Здравствуйте Ольга.
"Найданова Ольга" написал:Подскажите как сделать в карточке редактирования Заказа, чтобы при выборе Контрагента
в справочнике Торговая точка открывались только записи, связанные с этим контрагентом
Наложить фильтр на датасорс при открытии справочника. Т.е. на событии Init зарегистрировать событие
Page.[LookupEdit].PrepareFilters => (sender, evtArgs) { evtArgs.Filters.Add(new Dictionary<string, object> { // Add Account Filter Here }); };
"Найданова Ольга" написал:3.При создании Заказа торговая точка может не указываться, запись создаётся, но при повторном открытии выскакивает ошибка
Так с одного CallStack'а мало что можно сказать. Попробуйте описать последовательно действия, которые Вы выполняли.
На сколько я понимаю коробка FMCG???
Спасибо.
"Бабуков Андрей Александрович" написал:На сколько я понимаю коробка FMCG???
Не в курсе, знаю только BPMonline v.5.4.
при нажатии на справочник выходит сообщение
в Дизайнере страниц для поля Торговая точка указываю справочник Торговая точка
"Бабуков Андрей Александрович" написал:Наложить фильтр на датасорс при открытии справочника. Т.е. на событии Init зарегистрировать событие
Page.[LookupEdit].PrepareFilters => (sender, evtArgs) {
evtArgs.Filters.Add(new Dictionary {
// Add Account Filter Here
});
};
Не совсем поняла, я могу это код вставить в обработчик события выбора Контрагента(LookupEdit1Change1)
Добрый день.
"Найданова Ольга" написал:при нажатии на справочник выходит сообщение
Вам необходимо задать значение для отображения в объекте справочника Торговая точка, во всех свойствах:
"Найданова Ольга" написал:Не совсем поняла, я могу это код вставить в обработчик события выбора Контрагента(LookupEdit1Change1)
Нет, код необходимо добавлять на обработчик события Init карточки редактирования:
Здравствуйте Ольга!
Попробуйте для начала создать переменную типа Guid и вкладывать эту переменную в rightExpression.
Если не получится, попробуйте отладить приложение, вставив перед "e.Filters.Add(..." строку
System.Diagnostics.Debugger.Break();
Про отладку конфигурации можете прочитать здесь.
Спасибо.
"Бабуков Андрей Александрович" написал:Попробуйте для начала создать переменную типа Guid и вкладывать эту переменную в rightExpression.
Сделала так
object value = Page.AccountEdit.Value; Guid accountId = (value == null || value.ToString().Equals(string.Empty)) ? Guid.Empty : Guid.Parse(value.ToString()); if (!Page.AccountEdit.Value.Equals(Guid.Empty)) { System.Diagnostics.Debugger.Break(); e.Filters.Add(new Dictionary<string, object> { {"comparisonType", FilterComparisonType.Equal}, {"leftExpressionColumnPath", "Account.Id"}, {"useDisplayValue", false}, {"rightExpressionParameterValues", new object[] {accountId.ToString()}}}); };
В студии открыла код своей страницы, поставила брейкпойнт в скрипте от события Init. К процессу тоже присоединилась, но после этого он пишет, что "в настоящий момент попадания в точку останова не произойдёт". Далее в моём понимании при открытии нужной страницы я должна перейти в эту точку, но естественно этого не происходит
Здравствуйте Ольга!
Да, намутили Вы воды в коде. К чему такие сложности? Замените существующий код на:
Guid accountId = (Guid)Page.AccountEdit.Value; if (!accountId.Equals(Guid.Empty)) { System.Diagnostics.Debugger.Break(); e.Filters.Add(new Dictionary<string, object> { {"comparisonType", FilterComparisonType.Equal}, {"leftExpressionColumnPath", "Account.Id"}, {"useDisplayValue", false}, {"rightExpressionParameterValues", new object[] {accountId}}}); };
Далее, чтобы вызвался отладчик, Вам не нужно ставить бряку. Он автоматически подключится, если accountId будет не равен Guid.Empty. Вопрос в том, что Вы используете свою конфигурацию, а бряку ставите в исходнике какой-то другой конфигурации. Пгоэтому, Вам VS и сообщает о том, что брейкпоинт не отработает никогда. Просто подключитесь дебаггером к процессу IIS. А лучше, вынесите точку code-debug перед условием "if".
Стандартных компонентов студии должно хватать для отладки.