"Достать" окно

Здравствуйте!
Данный инцидент уже разбирается в техподдержке, но в виду срочности (а когда у начальства что-то бывает не срочно?), попрошу совета еще и здесь.
Ситуация такая:
У окна проекта есть функция SetVisibleFields, которая вызывается на OnPrepare окна и на DataChange, если меняется тип проекта. Но при вызове окна из БП к моменту отработки OnPrepare тип проекта еще не установлен, а тип устанавливается программно в зависимости от типа продажи и передается в параметрах элемента диаграммы. Получается, что в момент смены типа вызова нужной функции опять не происходит. Очень важно знать, как можно вызвать эту функцию из БП. А то окно открывается с нужным типом, но полями по умолчанию.

Нравится

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

Алена, пишу Вам и сюда, и на 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
1
2
В самой карточке Проекта (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 типа проекта "Дизайн"

Ольга, интересный ход!
Алексей, спасибо! Сделала так, правда Тип тоже передавала в атрибуты окна и брала уже оттуда.

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