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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.03.2013, 17:59   #1  
Apollon33 is offline
Apollon33
Участник
 
53 / 10 (1) +
Регистрация: 05.10.2007
Помогите с проверкой
Всем добрый вечер.
Друзья программисты-профессионалы, требуется ваш совет (вот уже в который раз). Сделал функцию в таблице клиентов, которая утверждает\разутверждает записи. При этом утвержденные становятся недоступными для редактирования. Теперь стоит задача "научить" пользователей всегда утверждать записи. Для этого хочу свое поле Утверждено (енум) сделать обязательным. В validateWrite на таблице дописал проверку. Но видимо что-то кривовато сделал, потому что проверка отрабатывает а воспользоваться функцией утверждения я не могу. Подскажите, где что недоделал?
По форуму полазил, много про validateWrite обсуждают, но что-то для меня подходящего не нашел. Если искал плохо, по и помощь ввиде ссылки на соответствующую тему очень даже подойдет
Старый 11.03.2013, 18:02   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Проверка на утвержденность должна быть не при сохранении записи (validateWrite), а при выполнении конкретных операций, где требуется утвержденность. Например, это может быть разноска накладных или даже вообще создание заказа, зависит от ваших бизнес-процессов. Встройте туда проверку и все. Пусть в справочнике будут неутвержденные записи, но как черновики, с ними ничего нельзя будет сделать полезного.
Старый 11.03.2013, 18:05   #3  
Apollon33 is offline
Apollon33
Участник
 
53 / 10 (1) +
Регистрация: 05.10.2007
Что-то не совсем понимаю?
Старый 11.03.2013, 18:08   #4  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Что вы не понимаете? Делаете на таблице CustTable метод вида boolean isApproved(), затем ищете класс выполнения требуемой вам операции и вставляете туда вызов вашего метода. Если он вернет false, не выполнять операцию и выдавать ошибку. А поле обязательным делать не надо.
Старый 11.03.2013, 18:14   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вообще-то, сам подход странный. Вы создаете и себе, и пользователям дополнительные проблемы. Но если очень хочется, то в карточке клиента есть такое поле CustTable.Blocked - Остановлено (Блокировано). Посмотрите по перекрестным ссылкам, как это поле используется в коде. Вам придется продублировать весь этот функционал, но уже со своим полем.

Ну, или вместо своего поля использовать в качестве флага поле CustTable.Blocked. Для этого надо:

- запретить редактирование этого поля на форме (вручную)
- при создании новой записи устанавливать его в значение по умолчанию CustVendorBlocked::All
- в своей функции менять его значение, предусмотрев возможность установки всех 3 значений.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 11.03.2013, 20:07   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Apollon33 Посмотреть сообщение
Подскажите, где что недоделал?
Я правильно понимаю, что функция утверждения - это отдельная кнопка на форме? И нажимать эту кнопку вы пытаетесь стоя на несохранённой записи? Но чтобы нажать на кнопку нужно передать ей фокус ввода -> забрать фокус ввода с несохранённой строки, а при потере фокуса несохранённая строка пытается сохраниться, но ваш Validate не разрешает сохранение
Старый 12.03.2013, 08:47   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Apollon33 Посмотреть сообщение
Сделал функцию в таблице клиентов, которая утверждает\разутверждает записи. При этом утвержденные становятся недоступными для редактирования. Теперь стоит задача "научить" пользователей всегда утверждать записи.
А процесс утверждения предусматривает ввод и сохранение какой-то дополнительной информации от пользователя? Нельзя ли при создании нового клиента автоматически содавать запись уже "утверждённой", без дополнительного нажатия кнопки пользователем?
Старый 12.03.2013, 12:18   #8  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
validateWrite конечна было бы интересно посмотреть, иначе не понять проблему (хотя бы кусок с проверкой). Извините если чего не понял...
Проблема думается в том, что при установке флажка проверено эта проверка сама же мешает записи... Подозреваю танец вокруг оригинала и текущего значения записи типа:
this.orig().Checked и this.Checked... Если this.orig().Checked == false && this.Checked == true, то писать можно, а вот иначе если this.Checked == true, то изменять нельзя.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Нужно срочно дописать запрос помогите CRASH_505 DAX: Программирование 3 09.09.2008 10:49
Помогите новичку: импорт Bars DAX: Администрирование 6 26.03.2005 09:14
Помогите - не формируются Российские отчеты!!! ravil DAX: Функционал 13 27.11.2003 13:42
Помогите начинающему! EgoII DAX: Функционал 9 23.05.2003 08:06
Ребята плиз помогите! Данные! niksa DAX: Программирование 6 17.12.2002 19:16
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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