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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2002, 21:14   #1  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
? Как убить виртуальную компанию?
Коротко.

1. Была создана коллекция таблиц.

2. Была создана виртуальная компания. В нее была включена коллекция таблиц из п. 1.

3. Было создано несколько компаний. Все они были включены в виртуальную компанию из п. 2. В них были введены данные. Ряд данных попал в "виртуальные компании".

4. Были удалены компании. Данные, принадлежащие компаниям удалились.

5. Были удалены виртуальные компании. Данные, принадлежащие виртуальным компаниям, остались в SQL базе.

Подскажите, пожалуйста.

1. У вас тоже так все работает или у меня уникальный случай?

2. Если да, то почему при удалении виртуальной компании из нее не удаляются данные (если знаете)?

3. И наконец, существует ли штатная возможность удаления данных из виртуальных компаний? Всех сразу и из всех таблиц.
Старый 18.11.2002, 15:05   #2  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Попробуй сделать компанию "не виртуальной" путем подкручивания признака виртуальности в таблице компаний, а потом ее удалить.
Старый 18.11.2002, 15:39   #3  
Роман Кошелев is offline
Роман Кошелев
Продавец игрушек
Аватар для Роман Кошелев
 
433 / 73 (3) ++++
Регистрация: 22.11.2001
Адрес: Москва
<h3>Пользуйтесь <i>не</i>штатными средствами Аксапты (:</h3>
<a href=/images/ARM_DBSruct.jpg title="Нажмите чтобы увидеть ещё"><img src="/images/ARM_DBStruct_1.jpg" border=0></a>
<b>Рис 1. АРМ "Настройка стурктуры". Нажмите чтобы увидеть ещё.</b>

Мы пару недель назад приступили к перестройки структуры и поняли, что Аксапта не позаботилась не только об удобстве этих операций, но и, когда копнули глубже (уже с помощью написанного под это дело Автоматизированного Рабочего Места) выяснили, например, что многи вещи, связанные со структурой (компании, виртуальные компании, коллекции и пр.) в Аксапте просто непродуманы и даже (какое кощунство!) идеологически ошибочны.

К сожалению, мы сейчас не можем выложить на всеобщий доступ данный проект, как это делали ранее -- в первую очередь из-за того, что он зависит от Проекта "Селектор" (бывш. Абстрактный Классификатор), который как раз активно переделывается под новую структуру, чтобы учитывать области видимости объектов.

Тем не менее, мы с удовольствием поделимся нажитым опытом прямо сейчас.
И как только появится возможность, выложим все новые проекты на этом сайте.

Вложения
Тип файла: img5409-1 (105.3 Кб, 695 просмотров)
Тип файла: img5409-2 (45.0 Кб, 628 просмотров)
__________________
С уважением, Роман Кошелев.
Старый 18.11.2002, 15:58   #4  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Данные действительно не удаляются:
Реальная компания:
PHP код:
void delete()
{
.....
        if (
this.validateDelete())
        {
            if (
SysDataArea::delete(dataAreaId))
            {
                
super();
            }

Виртуальная компания:
PHP код:
void delete()
{
.....
            if (
sysDataArea::askDelete(dataAreaId))
            {
                
super();
                
delete_from virtualDataAreaList
                    where virtualDataAreaList
.virtualDataArea == dataAreaId;
            }

Штатной возможности ИМХО не существует. Это реализуется несколькими строчками кода:

PHP код:
void deleteCompanyData(CompanyId pFromCompanyboolean showProgress true)
{
    
#macrolib.AviFiles
    
Connection              connection;
    
Statement               stmt;
    
Dictionary              dictionary;
    
DictTable               dictTable;
    
tableId                 nextTableId 0;
    
int                     retCdetableCnttabTot;
    
str                     sqls;
    
str                     fldStr;
    
SysOperationProgress    sysOperationProgress;
    ;

    
connection = new Connection();
    
stmt connection.createStatement();
    
dictionary = new Dictionary();
    if (
showProgress)
    {
        
nextTableId dictionary.tableNext(nextTableId);
        
tabTot 0;
        while (
nextTableId)
        {
            
dictTable = new DictTable(nextTableId);
            if (
dictTable.dataPrCompany() &&
                
dictTable.enabled() &&
                !
dictTable.isTmp() &&
                
dictTable.isSql() &&
                !
dictTable.isMap())
                
tabTot++;
            
nextTableId dictionary.tableNext(nextTableId);
        }
        
sysOperationProgress = new SysOperationProgress();
        
sysOperationProgress.setCaption('Удаление данных компании  ' pFromCompany);
        
sysOperationProgress.setAnimation(#AviFileCopy);
        
sysOperationProgress.setTotaltabTot );
    }

    
tableCnt 1;
    
nextTableId 0;
    
nextTableId dictionary.tableNext(nextTableId);
    while (
nextTableId)
    {
        
dictTable = new DictTable(nextTableId);
        if (
dictTable.dataPrCompany() &&
            
dictTable.enabled() &&
            !
dictTable.isTmp() &&
            
dictTable.isSql() &&
            !
dictTable.isMap())
        {
            if (
showProgress)
                
sysOperationProgress.setTextstrFmt("Удаление данных из таблицы "int2str(tableCnt),
                                            
int2str(tabTot), dictTable.name(DbBackend::SQL)));
            
sqlS 'DELETE FROM '+dictTable.name(DbBackend::SQL)+
                            
' WHERE DATAAREAID = \''+pFromCompany+'\'';
            
stmt.executeUpdate(sqlS);

            
tableCnt++;
            if (
showProgress)
                
sysOperationProgress.setCounttableCnt );
        }
        
nextTableId dictionary.tableNext(nextTableId);
    }

Пользуйтесь
__________________
С уважением, Игорь Ласийчук.
Старый 18.11.2002, 16:23   #5  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
А у меня проще :-)
Старый 18.11.2002, 17:19   #6  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Изначально опубликовано komar
Попробуй сделать компанию "не виртуальной" путем подкручивания признака виртуальности в таблице компаний, а потом ее удалить.
Спасибо,

Так и сделал (если правильно понял вашу терминологию). Т.е. после всех шагов создал обычную компанию с кодом виртуальной, а потом ее сразу же удалил. Результат был достигнут. Но криво, как по мне.

Отсюдова сделал вывод - под каждую виртуальную компанию имеет смысл завести реальную. Это поможет контролировать манипуляции с компаниями, а также сделает более контролируемыми операции экспорта/импорта данных (если под каждую реальную завести двойника-реальную, но не включенную в виртуальную).

Всем остальным тоже большое спасибо. Было очень полезно узнать ваше мнение. А то думал, что у меня уже крыша поехала.
Старый 18.11.2002, 19:28   #7  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Я имел в виду, что средствами базы данных изменить поле, по которому компания опознается как виртуальная (вроде бы поле называется IsVirtual), с Yes на No,
а далее удалить эту компанию.
Старый 19.11.2002, 10:51   #8  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Изначально опубликовано komar
Я имел в виду, что средствами базы данных изменить поле, по которому компания опознается как виртуальная (вроде бы поле называется IsVirtual), с Yes на No,
а далее удалить эту компанию.
Да я понял. Просто я привел более юзеровское, если можно так сказать, решение.
Цитата:
Изначально опубликовано glibs
...если под каждую реальную завести двойника-реальную, но не включенную в виртуальную...
Что-то сам не понял, что написал. Прошу считать анулированным. Sorry.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сложное объединений склада в виртуальную компанию. skof DAX: Администрирование 15 23.05.2008 12:53
Определить, через какую виртуальную компанию доступна таблица gl00mie DAX: Программирование 0 30.03.2006 10:19
Перенос настроек из компании в компанию nicko DAX: Администрирование 5 26.04.2005 17:02
Копирую компанию - меняется ledgertabletrans... Елена Сысовская DAX: Функционал 2 30.05.2003 09:30
Почему не могу добаить компанию в виртуальную? Sanya DAX: Администрирование 1 24.04.2003 17:34
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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