Коллеги, добрый день. 

 

Столкнулся с проблемой. 

1) На форме обращения дублируется поле "Сервисный договор", несмотря на то, что в конструкторе раздела отображается только одно 

2) Порядок полей на форме не соответствует порядку полей в конструкторе

Бизнес-правила отключил. 

Конфигурацию перекомпилировал полностью. 

Скрины вложением

Помогите понять в чём проблема ? 

 

Нравится

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

Это может быть из-за того, что расположение полей задано в схеме кодом, слишком сложным для разбора мастером разделов. Откройте схему CasePageV2 и поищите упоминания этого поля в пакете Custom с Вашими изменениями и в других пакетах.

Зверев Александр,

Предлагаете его переопределить?

Когда Вы меняете в мастере, оно и так переопределяется, в пакете Custom создаётся CasePageV2 с новым порядком полей. Но, видимо, в одном из пакетов выше по иерархии описано иначе и конфликтует.

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

Добрый день!

Подскажите, каким образом можно найти и переопределить обработчики событий стандартных контролов(например, кнопки Сохранить)?
Возможно ли изменить их стиль?

Спасибо!

Нравится

1 комментарий

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

По сути это две задачи:
1) Изменить стиль (BasePageV2CSS)
2) Изменить обработчики (метод onCardAction, который вызывается при нажатии на кнопку "Сохранить")

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

Намагаюся розібратися зі скриптом [PageLoadCompleteScriptTask].
В ньому використовуються значення полів, взяті наступним чином:

Page.ProductCategoryEdit.Value;
Page.HasAnalogsCheckBox.Checked;
Page.IsAdditionalHandlingRequiredCheckBox.Checked;
...

Значення отримую нульові, або інакше - в них ще не відобразилися значення з DataSource.
Якщо зчитати відповідні значення з DataSource, то все гаразд, є значення.
Але таке застосування не буде коректним.

Коли значення описаних полів ([Page...]) використовую у відповідному обробнику, що був описаний в [InitScriptTaskExecute], то на цьому етапі значення вже присутні.

Запитання: в який момент прописуються значення описаних полів ?
Куди потрібно прописувати логіку, яка спирається на вказані значення ?
Чи, що треба зробити, щоб поля гарантовано отримали свої значення ?

Нравится

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

Игорь, здравствуйте!

"Ігор Андрусенко" написал:в який момент прописуються значення описаних полів ?

Значение интерфейсных полей изначально прописываются на клиентской части при помощи DataSource. Определение значений на сервере происходит, когда страница вернется с клиентской части.

"Ігор Андрусенко" написал:Куди потрібно прописувати логіку, яка спирається на вказані значення ?

Логику можно прописывать, например, на событиях изменений значений полей, на подготовку фильтров Lookup полей.
Не могли бы Вы описать логику применения значений полей и почему Вас не устраивает использование DataSource?
Спасибо

"y.perevjazko" написал:Не могли бы Вы описать логику применения значений полей и почему Вас не устраивает использование DataSource?

Мабуть справа в організації процесу оновлення полів.

На карточці заявки на внесення змін є пара полів типу дата.
Значення дат розраховуються в методі SetDeadlineDate().

Якщо метод запускається з якого-небудь обробника, то значення в полях фіксуються, в разі якщо обробник відпрацьовує.

А якщо метод запускається в скрипті PageLoadCompleteScriptTaskExecute,
то значення залишаються не зафіксованими.

Я так розумію, що обробник відпрацьовує по AJAX і дає миттєвий результат, а результат відпрацювання по скрипту фіксується після ситуативного надсилання даних на сервер.

Тому зараз запитання я б сформулював наступним чином:
Як заставити здійснити відправку даних на сервер не через обробник зміни значення якогось поля, а в примусовому порядку, у скрипті PageLoadCompleteScriptTaskExecute ?

Сделайте методу булевский параметр, на PageLoadComplete запускаете SetDeadlineDate(true), из других мест — SetDeadlineDate(false). Внутри метода в зависимости от параметра пишите или в поле датасорса (на PageLoadComplete), или в контрол на карточке.

Дещо "косим" способом запускаю метод:
вставив метод SetDeadlineDate() у скрипт обробки повідомлення SetTaskOwnerButtonClick (натиснення кнопки "Установить Content-менеджера").
При натисненні кнопки метод відпрацьовує, візуально значення змінюється.

Але далі отримав наступну мороку:
коли при першому натисненні кнопки вичитую його обома способами:

Page.DeadlineDateEdit.Value
Page.DataSource.ActiveRow.GetTypedColumnValue("DeadlineDate");

то отримую незмінене значення, не те, що в цей момент видно в полі карточки.
Вже коли вікно вибору менеджерів закриваю і потім повторно натискаю кнопку, тоді вичитується значення, яке було підставлене при попередньому натисненні-відпрацюванні SetDeadlineDate().

Це я вже з огляду на даний факт писав про AJAX.
Тому й питання щодо примусової відправки даних на сервер залишається актуальним, бо необхідність двічі розкривати вікно вибору Content-менеджерів навряд чи порадує виконавців.

Что это за окно выбора менеджеров? Оно открывается по кнопке? Как оно связано с полем?
Какой это продукт?

Так по кнопці відкривається вікно OwnerSelectionGridPage
З полем воно пов"язане таким чином:

UserConnection.SessionData["customDeadLine"] = Page.DeadlineDateEdit.Value;

Продукт: ServiceDesk
Я так розумію, що це додаткова розробка.

Але зважаючи на те, що при першому натисненні кнопки значення поля DeadlineDateEdit залишається неоновленим, то й у вікно передається неактуальне значення.
При другому - актуальне.

Возможно, проблема в том, что это поле некорректно заполнилось в другом месте на карточке, где ему присваивалось значение.

Рекомендуется всюду присваивать через

Page.DataSource.ActiveRow.SetColumnValue("DeadlineDate", DeadlineDate);

а не

Page.DeadlineDateEdit.Value = DeadlineDate;

Значення прописується ось так:

Page.DeadlineDateEdit.SetValue(deadlineDate);

Я так собі уявляю процес:
Значення прописується на боці клієнта, без відправки на сервер.
Тому не обновляється DataSource і, відповідно, зчитується не оновлене значення.
А при відкритті/закритті вікна по кнопці відбувається відправка даних, тому при наступному відпрацюванні SetDeadlineDate() показує, що значення вже оновлені.

А если заменить на Page.DataSource.ActiveRow.SetColumnValue ?

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

К примеру есть карточка, нужно из неё открыть форму, передав в неё параметр из карточки.
Реализовать передачу параметров в окно можно посредством подобного кода:

var EditWindowUSI = WindowUSI;
var Attributes = GetNewDictionary(); //массив атрибутов
Attributes.ADD('RecordID', RecordID);

var DefaultValues = GetNewDictionary(); //массив значений по умолчанию
DefaultValues.ADD('InvoiceDate', InvoiceDate);

ShowEditWindowEx(EditWindowUSI, Attributes, DefaultValues);

Нравится

Поделиться

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

Добрый день коллеги!

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

код обработчика события onKeyDown примерно такой:

function edtEditionsOnKeyDown(Control, Key, Shift) {
switch (Key.Value) {
case VK_UP:

Self.FocusedControl = edtText;
break;
case VK_DOWN:

Self.FocusedControl = edtText1;
break;
}
}

Внутрь события проваливается , но фокус не перемещается ни при каком раскладе.

Если любыми другими клавишами (ентер, бекспейс,ф1, ф2) то фокус нормально перемещается
как решить?

Нравится

1 комментарий

Здравствуйте
Воспользуйтесь событием OnKeyUp, стрелки вверх и вниз передают фокус передается контролам.

function edtTest2OnKeyUp(Control, Key, Shift) {
if (Key.Value == 40)
{
MessageBox(Key.Value);
 
Self.FocusedControl =  edtTest1;
}
else
{
MessageBox(Key.Value);
Self.FocusedControl =  NumericEdit;
}
Показать все комментарии

Для того, чтобы изменить динамически Caption формы отчета, Вам необходимо внести изменения в обработчик события OnPreview формы отчета.

А именно,

ReportPreviewer.ParentComponent.ParentWindow.WindowCaption = "Test";

Вместо "Test" нужно внести требующееся название формы отчета.
Сохраните внесенные изменения, протестируйте работоспособность системы.

Данный функционал можно использовать, например в том случае когда возникает необходимость реализовать зависимость названия генерируемого отчета от пользователя в системе. Например, "Отчет по контрагентам Мельниковой Екатерины" или "Отчет по контрагентым Иванова Ивана"...

Желаю удачи!

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

Нравится

Поделиться

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