Страница 1 из 2

Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 11:18
Alo
Проблема с вызовом докомпилированного интерфейса.
Хочу добавить кнопку в интерфейс карточки производственного заказа. Компилирую ресурс, подключаю в саппорте как пользовательский. Далее вызываю стандартно из меню Галактики - в интерфейсе моей кнопки нет. При этом, если сначала запустить интерфейс непосредственно через утилиту запуска внешнего интерфейса, то при последующем стандартном вызове из меню, моя кнопка появляется. При подключении интерфейса из випера в режиме отладки поведение такое же. Посоветуйте пожалуйста, что с этим делать?
Это мой код:

Код: Выделить всё

#component "M_MNPLAN"

alter interface IRSPMNPLAN;

  const
    cmPrintBirka = 9999;
  end;

  handleevent
    cmInit: {
      inherited::handleevent(cmInit);
      if (cfsSetCurrentContainer('M_MNPLAN::IRSPMNPLAN') <> 0) {
        Message('Ошибка установки корневого контейнера', Error);
        Exit;
      }
      var pPrintBirka: longint;
      if ( cfsCreateObject('Button', 'SCRMNPLAN', 'cmPrintBirka', False, pPrintBirka) = -14) {
        Message('Ошибка создания объекта', Error);
        Exit;
      }
      cfsSetProp(pPrintBirka, cfpOrigin_X, 750);
      cfsSetProp(pPrintBirka, cfpOrigin_Y, 100);
      cfsSetProp(pPrintBirka, cfpSize_X, 100);
      cfsSetProp(pPrintBirka, cfpSize_Y, 25);
      cfsSetProp(pPrintBirka, cfpTitle, 'Печать бирки');
      cfsSetProp(pPrintBirka, 'Command', cmPrintBirka);
    }
  end;
end.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 11:32
Алексей
с каким приоритетом подключаете ресурс, сделайте 3009 например. Если запуск удаленного интерфейса сделать, там видно из какого ресурса грузится, там ваш или стандарт?

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 11:44
m0p3e
Alo писал(а):Далее вызываю стандартно из меню Галактики - в интерфейсе моей кнопки нет. При этом, если сначала запустить интерфейс непосредственно через утилиту запуска внешнего интерфейса, то при последующем стандартном вызове из меню, моя кнопка появляется. При подключении интерфейса из випера в режиме отладки поведение такое же. Посоветуйте пожалуйста, что с этим делать?
А если так:

Код: Выделить всё

#component "M_MNPLAN"

alter interface IRSPMNPLAN;

  const
    cmPrintBirka = 9999;
  end;

  handleevent
    cmOnVipLoad: {
      inherited::handleevent(cmOnVipLoad);
      if (cfsSetCurrentContainer('M_MNPLAN::IRSPMNPLAN') <> 0) {
        Message('Ошибка установки корневого контейнера', Error);
        Exit;
      }
      var pPrintBirka: longint;
      if ( cfsCreateObject('Button', 'SCRMNPLAN', 'cmPrintBirka', False, pPrintBirka) = -14) {
        Message('Ошибка создания объекта', Error);
        Exit;
      }
      cfsSetProp(pPrintBirka, cfpOrigin_X, 750);
      cfsSetProp(pPrintBirka, cfpOrigin_Y, 100);
      cfsSetProp(pPrintBirka, cfpSize_X, 100);
      cfsSetProp(pPrintBirka, cfpSize_Y, 25);
      cfsSetProp(pPrintBirka, cfpTitle, 'Печать бирки');
      cfsSetProp(pPrintBirka, 'Command', cmPrintBirka);
    }
  end;
end.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 12:44
Alo
Алексей писал(а):с каким приоритетом подключаете ресурс, сделайте 3009 например. Если запуск удаленного интерфейса сделать, там видно из какого ресурса грузится, там ваш или стандарт?
Когда смотрю интерфейс через утилиту запуска внешнего интерфейса, то вижу там свой ресурс, а не стандартный

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 12:49
edward_K
вместо
if (cfsSetCurrentContainer('M_MNPLAN::IRSPMNPLAN')
используйте
if(cfsSetCurrentContainer(cfsGetCurrentContainerSelf) <> cfOk)
это исключит ошибки при повторном запуске фейса - контейнер уже будет другой.
Ну и приоритет опять же проверьте.
Кроме того если фейс встраиваемый, то cmInit может не запускаться - используйте cmVipOnLoad, как вам написал m0p3e
Я обычно добавление выделяю в отдельную функцию и запускаю ее там и там, а в ней самой проверяю переменную и если она true , то создание элементов не делаю

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 12:50
Alo
Переключение обратотки на событие onVipLoad тоже ничего не дало. После этого перестало даже появляться окно интерфейса Производственные заказы.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 12:59
edward_K
ну уже прогресс.
а inherited::handleevent(cmOnVipLoad) то не забыли вызвать?

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 13:02
Alo
Да, все сделал. Сейчас интерфейс отобразился, но кнопки так и нет. Причем, даже если непосредственно интерфейс запускаю, то тот же эффект.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 13:12
edward_K
а установку контейнера переделали?
Я обычно делаю так.

Код: Выделить всё

cmInit:
{ Init_My;
  if inherited :: HandleEvent (cmInit)=heAbort
  { abort;
    exit
  }  

}
cmOnVipLoad:
{ Init_My;
  inherited :: HandleEvent (cmOnVipLoad)

}
а что говорит getifccurrentfieldname?

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 13:17
Alo
Вариант с cfsSetCurrentContainer('M_MNPLAN::IRSPMNPLAN' работает, но только после прямого запуска утилитой запуска внешн. интерфейса,
а вариант if(cfsSetCurrentContainer(cfsGetCurrentContainerSelf) вообще не работает.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 13:29
Alo
Любопытно, если в режиме отладки в випере запустить интерфейс через утилиту запуска вн. интерфейсов, а потом отключить ресурс от проекта, то при запуске из меню Галактики, в интерфейсе все равно появляется моя кнопка.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 13:40
Alo
Думаю, дело не в vip-коде. Данный ресурс, как будто вообще игнорируется. Это следует из того, что при непосредственном запуске утилитой - все работает.

Re: Не запускается докомпилированный интерфейс

Добавлено: 19 июн 2013, 14:48
Alo
Подчистка папки проекта atlantic решила проблему.
Спасибо всем за оказанную помощь!

Re: Не запускается докомпилированный интерфейс

Добавлено: 21 июн 2013, 09:44
Alo
Благодаря вашим советам все получилось, но теперь аналогичная проблема с докомпиляцией другого вложенного интерфейса все в той же карточке производственного заказа.
Пытаюсь изменить интерфейс M_MNPLAN::ISPSPPL01 (спецификация ПЗ).
Путь: M_MNPLAN::IRMNPLAN.WMNEDIT.SCMNEDIT.M_MNPLAN::IMNPLANEDIT.SCMNPLAN.M_MNPLAN::IRSPMNPLAN.SCRSP.M_MNPLAN::ISPSPPL01.
При вызове карточки из меню должно выдаваться сообщение, но ничего не происходит. Подскажите пожалуйста, что у меня не так?

Код: Выделить всё

#component "M_MNPLAN"

alter interface ISPSPPL01;
  handleevent
    cmOnVipLoad: {
      message('####');
      inherited::handleevent(cmOnVipLoad);
    }
    cmInit: {
      message('####');
      inherited::handleevent(cmInit);
    }
  end;
end.

Re: Не запускается докомпилированный интерфейс

Добавлено: 21 июн 2013, 11:00
edward_K
1. Проверьте лог - не все фейсы можно докомпилировать.
2. Убедитесь через запуск внешнего фейса, что он отображается в вашем ресурсе.
3. Интересно, что там дальше.
4. С этим фейсом все вообще запутано, Возможно подрубается не он сам, а его наследник.