19.01.2012, 08:16 | #1 |
Участник
|
Всем доброго времени суток. У меня есть такая непонятная проблема. Была поставлена задача, чтоб при закрытии возможности, а именно на 2 шаге (там где указывается причина закрытия возможности) cheсkbox с названием "Отменить существующие открытые задачи" по умолчанию был установлен галочкой (т.е. checked). Этот checkbox связан с таблицей Opportunity Entry (Операция возможности). На тестовой базе сделал - всё работает. перенесли эту формочку на рабочую базу клиента - не работает... Кто нибудь знает почему так, или сталкивался ли с таким? Из за чего это может быть и вообще в чём суть... Заранее всем спасибо.
|
|
19.01.2012, 09:41 | #2 |
Участник
|
Чудесато...
Может быть, перенесли не все объекты, которые редактировались? И что именно не работает - галка не ставится по умолчанию или задачи не отменяются? |
|
19.01.2012, 10:19 | #3 |
Участник
|
Перенесли все объекты. Редактировал только форму, но перенёс и таблицу на всякий случай, хотя я там ничего не редактировал. Не ставится галочка по умолчанию.
|
|
19.01.2012, 10:21 | #4 |
Участник
|
Перенесли все объекты. Редактировал только форму, но перенёс и таблицу на всякий случай, хотя я там ничего не редактировал. Не ставится галочка по умолчанию.
|
|
19.01.2012, 10:58 | #5 |
Участник
|
Vilyar, а как вы это реализовали?
Смотрю сейчас базовый код там эта галочка и так стоит по умолчанию, в OnOpenForm выставлено true. И как она связана с Операциями Возможностей, в контексте вашей задачи? В таких случаях проходятся дебагером на тестовой и боевой базе, и смотрят в чем отличие, выполняемого кода. В 90% случаях причина найдена. |
|
19.01.2012, 11:43 | #6 |
Участник
|
|
|
19.01.2012, 12:03 | #7 |
Участник
|
Если вы имеете ввиду код CurrForm."Cancel Old To Do".ENABLED(TRUE); с триггере Form - OnOpenForm() то это не то. Это просто свойство активности чекбокса как я понимаю. А мне нужно чтоб по умолчанию стояла галочка. Я не знаю как это работает, может чего то не понимаю (т.к. я в этом Новичок) но эта галочка иногда стоит отмеченной, иногда не стоит при закрытии одной и той же карточки.
В триггере ShowStep(Visible : Boolean) в шаге "Wizard Step"::"2": сделал "Cancel Old To Do":=TRUE;. Так вроде всё работает. В общем хз из за чего всё это... |
|
19.01.2012, 12:15 | #8 |
Участник
|
У меня CancelOldToDo := TRUE; стоит в OnOpenForm изначально. Вот его полный текст:
Код: CurrForm.Step1.XPOS := 4400; CurrForm.Step1.YPOS := 0; CurrForm.Step2.XPOS := 4400; CurrForm.Step2.YPOS := 0; FormWidth := CurrForm.Cancel.XPOS + CurrForm.Cancel.WIDTH + 220; CurrForm.XPOS := ROUND((CurrForm.WIDTH - FormWidth) / 2,1) + CurrForm.XPOS; CurrForm.YPOS := 3000; CurrForm.HEIGHT := CurrForm.Cancel.YPOS + CurrForm.Cancel.HEIGHT + 220; CurrForm.WIDTH := FormWidth; UpdateEditable; CancelOldToDo := TRUE; CreateNewToDo := FALSE; SetSubMenu(CurrMenuType,TRUE); |
|
19.01.2012, 12:32 | #9 |
Участник
|
Дело в том, что этот чекбокс стоит активным в Frame step2. Я в триггере ShowStep(Visible : Boolean) прописал "Cancel Old To Do":=TRUE;
Вот полный код этого триггера: ShowStep(Visible : Boolean) CASE "Wizard Step" OF "Wizard Step"::"1": BEGIN CurrForm.Step1.VISIBLE := Visible; IF Visible THEN BEGIN CurrForm.Finish.ENABLED(FALSE); CurrForm.Back.ENABLED(FALSE); CurrForm.Next.ENABLED(TRUE); END; END; "Wizard Step"::"2": BEGIN CurrForm.Step2.VISIBLE := Visible; IF Visible THEN BEGIN CurrForm.Finish.ENABLED(TRUE); CurrForm.Back.ENABLED(TRUE); CurrForm.Next.ENABLED(FALSE); CurrForm."Close Opportunity Code".ACTIVATE; "Cancel Old To Do":=TRUE; CloseOpportunityCode.RESET; CASE "Action Taken" OF "Action Taken"::Won: IF Opp.GET("Opportunity No.") THEN CurrForm.SalesQuote.ENABLED(Opp."Sales Document No." <> ''); "Action Taken"::Lost: BEGIN CurrForm."Calcd. Current Value (LCY)".ENABLED(FALSE); CurrForm.SalesQuote.ENABLED(FALSE); END; END; END; END; END; А изначально этого кода "Cancel Old To Do":=TRUE; не было. И теперь вроде бы он должен стоять по умолчанию. Проверил несколько раз - вроде работает. А до этого у меня в базе работал почему то через раз. А при переносе этой формы на базу клиента он вообще не работал. Галочка по умолчанию вообще не ставилась. Щас проверим, как будет у них на базе. |
|
19.01.2012, 12:35 | #10 |
Участник
|
Да, в 5 версии, по крайней мере, по другому. Эта переменная переехала из Глобалс в поля операций возможностей. Вам нужно пройтись по коду перед запуском формы таблички 5092(CloseOpportunity) и 5093 (CloseOppFromOpp, StartWizard) , возможно, у вас там что допилино, т.к. кода скрытия чекбокса нету в базоваой версии.
Покажите тогда что у вас в онопенформ написано до кучи. |
|
19.01.2012, 12:41 | #11 |
Участник
|
А попробуйте всё-таки поставить в OnOpenForm. Шаманство, конечно, но вдруг поможет...
Можно посмотреть, что у вас в OnOpenForm? Кстати, для отображения кода удобно использовать соответствующий значок <> в тулбаре окна сообщения. |
|
19.01.2012, 12:42 | #12 |
Участник
|
Да. Видимо версия другая. Или может просто кто то до меня это всё допилил. Но вроде теперь всё работает. Спасибо всем за помощь и проявленный интерес.
|
|
19.01.2012, 12:48 | #13 |
Участник
|
Цитата:
Да, конечно можно. Вот код: (кстати, спасибо за подсказку ) Код: Form - OnOpenForm() CurrForm.Step1.XPOS := 4400; CurrForm.Step1.YPOS := 0; CurrForm.Step2.XPOS := 4400; CurrForm.Step2.YPOS := 0; FormWidth := CurrForm.Cancel.XPOS + CurrForm.Cancel.WIDTH + 220; CurrForm.XPOS := ROUND((CurrForm.WIDTH - FormWidth) / 2,1) + CurrForm.XPOS; CurrForm.YPOS := 3000; CurrForm.HEIGHT := CurrForm.Cancel.YPOS + CurrForm.Cancel.HEIGHT + 220; CurrForm.WIDTH := FormWidth; UpdateEditable; CurrForm."Cancel Old To Do".ENABLED(TRUE); "Cancel Old To Do":=TRUE; // "Create New To Do" := FALSE; ShowStep(TRUE); Там был этот кусок кода "Cancel Old To Do":=TRUE; Но это всё не помогало. Видимо просто он не там стоял. |
|
19.01.2012, 12:51 | #14 |
Участник
|
|
|
19.01.2012, 13:00 | #15 |
Участник
|
Alex Che, мигало у него потому что в тех ф-циях, которые я написал, стоит код, который выставляет тру или фэлс в записи, а значение из опенформ затиралось после отработки ОнАфтеГетРекорд. А теперь оно будет затираться еще и там где Vilyar написал.
Следующий кто туда залезет еще где-нибудь поменяет |
|
19.01.2012, 13:03 | #16 |
Участник
|
Цитата:
Почему само? Я ж дописал код "Cancel Old To Do":=TRUE; в триггере ShowStep(Visible : Boolean) : Код: ShowStep(Visible : Boolean) CASE "Wizard Step" OF "Wizard Step"::"1": BEGIN CurrForm.Step1.VISIBLE := Visible; IF Visible THEN BEGIN CurrForm.Finish.ENABLED(FALSE); CurrForm.Back.ENABLED(FALSE); CurrForm.Next.ENABLED(TRUE); END; END; "Wizard Step"::"2": BEGIN CurrForm.Step2.VISIBLE := Visible; IF Visible THEN BEGIN CurrForm.Finish.ENABLED(TRUE); CurrForm.Back.ENABLED(TRUE); CurrForm.Next.ENABLED(FALSE); CurrForm."Close Opportunity Code".ACTIVATE; "Cancel Old To Do":=TRUE; Вот этот код в этот триггер CloseOpportunityCode.RESET; CASE "Action Taken" OF "Action Taken"::Won: IF Opp.GET("Opportunity No.") THEN CurrForm.SalesQuote.ENABLED(Opp."Sales Document No." <> ''); "Action Taken"::Lost: BEGIN CurrForm."Calcd. Current Value (LCY)".ENABLED(FALSE); CurrForm.SalesQuote.ENABLED(FALSE); END; END; END; END; END; |
|
19.01.2012, 13:13 | #17 |
Участник
|
Цитата:
Сообщение от InTacto
Alex Che, мигало у него потому что в тех ф-циях, которые я написал, стоит код, который выставляет тру или фэлс в записи, а значение из опенформ затиралось после отработки ОнАфтеГетРекорд. А теперь оно будет затираться еще и там где Vilyar написал.
Следующий кто туда залезет еще где-нибудь поменяет Не поменяет ) |
|