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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение 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.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

с каким приоритетом подключаете ресурс, сделайте 3009 например. Если запуск удаленного интерфейса сделать, там видно из какого ресурса грузится, там ваш или стандарт?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение 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.
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Алексей писал(а):с каким приоритетом подключаете ресурс, сделайте 3009 например. Если запуск удаленного интерфейса сделать, там видно из какого ресурса грузится, там ваш или стандарт?
Когда смотрю интерфейс через утилиту запуска внешнего интерфейса, то вижу там свой ресурс, а не стандартный
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

вместо
if (cfsSetCurrentContainer('M_MNPLAN::IRSPMNPLAN')
используйте
if(cfsSetCurrentContainer(cfsGetCurrentContainerSelf) <> cfOk)
это исключит ошибки при повторном запуске фейса - контейнер уже будет другой.
Ну и приоритет опять же проверьте.
Кроме того если фейс встраиваемый, то cmInit может не запускаться - используйте cmVipOnLoad, как вам написал m0p3e
Я обычно добавление выделяю в отдельную функцию и запускаю ее там и там, а в ней самой проверяю переменную и если она true , то создание элементов не делаю
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Переключение обратотки на событие onVipLoad тоже ничего не дало. После этого перестало даже появляться окно интерфейса Производственные заказы.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

ну уже прогресс.
а inherited::handleevent(cmOnVipLoad) то не забыли вызвать?
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Да, все сделал. Сейчас интерфейс отобразился, но кнопки так и нет. Причем, даже если непосредственно интерфейс запускаю, то тот же эффект.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

а установку контейнера переделали?
Я обычно делаю так.

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

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

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

}
а что говорит getifccurrentfieldname?
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Вариант с cfsSetCurrentContainer('M_MNPLAN::IRSPMNPLAN' работает, но только после прямого запуска утилитой запуска внешн. интерфейса,
а вариант if(cfsSetCurrentContainer(cfsGetCurrentContainerSelf) вообще не работает.
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Любопытно, если в режиме отладки в випере запустить интерфейс через утилиту запуска вн. интерфейсов, а потом отключить ресурс от проекта, то при запуске из меню Галактики, в интерфейсе все равно появляется моя кнопка.
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Думаю, дело не в vip-коде. Данный ресурс, как будто вообще игнорируется. Это следует из того, что при непосредственном запуске утилитой - все работает.
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение Alo »

Подчистка папки проекта atlantic решила проблему.
Спасибо всем за оказанную помощь!
Alo
Новичок
Сообщения: 24
Зарегистрирован: 16 янв 2012, 15:16
Откуда: г.Челябинск

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

Сообщение 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.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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