AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.01.2012, 08:16   #1  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Всем доброго времени суток. У меня есть такая непонятная проблема. Была поставлена задача, чтоб при закрытии возможности, а именно на 2 шаге (там где указывается причина закрытия возможности) cheсkbox с названием "Отменить существующие открытые задачи" по умолчанию был установлен галочкой (т.е. checked). Этот checkbox связан с таблицей Opportunity Entry (Операция возможности). На тестовой базе сделал - всё работает. перенесли эту формочку на рабочую базу клиента - не работает... Кто нибудь знает почему так, или сталкивался ли с таким? Из за чего это может быть и вообще в чём суть... Заранее всем спасибо.
Старый 19.01.2012, 09:41   #2  
Alex Che is offline
Alex Che
Участник
 
74 / 10 (1) +
Регистрация: 04.04.2006
Чудесато...
Может быть, перенесли не все объекты, которые редактировались?
И что именно не работает - галка не ставится по умолчанию или задачи не отменяются?
Старый 19.01.2012, 10:19   #3  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Перенесли все объекты. Редактировал только форму, но перенёс и таблицу на всякий случай, хотя я там ничего не редактировал. Не ставится галочка по умолчанию.
Старый 19.01.2012, 10:21   #4  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Цитата:
Сообщение от Alex Che Посмотреть сообщение
Чудесато...
Может быть, перенесли не все объекты, которые редактировались?
И что именно не работает - галка не ставится по умолчанию или задачи не отменяются?
Перенесли все объекты. Редактировал только форму, но перенёс и таблицу на всякий случай, хотя я там ничего не редактировал. Не ставится галочка по умолчанию.
Старый 19.01.2012, 10:58   #5  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Vilyar, а как вы это реализовали?
Смотрю сейчас базовый код там эта галочка и так стоит по умолчанию, в OnOpenForm выставлено true.
И как она связана с Операциями Возможностей, в контексте вашей задачи?

В таких случаях проходятся дебагером на тестовой и боевой базе, и смотрят в чем отличие, выполняемого кода. В 90% случаях причина найдена.
Старый 19.01.2012, 11:43   #6  
Alex Che is offline
Alex Che
Участник
 
74 / 10 (1) +
Регистрация: 04.04.2006
Цитата:
Сообщение от InTacto Посмотреть сообщение
Смотрю сейчас базовый код там эта галочка и так стоит по умолчанию, в OnOpenForm выставлено true.
У меня тоже стоит по умолчанию (форма 5128). Не понимаю, откуда взялась проблема
UPD: Nav 3.1
Старый 19.01.2012, 12:03   #7  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Если вы имеете ввиду код 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  
Alex Che is offline
Alex Che
Участник
 
74 / 10 (1) +
Регистрация: 04.04.2006
У меня 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);
А ShowStep вообще нет, наверное, от версии зависит.
Старый 19.01.2012, 12:32   #9  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Дело в том, что этот чекбокс стоит активным в 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  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Да, в 5 версии, по крайней мере, по другому. Эта переменная переехала из Глобалс в поля операций возможностей. Вам нужно пройтись по коду перед запуском формы таблички 5092(CloseOpportunity) и 5093 (CloseOppFromOpp, StartWizard) , возможно, у вас там что допилино, т.к. кода скрытия чекбокса нету в базоваой версии.

Покажите тогда что у вас в онопенформ написано до кучи.
Старый 19.01.2012, 12:41   #11  
Alex Che is offline
Alex Che
Участник
 
74 / 10 (1) +
Регистрация: 04.04.2006
А попробуйте всё-таки поставить в OnOpenForm. Шаманство, конечно, но вдруг поможет...

Можно посмотреть, что у вас в OnOpenForm?
Кстати, для отображения кода удобно использовать соответствующий значок <> в тулбаре окна сообщения.
Старый 19.01.2012, 12:42   #12  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Да. Видимо версия другая. Или может просто кто то до меня это всё допилил. Но вроде теперь всё работает. Спасибо всем за помощь и проявленный интерес.
Старый 19.01.2012, 12:48   #13  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Цитата:
Сообщение от Alex Che Посмотреть сообщение
А попробуйте всё-таки поставить в OnOpenForm. Шаманство, конечно, но вдруг поможет...

Можно посмотреть, что у вас в OnOpenForm?
Кстати, для отображения кода удобно использовать соответствующий значок <> в тулбаре окна сообщения.

Да, конечно можно. Вот код: (кстати, спасибо за подсказку )

Код:
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  
Alex Che is offline
Alex Che
Участник
 
74 / 10 (1) +
Регистрация: 04.04.2006
Цитата:
Сообщение от Vilyar Посмотреть сообщение
Да. Видимо версия другая. Или может просто кто то до меня это всё допилил. Но вроде теперь всё работает. Спасибо всем за помощь и проявленный интерес.
И что, вот так само взяло и заработало?
Старый 19.01.2012, 13:00   #15  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Alex Che, мигало у него потому что в тех ф-циях, которые я написал, стоит код, который выставляет тру или фэлс в записи, а значение из опенформ затиралось после отработки ОнАфтеГетРекорд. А теперь оно будет затираться еще и там где Vilyar написал.
Следующий кто туда залезет еще где-нибудь поменяет
Старый 19.01.2012, 13:03   #16  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Цитата:
Сообщение от Alex Che Посмотреть сообщение
Цитата:
Сообщение от Vilyar Посмотреть сообщение
Да. Видимо версия другая. Или может просто кто то до меня это всё допилил. Но вроде теперь всё работает. Спасибо всем за помощь и проявленный интерес.
И что, вот так само взяло и заработало?


Почему само? Я ж дописал код "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  
Vilyar is offline
Vilyar
Участник
 
11 / 10 (1) +
Регистрация: 14.12.2011
Цитата:
Сообщение от InTacto Посмотреть сообщение
Alex Che, мигало у него потому что в тех ф-циях, которые я написал, стоит код, который выставляет тру или фэлс в записи, а значение из опенформ затиралось после отработки ОнАфтеГетРекорд. А теперь оно будет затираться еще и там где Vilyar написал.
Следующий кто туда залезет еще где-нибудь поменяет

Не поменяет )
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:42.