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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.06.2005, 17:46   #1  
Red Stranger is offline
Red Stranger
Участник
 
102 / 19 (1) ++
Регистрация: 01.04.2005
Edit метод
Доброго всем времени суток!

Я пишу edit-метод на форме. Во время выполнения метода вызывается ttsbegin. После того как выходим из ttsbegin, edit-метод начинает выполняться 2-й раз.В результате вся наработка работает криво.

Всем заранее спасибо.
Старый 15.06.2005, 17:48   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Re: Edit метод
Цитата:
Изначально опубликовано Red Stranger
Я пишу edit-метод на форме.
Сразу вопрос: а почему не на таблице?
Старый 15.06.2005, 17:49   #3  
Red Stranger is offline
Red Stranger
Участник
 
102 / 19 (1) ++
Регистрация: 01.04.2005
Цитата:
Сразу вопрос: а почему не на таблице?
Потому что нельзя добавить таблицу в ДС, т.к. начинает криво работать весь проект.
Старый 15.06.2005, 18:17   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Edit метод
Цитата:
Изначально опубликовано Red Stranger
Во время выполнения метода вызывается ttsbegin.
edit-метод может работать в две стороны - для редактирования и для правки.
В каком разделе edit-метода вы ставите ttsbegin?
в разделе, который правит, или в разделе, который показывает.
Обратите внимание на параметр set
__________________
полезное на axForum, github, vk, coub.
Старый 15.06.2005, 18:18   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Во время выполнения метода вызывается ttsbegin
Дык, может ttscommit добавить?
Старый 16.06.2005, 11:44   #6  
Red Stranger is offline
Red Stranger
Участник
 
102 / 19 (1) ++
Регистрация: 01.04.2005
Цитата:
Дык, может ttscommit добавить?
Да стоит позже ttscommit.

2mazzy

я вызываю начало транзакции(собственно как и ее завершение) в блоке, котоорый отрабатывает когда set == true.
Старый 16.06.2005, 11:50   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано Red Stranger
Потому что нельзя добавить таблицу в ДС, т.к. начинает криво работать весь проект.
Не понял. Что, НИ ОДНУ таблицу нельзя в датасорс добавить???? Забавный у вас проект, дайте две.

edit - метод можно написать на любой таблице, ему по фигу, что вы другие таблицы им будете корячить.

С Уважением,
Георгий
Старый 16.06.2005, 12:02   #8  
Red Stranger is offline
Red Stranger
Участник
 
102 / 19 (1) ++
Регистрация: 01.04.2005
Все разобрался я с двойным вызовом метода.

Теперь встала другая проблема.
Метод отрабатвает на форме(PurchTable) и после его завершения становиться невозможным переход по строкам закупки.

PHP код:
edit FreeText GetFactorySerial(boolean setFreeText Txt FactorySerial.text() )
{
    
InventSerial    inventSerial;

    
Dialog dialog = new Dialog("×òî íåîáõîäèìî ñäåëàòü");
    
FreeText        ret "";
    ;
    if (
set)
    {
        
dialog.addText("Ñîçäàòü âíóòðåííèé íîìåð?");
        if( 
dialog.run() )
        {
            
select firstfast inventSerial
                where inventSerial
.FactorySerial == Txt;
            if( 
inventSerial.RecId != )
            {
               
setprefix(funcname());
                throw 
error(strfmt("Çàâîäñêîé íîìåð %1 óæå åñòü â ñèñòåìå",Txt));
            }


            
ret Txt;
             if( 
PurchLine.RecId != )
            {
                 
ttsbegin;

                
select forupdate firstonly inventDim
                    where inventDim
.inventDimId == purchLine.InventDimId;
                 
select firstonly inventSerial
                    where 
(inventSerial.InventSerialId == inventDim.inventSerialId)&&(inventSerial.ItemId == PurchLine.ItemId);

                if (
InventSerial)
                {
                     
select forupdate firstonly inventSerial
                        where 
(inventSerial.InventSerialId == inventDim.inventSerialId)&&(inventSerial.ItemId == PurchLine.ItemId);

                    
inventSerial.InventSerialId =  inventSerial.InventSerialNum(PurchLine.ItemId);
                    
inventSerial.FactorySerial  =  Txt;
                    
inventDim.inventSerialId    =  inventSerial.InventSerialId;

                    
inventDim.update();
                    
inventSerial.update();
                }
                else
                {
                    
inventSerial.InventSerialId =  inventSerial.InventSerialNum(PurchLine.ItemId);
                    
inventSerial.FactorySerial  =  Txt;
                    
inventSerial.ItemId         =  PurchLine.ItemId;

                    
inventDim.inventSerialId    =  inventSerial.InventSerialId;

                    
inventSerial.insert();
                    
inventDim.update();
                }

                
ttscommit;
            }
            else
            {
                
ttsbegin;

                
select forupdate firstonly inventDim
                    where inventDim
.inventDimId == purchLine.InventDimId;

                
inventSerial.ItemId         PurchLine.ItemId;
                
inventSerial.InventSerialId inventSerial.InventSerialNum(PurchLine.ItemId);
                
inventSerial.FactorySerial  =  Txt;

                
inventDim.inventSerialId    inventSerial.InventSerialId;

                
inventSerial.insert();
                
inventDim.update();

                
ttscommit;
            }

        }
        else
        {
            
ret "";
        }

        return 
ret;
    }
    else
    {
        
select firstonly inventSerial
            where 
(inventSerial.InventSerialId == inventDim.inventSerialId)&&(inventSerial.ItemId == PurchLine.ItemId);

        return 
inventSerial.FactorySerial;
    }


Старый 16.06.2005, 12:12   #9  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Мда... брр-р-р.
Ничего удивительного.
Лихо вы InventDim корячите.
Там проблема. Ищите или связанный номер и меняйте его, или создавайте новую аналитику.

Честно говоря, немного странновато.. Мне кажется, что
1) Есть способ проще
2) Часть логики, особенно по изменения сер. номера, я бы вынес на таблицу.
3) Какой-то перегруженный метод. Не есть хорошо.
Надо что-то типа:
PHP код:
edit FreeText GetFactorySerial(boolean setFreeText Txt FactorySerial.text() )
{
    Dialog          dialog = new Dialog("dfgdfgdfg");
    Description ret "";
    ;
    if (set)
    {
        dialog.addText("trgrdtdrthdfh");

        ifdialog.run() )
        {
            
InventDim::changeSerial();
        }
        else
        
{
            throw error("отменено юзером");
        }
    }
    else
    
{
        select firstonly inventSerial
            where inventSerial
.InventSerialId == inventDim.inventSerialId
                  
&& inventSerial.ItemId == PurchLine.ItemId;

        return inventSerial.FactorySerial;
    }

Старый 16.06.2005, 13:36   #10  
Red Stranger is offline
Red Stranger
Участник
 
102 / 19 (1) ++
Регистрация: 01.04.2005
Всем спасибо за помощь, особенно George Nordic, но проблема решилась без переписывания. После манипуляций с курсорами надо было просто добавить.
PHP код:
        PurchTable_ds.reReadLines(); 
И все.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Edit-метод и Relation - баг или фича ? TasmanianDevil DAX: Программирование 9 20.11.2008 10:16
edit-методы и validateWrite() на DataSource gl00mie DAX: Программирование 6 30.06.2008 17:50
edit метод c пapaметpoм vitaly85 DAX: Программирование 1 25.03.2008 02:15
Подскажите как использовать метод Edit vasiliy DAX: Программирование 1 30.03.2005 09:45
edit и display методы Maxim Gorbunov DAX: База знаний и проекты 4 15.01.2002 12:58

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:30.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.