11.03.2013, 17:59 | #1 |
Участник
|
Помогите с проверкой
Всем добрый вечер.
Друзья программисты-профессионалы, требуется ваш совет (вот уже в который раз). Сделал функцию в таблице клиентов, которая утверждает\разутверждает записи. При этом утвержденные становятся недоступными для редактирования. Теперь стоит задача "научить" пользователей всегда утверждать записи. Для этого хочу свое поле Утверждено (енум) сделать обязательным. В validateWrite на таблице дописал проверку. Но видимо что-то кривовато сделал, потому что проверка отрабатывает а воспользоваться функцией утверждения я не могу. Подскажите, где что недоделал? По форуму полазил, много про validateWrite обсуждают, но что-то для меня подходящего не нашел. Если искал плохо, по и помощь ввиде ссылки на соответствующую тему очень даже подойдет |
|
11.03.2013, 18:02 | #2 |
Axapta
|
Проверка на утвержденность должна быть не при сохранении записи (validateWrite), а при выполнении конкретных операций, где требуется утвержденность. Например, это может быть разноска накладных или даже вообще создание заказа, зависит от ваших бизнес-процессов. Встройте туда проверку и все. Пусть в справочнике будут неутвержденные записи, но как черновики, с ними ничего нельзя будет сделать полезного.
|
|
11.03.2013, 18:05 | #3 |
Участник
|
Что-то не совсем понимаю?
|
|
11.03.2013, 18:08 | #4 |
Axapta
|
Что вы не понимаете? Делаете на таблице CustTable метод вида boolean isApproved(), затем ищете класс выполнения требуемой вам операции и вставляете туда вызов вашего метода. Если он вернет false, не выполнять операцию и выдавать ошибку. А поле обязательным делать не надо.
|
|
11.03.2013, 18:14 | #5 |
Участник
|
Вообще-то, сам подход странный. Вы создаете и себе, и пользователям дополнительные проблемы. Но если очень хочется, то в карточке клиента есть такое поле CustTable.Blocked - Остановлено (Блокировано). Посмотрите по перекрестным ссылкам, как это поле используется в коде. Вам придется продублировать весь этот функционал, но уже со своим полем.
Ну, или вместо своего поля использовать в качестве флага поле CustTable.Blocked. Для этого надо: - запретить редактирование этого поля на форме (вручную) - при создании новой записи устанавливать его в значение по умолчанию CustVendorBlocked::All - в своей функции менять его значение, предусмотрев возможность установки всех 3 значений.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
11.03.2013, 20:07 | #6 |
Участник
|
Я правильно понимаю, что функция утверждения - это отдельная кнопка на форме? И нажимать эту кнопку вы пытаетесь стоя на несохранённой записи? Но чтобы нажать на кнопку нужно передать ей фокус ввода -> забрать фокус ввода с несохранённой строки, а при потере фокуса несохранённая строка пытается сохраниться, но ваш Validate не разрешает сохранение
|
|
12.03.2013, 08:47 | #7 |
Участник
|
А процесс утверждения предусматривает ввод и сохранение какой-то дополнительной информации от пользователя? Нельзя ли при создании нового клиента автоматически содавать запись уже "утверждённой", без дополнительного нажатия кнопки пользователем?
|
|
12.03.2013, 12:18 | #8 |
Участник
|
validateWrite конечна было бы интересно посмотреть, иначе не понять проблему (хотя бы кусок с проверкой). Извините если чего не понял...
Проблема думается в том, что при установке флажка проверено эта проверка сама же мешает записи... Подозреваю танец вокруг оригинала и текущего значения записи типа: this.orig().Checked и this.Checked... Если this.orig().Checked == false && this.Checked == true, то писать можно, а вот иначе если this.Checked == true, то изменять нельзя. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Нужно срочно дописать запрос помогите | 3 | |||
Помогите новичку: импорт | 6 | |||
Помогите - не формируются Российские отчеты!!! | 13 | |||
Помогите начинающему! | 9 | |||
Ребята плиз помогите! Данные! | 6 |
|