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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2008, 14:27   #1  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Программные вызовы checkin, checkout
В качестве VersionControl - VSS. Хотелось бы програмно обработать некоторые таблицы из группы, следовательно необходимо предварительно сделать чек-аут, внести изменения, а потом сделать чекин, что бы изменения сохранились.

Вот простенький джобик, которым пробую зачекаутить какойто обьект:

X++:
static void Job8(Args _args)
{
    VersionControl Vc;
    TreeNode tn;
    UtilElements   ueTable;
    ;
    Vc=new VersionControl();
    select firstonly ueTable where ueTable.recordType==UtilElementType::Class
    && ueTable.name=="SomeClass";
    tn=xUtilElements::getNodeInTree(ueTable);
    Vc.checkOut(tn);
 }
Итог: с SomeClass ничего не происходит. Стало быть через системный класс вершин контроля нельзя управлять действиями VSS? Каким тогда образом обратится к методам непосредственно VSS?


UPD: скорее всего, что бы работать с любой VersionControl системой надо выполнять работу на верхнем уровне - SysVersionControlAddin. Ща проверю эту гипотезу.
__________________
Axapta has seduced me deadly!

Последний раз редактировалось HorrR; 14.03.2008 в 16:59.
Старый 14.03.2008, 18:08   #2  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Всё, кажеццо разобрался, теперь надо копать в глубь.
__________________
Axapta has seduced me deadly!

Последний раз редактировалось HorrR; 14.03.2008 в 18:13.
Старый 14.03.2008, 18:35   #3  
Dozer is offline
Dozer
Участник
AxAssist
Соотечественники
 
107 / 24 (1) +++
Регистрация: 16.11.2004
Адрес: г. Калгари, Канада
А поделиться? Как именно получилось?
__________________
С уважением, Dozer
Старый 14.03.2008, 19:18   #4  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
В общем, центральный во всей вершин контрол системе Аксапты - SystemVersionControlSystem класс. Система напрямую работает только с ним. Сам он как таковой реализации прямых комманд вершин-контроловских не содержит. Ну конечно они не пустые эти методы, иначе класс можно было бы смело делать интерфейсом, но реализация там только косвенная(Думаю, что разработчики не сделали класс абстрактным, только что б не обращаясь через класс конкретной вершин-контроловской системы, например VSS, получать доступ к таковому через общий класс.) В общем, он обеспечивает интерфейс для классов конкретных систем, например: SystemVersionControlSystemSourceSafe экстендит SystemVersionControlSystem. У ystemVersionControlSystem соответственно конечно же есть метод construct, в котором и решаеццо, экземпляр какого наследника создавать. Воть, ещё пару слов о методах класса SystemVersionControlSystem. ключевыми для собсна контроллинга являются те, которые начинаются с префикса: "command" в качестве параметра принимают обьек класса, который имплементирует интерфейс SysVersionControllable. Например, таким обьектом может быть обьект типа SysTreeNode. Ну вот, скажем, ежели надобно зачекаутить Нужный нам класс какой-нить, а имя класса допустим вычесляется динмически, то выглядеть это может так:
X++:
    TreeNode tn;
    UtilElements   ueTable;
    Args args;
    ;
    select firstonly ueTable where ueTable.recordType==UtilElementType::Class
    && ueTable.name==My_class_name;
    tn=xUtilElements::getNodeInTree(ueTable);
    versioncontrol.init();
    versioncontrol.parmSysVersionControlSystem().commandCheckIn(SysTreeNode::newTreeNode(tn)); //parmSysVersionControlSystem() метод versioncontrol класса возвращает класс текущей вершин-контрол системы.
З.Ы Ещё забавно, что инстанс versioncontrol создавать не надо, при чём можно юзать не статические методы. Здаецца мне, что просто этот инстанц уже где-то создан глубоко-глубоко в системе.
З.З.Ы И всё бы хорошо, но без выскакивающих инфологов и форм не обойтись, если юзать непосредственно методы SysVersionControlSystem класса. Вот она плата за универсальность(з.ы ну если конечно не править сам класс, сделать это можно и без ущерба, но всё-равно не хочеццо). Если же затачивацца под конкретную вершин-контрол систему, универсальность можно запить водой, и то не знаю(не смотрел ещё) можно ли без инфологов и форм на чек-аут и чек-ин обойтись. Первая мысль, может и глупая, которая пришла, просто закрывать окна и инфологи с помощью WinApi, правда я пока не знаю как)) Если кто разовьет мысль, буду благодарен!
__________________
Axapta has seduced me deadly!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
SQL запрос через COM вызовы Акзапты 4 Jab Straight DAX: Программирование 3 14.06.2007 17:08

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

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

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