Здравствуйте!
Данный инцидент уже разбирается в техподдержке, но в виду срочности (а когда у начальства что-то бывает не срочно?), попрошу совета еще и здесь.
Ситуация такая:
У окна проекта есть функция SetVisibleFields, которая вызывается на OnPrepare окна и на DataChange, если меняется тип проекта. Но при вызове окна из БП к моменту отработки OnPrepare тип проекта еще не установлен, а тип устанавливается программно в зависимости от типа продажи и передается в параметрах элемента диаграммы. Получается, что в момент смены типа вызова нужной функции опять не происходит. Очень важно знать, как можно вызвать эту функцию из БП. А то окно открывается с нужным типом, но полями по умолчанию.
Нравится
Алена, пишу Вам и сюда, и на web-форму. Прочтите где-нибудь :)
На function Initialize(Window) в wnd_ProjectEditScript окна карточки проекта.
var DefaultValues = Self.Attributes('DefaultValues');
if (Assigned(DefaultValues) && DefaultValues('WorkflowItemID')) {
debugger;
}
В проверку введите необходимо условие, при котором поля будут доступными или видимыми.
Спасибо большое, Игорь!
С веб-формой ужасные проблемы - доступ появляется на несколько минут, а потом снова пропадает на несколько часов.
Добрый день, Алена.
Сложности работы web-формы были связаны с техническими проблемами, которые наши системные администраторы уже исправили.
Прошу пробовать авторизоваться.
прошу прощения, что так долго - не было возможности протестировать.
Наконец-то получилось.
В этот момент (Initialize(Window)) еще не известен тип Проекта, от которого зависит видимость полей.
Попробовала то же самое вызывать на OnShow - та же картина.
Подскажите, в какой момент в карточку прописываются значения, которые установлены в параметрах элемента (открытие карточки) бизнес-процесса?
Смотрю в код // wa_OpenWindowScript, там по логике сначала выполняется
SetAdditionalWindowAttributes(Window, ActionItem);
а потом уже Window.Prepare();
А на практике получается, что на Prepare Тип еще null. А когда карточка видна - там уже нужный тип из параметра.
Добрый день, Алёна!
сталкивалась недавно с похожей ситуацией -- решение было такое:
перед открытием карточки проекта сначала скриптом его создаем, заполняем нужные значения (тип, состояние и т.д. -- в частности те, от которых зависит вид окна), сохраняем и передаем ИД в соответствующий параметр диаграммы. тогда при открытии карточки все отображается так, как нам надо (понятно, что надо выбрать пункт не "создать новую запись", а "изменить существующую").
Здравствуйте Алена,
Предлагаю следующий вариант, в елемент Открытие окна в Вашем БП, добавим атрибут StartedFromWF
В самой карточке Проекта (wnd_ProjectEditScript) на событие Initialize, допишим логику заполнения типа
... if(GetAttribute(Window, 'StartedFromWF') == 'true') { Dataset.DisableEvents(); Dataset.Values('TypeID') = '{68F3F059-D3FE-4A56-A941-FB6FA0E0FEA8}'; Dataset.EnableEvents(); } ...
{68F3F059-D3FE-4A56-A941-FB6FA0E0FEA8} - ID типа проекта "Дизайн"
Ольга, интересный ход!
Алексей, спасибо! Сделала так, правда Тип тоже передавала в атрибуты окна и брала уже оттуда.