• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Обращение не к несуществующему проекту

Автор Lito 2, 17.09.14, 10:48:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Lito 2

Добрый день.
Пишу плагин под ЛОЦМАН:PLM 2014, столкнулся со следующей проблемой:
Запускаю плагин под пользователем имеющие права  только чтение на тип "Деталь".
В процессе обработки информации передодключаюсь под SQL пользователем, который имеет администраторские права на тип "Деталь".
и беру 'Деталь' в работу. Получаю чекаут из метода 'CheckOut' и пробую получить чекаут редактируемого объекта из 'CurrentCheckOut', с которым в данный момент сервер приложений поддерживает соединение. - Возвращается из 'CurrentCheckOut' пустое значение.

1 Пытаюсь подключится к чекауту 'ConnectToCheckOut' и использую чекают из  'CheckOut' - ЛОЦМАН:PLM сообщает: - 'Обращение не к несуществующему проекту'
2  Пытаюсь подключится к чекауту 'ConnectToCheckOut' и использую чекают из  'CurrentCheckOut' , и пытаюсь изменить состояние объекта c помощью 'UpdateStateOnObject' ЛОЦМАН:PLM сообщает: - 'Это действие применимо только в режиме редактирования'

Что необходимо добавить или изменить, чтобы отредактировать состояние у объекта под другим пользователем?


//Упаковка параметров подключения
      podkl:= VarArrayCreate([0, 2], varVariant);
      podkl[0]:= 'Test';
      podkl[1]:= 'plagin';
      podkl[2]:= '123';

      if FPluginCall.RunMethod('ConnectToDBEx', podkl) = 1 then
        begin
          Application.MessageBox('Подсоединение к базе прошел',
          'Плагин', MB_OK + MB_ICONWARNING);

          //Упаковка параметров на изменение
          Ch1:= VarArrayCreate([0, 3], varVariant);
          Ch1[0]:= FPluginCall.stType; // название типа
          Ch1[1]:= FPluginCall.stProduct;  //Ключевой атрибут
          Ch1[2]:= FPluginCall.stVersion;  // Версия объекта
          Ch1[3]:= $00000000; //Блокировать головной объект. По умолчанию.

          chek:= FPluginCall.RunMethod('CheckOut', Ch1);

          chek1:= FPluginCall.RunMethod('CurrentCheckOut', VarArrayOf([]));

          Application.MessageBox(Pchar('Взятие в работу прошел ' + 'Chek: '+ chek +
           #13#10 + 'Chek1: '+ chek1),
          'Плагин + Chek', MB_OK + MB_ICONWARNING);

          FPluginCall.RunMethod('ConnectToCheckOut', VarArrayOf([chek, 'Test']));

          Application.MessageBox(Pchar('Соединение с чекаутом прошел '),
          'ПлагинChek', MB_OK + MB_ICONWARNING);

          //Упаковка параметров
          varSost:= VarArrayCreate([0, 3], varVariant);
          varSost[0]:= FPluginCall.stType; // название типа
          varSost[1]:= FPluginCall.stProduct;  //Ключевой атрибут
          varSost[2]:= FPluginCall.stVersion;  // Версия объекта
          varSost[3]:= 'Проектирование';

          FPluginCall.RunMethod('UpdateStateOnObject', varSost);

          Application.MessageBox('Измение состояния прошел',
           'Плагин', MB_OK + MB_ICONWARNING);
      /*
     ..................
     */
end;



Manuylov

после взятия в работу
chek:= FPluginCall.RunMethod('CheckOut', Ch1);
надо подключиться к чекауту "chek"
PluginCall.RunMethod('ConnectToCheckOut', VarArrayOf([chek, PluginCall.DBName]));

Lito 2

В коде уже есть подобная строчка после взятия в работу,
FPluginCall.RunMethod('ConnectToCheckOut', VarArrayOf([chek, 'Test']));

после ее обработки выводится 'Обращение не к несуществующему проекту'.


Manuylov

1. если в Лоцмане залогиниться пользователем "plagin", там будет эта деталь в чекауте?
2. после подключения проверить результат GetInfoAboutCurrentUser

Lito 2

Да, под пользователем 'plagin' модель взята в работу, чекаут под пользователем создан и виден на жестком диске.
После взятия в работу метод 'GetInfoAboutCurrentUser' возвращает пользователя 'plagin'.

Chaa

А что показывается в сообщении?
Application.MessageBox(Pchar('Взятие в работу прошел ' + 'Chek: '+ chek +
    #13#10 + 'Chek1: '+ chek1),
    'Плагин + Chek', MB_OK + MB_ICONWARNING);

Lito 2

Первый chek - это чекаут взятого объекта в работу из  chek:= FPluginCall.RunMethod('CheckOut', Ch1);
Второй  chek1 - это чекаут который показывает редактируемый объект (название чекаута), с которым в данный момент сервер приложений поддерживает соединение - он возвращается пустым.
chek1:= FPluginCall.RunMethod('CurrentCheckOut', VarArrayOf([]));

Chaa

Т.е. показывается "Взятие в работу прошел Chek: 100500" в сообщении?

Lito 2


Chaa

CurrentCheckOut и должен быть пустым до вызова ConnectToCheckOut, это нормально.

Вообще, я делал так, как у вас написано, в версии 2011 это работает.