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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2009, 13:12   #1  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
Как сделать доступными для редатирования поля на форме CustInvoiceJournal?
Добавили некоторые свои поля на таблицу CustInvoiceJour, создали для них новую вкладку на форме и теперь хотим чтобы они были доступны для редактирования. Пробовали просто разрешить AllowEdit на датасорсе, но форма всё-таки остаётся недоступна для редактирования целиком. Пробовали добавить клонированный датасорс с той же таблицы, в котором AllowEdit - Yes и с него накидать поля на форму, всё равно. не помогает.
Старый 09.11.2009, 13:25   #2  
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
Допишите ваши поля в методе initDesign_W() на форме.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: tolstjak (1), S.Kuskov (1), rusalaudinov (1).
Старый 09.11.2009, 14:42   #3  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
эм.. А что за метод такой и где его брать? на форме есть метод updateDesign, но как туда дописывать поля что-то непонял. простое

X++:
iPost1.allowEdit(true);
iPost1.enabled(true);
никакого результата не дало. АХ2009
Старый 09.11.2009, 15:16   #4  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от rusalaudinov Посмотреть сообщение
эм.. А что за метод такой и где его брать? на форме есть метод updateDesign, но как туда дописывать поля что-то непонял. простое

X++:
iPost1.allowEdit(true);
iPost1.enabled(true);
никакого результата не дало. АХ2009
Метод initDesign_W присутствует на gls-слое данной формы, если у вас только sys-слой, то нужно сделать примерно следующее :

В методе init формы прописать:
X++:
...
super();
 
CustInvoiceJour_ds.allowEdit(true);
Global::allowEditFieldsOnFormDS_W(CustInvoiceJour_DS, false);
CustInvoiceJour_ds.object(fieldNum(CustInvoiceJour, InvoiceAccount)).allowEdit(true);
...
Где вместо fieldNum(CustInvoiceJour, InvoiceAccount) написать свое поле.

Код метода allowEditFieldsOnFormDS_W приведен ниже (его нужно поместить в класс Global) - данный метод устававливает доступ ко всем полям датасорса.
X++:
client static public void allowEditFieldsOnFormDS_W(FormDataSource _dataSource, boolean _allowEdit)
{
    DictTable       dictTable = new DictTable(_dataSource.table());
    DictField       dictField;
    FormDataObject  dataObject;
    int         cx, idx;
    for(cx = 1; cx <= dictTable.fieldCnt(); cx ++)
    {
        dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(cx));
        if(! dictField.isSystem())
        {
            for(idx = 1; idx <= dictField.arraySize(); idx++)
            {
                dataObject = _dataSource.object(fieldId2Ext(dictField.id(), idx));
                if (dataObject)
                {
                    dataObject.allowEdit(_allowEdit);
                }
            }
        }
    }
}
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: rusalaudinov (1).
Старый 09.11.2009, 16:51   #5  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
Спасибо за развернутый ответ, но к сожалению и он не помог...
Старый 09.11.2009, 17:06   #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
У вас локализованная версия?
__________________
С уважением,
glibs®
Старый 09.11.2009, 17:16   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от rusalaudinov Посмотреть сообщение
Спасибо за развернутый ответ, но к сожалению и он не помог...
Тогда на всякий случай спрошу.
У пользователя, под которым тестируете редактирование полей, есть права на таблицу? Какие-либо другие поля, которые не вы добавляли, редактируются?
Старый 09.11.2009, 17:26   #8  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
Если я правильно понял вопрос, то кажется что да, локализованная.
Пользователь - он же девелопер обладает правами на всё. поля вообще никакие не редактируются. то есть ни мои, ни не мои.
Решение нашлось в том, чтобы установить свойство AllowEdit - Yes на двух датасорсах(Jour и Trans). Почему так - непонятно. Сейчас пытаюсь понять, ведь мои поля относились только к таблице Jour
Старый 09.11.2009, 17:59   #9  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от rusalaudinov Посмотреть сообщение
Если я правильно понял вопрос, то кажется что да, локализованная.
Пользователь - он же девелопер обладает правами на всё. поля вообще никакие не редактируются. то есть ни мои, ни не мои.
Решение нашлось в том, чтобы установить свойство AllowEdit - Yes на двух датасорсах(Jour и Trans). Почему так - непонятно. Сейчас пытаюсь понять, ведь мои поля относились только к таблице Jour
Там вроде проблема в том, что то ли у дизайна, то ли у таба (ну в общем у элементов на которых лежит грид шапок журналов) свойтово DataSource = CustInvoiceTrans. Соотвественно когда датасорс трансов запрещен для редактирования, запрещено и все что на связанных с ним кусках формы. Что конкретно не помню и смотреть лень, но проблема именно в этом
За это сообщение автора поблагодарили: tolstjak (1), denny (1), S.Kuskov (1), SRF (1).
Старый 11.11.2009, 04:53   #10  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Цитата:
Сообщение от db Посмотреть сообщение
Соотвественно когда датасорс трансов запрещен для редактирования, запрещено и все что на связанных с ним кусках формы.
Абсолютно точно.
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 08.12.2009, 09:50   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Сам сейчас воспользовался советами из этой темы. Всё работает. Конкретно по этой форме ещё добавлю, что после открытия на редактирование CustInvoiceTrans, стала редактируемой складская аналитика. Т.е. нужно изменить свойство allowEdit ещё и на InventDim.

Вот что у меня получилось:
X++:
void initDesign_W()
{
    custInvoiceJour_DS.allowEdit(true);
    allowEditFieldsOnFormDS_W(custInvoiceJour_DS, false);

// -->>
    custInvoiceTrans_DS.allowEdit(true);
    allowEditFieldsOnFormDS_W(custInvoiceTrans_DS, false);
    InventDim_ds.allowEdit(false); // fix
    custInvoiceJour_DS.object(fieldNum(custInvoiceJour, newField)).allowEdit(true);
// <<--

    this.initDesign_LV();
    this.initDesign_LT();
    this.initDesign_RU();
}
Старый 08.12.2009, 11:07   #12  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
пользуюсь таким вариантом, последний необязательный аргумент - список полей, которые нужно оставить редактируемыми.

X++:
//Установить AllowEdit = _allowEdit для всех полей исключая _fieldListExclude
static void setFieldsAllowEdit(FormDataSource _formDataSource, boolean _allowEdit, container _fieldListExclude = connull())
{
    FormDataObject  fdo;
    FormObjectSet   fos;
    DictTable       dictTable = new DictTable(_formDataSource.table());
    DictField       dictField;
    int             fieldCount = dictTable.fieldCnt();
    int             i;
    int             j;
    FieldId         fieldId;
    boolean         allowEdit;
    ;

    fos = _formDataSource;

    for (i = 1; i <= fieldCount; i++)
    {
        dictField = new DictField(dictTable.id(), dictTable.fieldCnt2Id(i));

        for (j = 1; j <= dictField.arraySize(); j++)
        {
            fdo = fos.object(fieldId2ext(dictField.id(), j));
            allowEdit = confind(_fieldListExclude, dictField.id()) ? ! _allowEdit : _allowEdit;

            if (fdo)
            {
                fdo.allowEdit(allowEdit);
            }
        }
    }
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Использование семейства InventDimCtrl_Frm_* - 2 DS InventDim на одной форме Pavlo AKA Panok DAX: База знаний и проекты 5 22.12.2008 17:15
Связывание поля с таблицей laxel DAX: Администрирование 1 15.09.2008 10:10
Лукап, содержащий поля нескольких таблиц matew DAX: Программирование 4 30.11.2006 16:02
Сортировка и/или фильтры в lookup форме - howto. Maximin DAX: Программирование 5 07.06.2005 11:06
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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