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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.08.2005, 15:18   #21  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Может я не понял вопрос , но метод buf2buf класса Global копирует поля таблиц.

Что имеется в виду под копированием контролов в гриде?
Старый 24.08.2005, 15:42   #22  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Посмотрите как реализовано копирование ч/з кнопку "функции/копирование" журнала складских проводок в классе InventJournalCopy, метод run
Старый 24.08.2005, 17:32   #23  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
PHP код:
....
        
_to.data(_from.data());
        
_to.insert();
....
        
_to_ds.executeQuery(); 
по сути так -)
но это запись в таблицу. и после этого строки этой таблицы не редактируемы.

А скопировать в гриде , я имел ввиду - скопировать строку прямо на форме, отредактировать её и потом уже записать в таблицу.
Старый 25.08.2005, 08:18   #24  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Добиться того, чтобы после вставке в датасоурс строк они оставались редактируемы (т.е. оставались в кэше датасоурса и не сохранялись в таблицах) независимо от параметра AlowEdit можно. Для этого достаточно перекрыть метод Write датасоурса формы и не давать вызываться super() этого метода (естественно, если в этом методе организована другая функциональность, связанная с сохранение данных в таблицах то это тоже необходимо обходить).

Только учтите, что при вызове метода Write() датасоурса также происходит вызов validateWrite() на полях таблицы и, соответственно, может возникнуть ситуация, что данные находятся в кэше и видны, а при их сохранении в таблицу будет вызвано исключение.

Еще одна проблема - это использование фильтра и сортировки, точнее невозможность их использования, т.к. при этом произойдет сброс кэша.

Ну и остается проблема - изучить все подводные камни, связанные с таким использованием датасоурса, да и со складскими журналами необходимо разобраться, как это повлияет на работу классов-обработчиков

Не знаю стоит ли овчинка выделки? ;-0
Старый 25.08.2005, 08:47   #25  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Кстати насчет смысла доработки.

Позвольте заметить, но, конечная цель, которую заказчик планирует достич этой доработкой мне не ясна. Может быть стоит уточнить условия?
Старый 25.08.2005, 10:20   #26  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Насчет validateWrite на датасоурсе и на таблице я погорячился. Вызов происходит до вызова Write.
Старый 25.08.2005, 17:29   #27  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Вопрос решился пока след образом:
PHP код:

    InventJournalTrans InventJournalTransFrom
;
    
InventJournalTable  _table InventJournalTable::find(InventJournalTrans.JournalId);
    
super();

    
InventJournalTransFrom.data(InventJournalTrans);

    
InventJournalTrans_ds.create();
    
buf2buf(InventJournalTransFrom,InventJournalTrans);

    
select reverse InventJournalTransFrom order by LineNum
        where InventJournalTrans
.JournalId == InventJournalTransFrom.JournalId;

    
InventJournalTrans.LineNum InventJournalTrans::lastLineNum(InventJournalTrans.JournalId) + 1;  // вот тут тревожно  -  не совсем ясно, как формировать LineNum . т.к. если после копирванния сразу создать стрку - вылетает ошибка
    
InventJournalTrans.InventTransId '';  //  эта тема позволяет обойти проверку лота для возможности редактирования ItemId 
Что посоветуете?
Старый 25.08.2005, 17:53   #28  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
И все-таки я бы порекомендовал повнимательнее изучить класс InventJournalCopy


PHP код:
                    
                    inventJournalTransTo
.clear();
                    
inventJournalTransTo.initFromInventJournalTable(inventJournalTableTo);
                    
inventJournalTransTo.initFromInventJournalTrans(inventJournalTransFrom);
                    
inventJournalTransTo.journalId      inventJournalTableTo.journalId;
                    
inventJournalTransTo.voucher        '';
                    if (
inventJournalTableTo.voucherDraw == JournalVoucherDraw::Entering)
                        
inventJournalTransData.initVoucher(voucher_last,false);               // Voucher is assigned

                    
inventJournalTransData.addJournalTransVoucher();
                    
inventJournalTransTo.insert(); 
Старый 25.08.2005, 18:00   #29  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
И еще
PHP код:
 InventJournalTransFrom.data(InventJournalTrans.Data()); 
Старый 25.08.2005, 18:40   #30  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Может пойдет такой вариант?

PHP код:
    InventJournalTrans InventJournalTransFrom;
    
LineNum             lineNum;
    ;

    
super();

    
InventJournalTransFrom.data(InventJournalTrans.data());

    
InventJournalTrans_ds.create();
    
lineNum InventJournalTrans.lineNum;
    
InventJournalTrans.initFromInventJournalTrans(InventJournalTransFrom);
    
InventJournalTrans.lineNum lineNum
Старый 26.08.2005, 10:50   #31  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Да вот этот вариант вполне корректно отрабатывает. Спасибо всем огромное -))
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Количество строк в Query Владимир Максимов DAX: Программирование 19 11.08.2014 18:27
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Итого по дебиту (кредиту) строки журналов titov DAX: Программирование 0 19.10.2006 13:49
Длительное создание складских журналов Paul_ST DAX: Программирование 2 13.09.2006 10:52
Отвязка формы строк платежа от формы журналов платежей Maximin DAX: Программирование 3 27.01.2005 19:33
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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