Проблема с докомпиляцией производственных документов

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Проблема с докомпиляцией производственных документов

Сообщение Max_Ural »

Здравствуйте
Стоит задача - при открытии накладной на МЦП (505) или накладной на приход ГП (502) необходимо проанализировать поле у пользователя и подразделение откуда.
В зависимости от этого - либо закрыть доступ на редактирование некоторых полей, либо не закрывать.

Пытаюсь сделать докомпиляцию.
Определил, что само редактирование происходит в интерфейсе Nakl502 в окне EditSopr, но при этом интерфейс Nakl502 связывается со скрином интерфейса iMnfIntrf
Написал следующий код для докомпиляции:

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

alter interface Nakl502;

    overload
    end;
    window EditSopr;
      handleEvent
          cmInit:{
            inherited:: handleEvent (cmInit);
            message('Открываем накладную '+katsopr.nrec+' '+katsopr.dsopr+' '+katsopr.nsopr);
          }
      end; //handleevent
   end;//window
end.
При запуске интерфейса в Галактике не возникает никаких сообщений (как я подозреваю - из-за того, что я докомпилирую связанный интерфейс.
Попробовал докомпилировать событие cmOnVipLoad, но сообщение выводится при первом открытии списка накладных.

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

handleEvent
      cmOnVipLoad:{
        message('cmOnVipLoad');
      }
   end;


Подскажите пожалуйста, как можно отловить событие перехода к редактированию либо созданию документа?
Ged
топ-софт
Сообщения: 76
Зарегистрирован: Вс, 16/09/2007 10:23
Имя Фамилия: Леонид Поликутин
Откуда: Галактика СПб
Контактная информация:

Re: Проблема с докомпиляцией производственных документов

Сообщение Ged »

Ловить надо в нескольких местах.

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

Alter interface Nakl502 ( '');

// Указываем только то, что хочем перегружать.
// DoneInter можно было и не указывать.
// соответсвенно Procedure objManufSch.DoneInter; - не должно быть в коде
  overload
    Procedure objManufSch.InitInter (_NRecObj : comp; _vTypSop : word);
    Procedure objManufSch.DoneInter;
  end;

Procedure Msg(i: Word);
Var StrMsg : String;
{
  Case i of
   1: StrMsg:= 'InitInter';
   2: StrMsg:= 'Tableevent Table KatSopr';
   3: StrMsg:= 'Tableevent Table KatSoprSelect';
   else StrMsg:='X-Files';
  End; //case
     Message(StrMsg+' Вася Пупкин');
} // procedure Msg

//------------------------------------------------------------------------------
// Инициализация фейса
//------------------------------------------------------------------------------
Procedure objManufSch.InitInter(_NRecObj : comp; _vTypSop : word);
{
  Msg(1);
  inherited :: InitInter(_NRecObj, _vTypSop ); // Обработчик родителя
}

//------------------------------------------------------------------------------
// Деинициализация фейса
//------------------------------------------------------------------------------
Procedure objManufSch.DoneInter;
{
  inherited :: DoneInter; // Обработчик родителя
}

//------------------------------------------------------------------------------
// Редактирование
//------------------------------------------------------------------------------
Tableevent Table KatSopr;
cmPositionChanged :
  {
   Msg(2);
  }
end;

//------------------------------------------------------------------------------
// Список
//------------------------------------------------------------------------------
Tableevent Table KatSoprSelect;
cmPositionChanged :
  {
   Msg(3);
  }
end;

end.
Ged
топ-софт
Сообщения: 76
Зарегистрирован: Вс, 16/09/2007 10:23
Имя Фамилия: Леонид Поликутин
Откуда: Галактика СПб
Контактная информация:

Re: Проблема с докомпиляцией производственных документов

Сообщение Ged »

Забыл написать - проверку еще надо бы делать
при изменении полей, от которых зависит закрывать/не закрывать cmCheckField
TableEvent table KatSopr
...
cmCheckField
...
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Re: Проблема с докомпиляцией производственных документов

Сообщение Max_Ural »

Спасибо за совет, кое в чем он пригодился
Методы объектного интерфейса ObjManufSch мне не понадобились.

Докомпиляция событий таблиц cmPositionChanged заработала.
Это позволило мне поймать переход между накладными с помощью PageDown-PageUp

Плюс к этому, мы нашли события cmSwitchFromContainer и cmSwitchToContainer, которые как раз срабатывают при переходе из списка накладных к конкретной накладной и обратно.
А в сочетании с CurTable можно отловить именно переход из списка к накладной (который мне был нужен)
Ответить