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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.01.2009, 17:59   #1  
jeky is offline
jeky
:o)
Аватар для jeky
 
130 / 64 (3) ++++
Регистрация: 22.05.2008
Задача: запретить удалять строки разнесённых журналов.

Задача: запретить удалять строки разнесённых журналов.

добавила в validateDelete() таблицы InventJournalTrans
условие, что если журнал разнесён, то его нельзя удалять... (возвращает false)
теперь можно просто нажать на кнопку, но ничего не произойдёт... то же вариант..
но, как-то не правильно это - кнопка на панели инструментов активная...

Хотелось бы как-то красиво сделать, либо, чтобы кнопка была неактивная при раскрытии строк разнесённого журнала, либо сообщение выдать - вы мол хотите удалить строчку разнесённого журнала - "низзззя!"

посоветуйте, плиз!
X++:
public boolean validateDelete()
{
    boolean ret = super();

    if ((isConfigurationkeyEnabled(configurationkeynum(CsePoland)) &&
        this.inventJournalTable().Posted                          &&
        ! InventJournalName::find(this.inventJournalTable().JournalNameId).DeletePostedLines)||(this.inventJournalTable().Posted))
    {
        ret = false;
    }

    return ret;
}
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.
Старый 26.01.2009, 18:07   #2  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Попробуйте так
X++:
ret = checkFailed("вы мол хотите удалить строчку разнесённого журнала - низзззя!");

return ret;
Старый 26.01.2009, 18:13   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от jeky Посмотреть сообщение
Задача: запретить удалять строки разнесённых журналов.
Задача противоречит стандартной логике Аксапты.
Чтобы сохранять журналы используйте журнализацию.
читайте на форуме. обсуждалось неоднократно.

Цитата:
Сообщение от jeky Посмотреть сообщение
Хотелось бы как-то красиво сделать, либо, чтобы кнопка была неактивная при раскрытии строк разнесённого журнала
у датасорса поменяйте свойство AllowDelete.

Только лучше задачу поменяйте. Вы сейчас Аксапту изнасилуете, а она ж потом всю жизнь мстить будет
__________________
полезное на axForum, github, vk, coub.
Старый 26.01.2009, 18:21   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,689 / 405 (17) +++++++
Регистрация: 23.03.2006
в методе класса (ну или в его потомках) JournalFormTrans.initDatasourceAllow() устанавливается доступность, добавьте туда запрет на удаление.
или создайте на форме метод initDatasourceAllow(), в котором запретите удалять, если необходимо в конкретной форме

Последний раз редактировалось ice; 26.01.2009 в 18:27.
Старый 26.01.2009, 18:36   #5  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Если Вам нужен запрет только в одной форме(в чем я сомневаюсь), то на init датасорса строк журнала можете делать проверку - разнесен журнал или нет. Далее в зависимости от результата проверки меняйте свойство AllowDelete.
А лучше всего прислушайтесь к совету Сергея. У Вас в журналах действительно есть что-то такое, чего нельзя получить из проводок?

Последний раз редактировалось _scorp_; 26.01.2009 в 18:40.
Старый 26.01.2009, 18:44   #6  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Если Вам нужен запрет только в одной форме(в чем я сомневаюсь), то на init датасорса строк журнала можете делать проверку - разнесен журнал или нет. Далее в зависимости от результата проверки меняйте свойство AllowDelete.
Вы забываете о том, что формы журналов и их строк связаны и при смене записи в заголовке, обновляется форма строк, если она в этот момент открыта. Но метод init датасорса в этом случае не срабатывает.

По теме. Прислушайтесь к совету Маззи не запрещать удалять. Если вы трижды подумали и это вам не подошло, то я бы делал так, как написал ice.
__________________
С уважением,
Олег.
Старый 26.01.2009, 18:48   #7  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от oip Посмотреть сообщение
Вы забываете о том, что формы журналов и их строк связаны и при смене записи в заголовке, обновляется форма строк, если она в этот момент открыта. Но метод init датасорса в этом случае не срабатывает.
Согласен, каюсь.

Последний раз редактировалось _scorp_; 26.01.2009 в 19:02.
Старый 26.01.2009, 19:03   #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
Стандартным функционалом не решается.

Если бы я взялся за такую кастомизацию, то сделал бы по аналогии с журналам ГК (там нельзя удалять журналы не удалив строк, а строки разнесенных журналов нельзя удалять даже с помощью функции удаления строк). Правда, корректно это реализовано в 4.0. В 3.0 еще были лазейки.

Вот просто для аналогии. Даже если там и не совсем оптимальный подход. Для единообразия.
__________________
С уважением,
glibs®
Старый 26.01.2009, 19:27   #9  
jeky is offline
jeky
:o)
Аватар для jeky
 
130 / 64 (3) ++++
Регистрация: 22.05.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
Задача противоречит стандартной логике Аксапты.
Чтобы сохранять журналы используйте журнализацию.
читайте на форуме. обсуждалось неоднократно.
Спасибо, изучаю...
Надо будет как-то ещё и нашему бизнес-аналитику это объяснять...

Цитата:
Сообщение от mazzy Посмотреть сообщение
у датасорса поменяйте свойство AllowDelete.

Только лучше задачу поменяйте. Вы сейчас Аксапту изнасилуете, а она ж потом всю жизнь мстить будет

Пока добавила новый параметр в таблицу BOMParameters, вывела его на соответтвующую форму InventParameters

А далее, действительно сделала, как написал ice:

Цитата:
Сообщение от ice Посмотреть сообщение
в методе класса (ну или в его потомках) JournalFormTrans.initDatasourceAllow() устанавливается доступность, добавьте туда запрет на удаление.
X++:
void initDatasourceAllow()
{
    BOMParameters   BOMParameters = BOMParameters::find(); // my add
    boolean                  allow = !journalTableData.journalTable().posted && journalTableData.journalTable().sessionId;
    boolean                  allowPosted = !(BOMParameters.UNS_IsBlockPostedTransDel && journalTableData.journalTable().posted);  // my add
    ;
 
    journalTrans_ds.allowDelete((journalTableData.journalTable().sessionId != 0)&&(allowPosted)); // my edit     
    journalTrans_ds.allowEdit(allow);
    journalTrans_ds.allowCreate(allow);  

    if (formHasMethodinitDatasourceAllow == unknownNoYes::Unknown)
        formHasMethodinitDatasourceAllow = formHasMethod(formRun,identifierStr(initDatasourceAllow)) ? unknownNoYes::Yes : unknownNoYes::No;

    if (formHasMethodinitDatasourceAllow == unknownNoYes::Yes)
        formRunObject.initDatasourceAllow();

}
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.

Последний раз редактировалось jeky; 26.01.2009 в 19:30.
Старый 26.01.2009, 23:08   #10  
Vals is offline
Vals
Аманд
Аватар для Vals
Компания АМАНД
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2009
 
1,765 / 507 (20) +++++++
Регистрация: 27.02.2002
Адрес: Pass partout, Москва
Цитата:
Надо будет как-то ещё и нашему бизнес-аналитику это объяснять...
Давайте его сюда
И описание задачи тоже
Старый 26.01.2009, 23:24   #11  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Регистрация: 02.10.2007
а почему бы не использовать обычный банальный эрэлэс? Кодировать ведь не нужно абсолютно.
__________________
The Variable men power.
Старый 28.01.2009, 19:07   #12  
jeky is offline
jeky
:o)
Аватар для jeky
 
130 / 64 (3) ++++
Регистрация: 22.05.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
Задача противоречит стандартной логике Аксапты.
Чтобы сохранять журналы используйте журнализацию.
читайте на форуме. обсуждалось неоднократно.
Цитата:
Сообщение от oip Посмотреть сообщение
По теме. Прислушайтесь к совету Маззи не запрещать удалять. Если вы трижды подумали и это вам не подошло, то я бы делал так, как написал ice.
я прислушиваюсь...

Думала, что чего-то не знаю... но может действительно не знаю...
У нас журнализация - настроена.... Но как восстановить журнал оттуда?
Понятно если джобом... но стандартых вроде средств не нашла....

И потом, стандартной наверное да... у нас, не стадартная ...
У нас сторнирование журналов спецификации написано...
Оно исключительно из журналов делается.. (таким образом исправляют ошибки в журнале - на него создают журнал с отрицательным количеством потом заводят новый)

Собственно из-за этого и закрывали удаление....

+ ещё у нас на разных формах есть кнопочка "Удаление строк журнала", вот пришлось ещё на каждой форме и это править... я у датасорсов перекрывала active и linkActive
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.

Последний раз редактировалось jeky; 28.01.2009 в 19:11.
Старый 28.01.2009, 22:22   #13  
Vals is offline
Vals
Аманд
Аватар для Vals
Компания АМАНД
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2009
 
1,765 / 507 (20) +++++++
Регистрация: 27.02.2002
Адрес: Pass partout, Москва
Цитата:
У нас сторнирование журналов спецификации написано...
Вот! Вот так всегда!
Начинаем с простого вопроса, а на деле оказывается...
Пожалуйста, формулируйте вопрос в целом, с указанием причин Ваших действий!
Это крик души, а теперь по делу: чем ваше сторнирование журналов спецификаций отличается от функции приёмка, в которой можно укзазать направление операции?

Хм, при разборке автоматически ставите аналитику и себестоимость?
Тогда уж опишите, как и для чего вы используете журнал спецификаций.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как запретить редактирование всей строки DataSource? puz DAX: Программирование 21 04.07.2012 16:08
Сравнение себестоимости номенклатур (типа Спецификация) из неразнесенных и разнесенных журналов спецификаций... Morpheus DAX: Функционал 1 28.11.2007 18:03
Итого по дебиту (кредиту) строки журналов titov DAX: Программирование 0 19.10.2006 13:49
Строки журналов Андре DAX: Программирование 14 08.08.2002 10:02
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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