13.02.2013, 10:55 | #21 |
Участник
|
Цитата:
Ну, стандартное мне не особо подходило) |
|
14.02.2013, 10:51 | #22 |
Участник
|
Ребят, есть один информационный вопрос.
Скажите, что это за табличка такая? http://msdn.microsoft.com/en-us/libr...(v=ax.10).aspx В базе axapt-ы её не нахожу, откуда она подтягивается? На одной из таблиц есть lookup-метод, в котором в кач-ве параметра таблицы выступает она |
|
14.02.2013, 10:52 | #23 |
Участник
|
Судя по комментарию из кода, это апи?
X++: static void lookupAOTTables(FormStringControl _ctrl) { // [url]http://msdn.microsoft.com/en-us/library/aa632599(v=ax.10).aspx[/url] // This table enables you to create, read, update, and delete X++ code and metadata. Ensure that the user has access to the Development Security Key (SysDevelopment) before calling this API. SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(UtilidElements), _ctrl); |
|
14.02.2013, 11:05 | #24 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: LeonDerCom (1). |
14.02.2013, 11:14 | #25 |
Участник
|
|
|
14.02.2013, 13:13 | #26 |
Участник
|
Ещё такой вопросик, выдаёт предупреждение:
Цитата:
Не все пути в validateWrite возвращают значение
Вот код: X++: public boolean validateWrite() { boolean ret; ret = super(); ret = FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true); // Строка по всем датасетам if(!ret) return ret; } Последний раз редактировалось user_ax; 14.02.2013 в 13:18. |
|
14.02.2013, 13:46 | #27 |
Участник
|
Видимо, нет.
|
|
14.02.2013, 13:59 | #28 |
Участник
|
1) Вы теряете значение ret = super(), затирая его результатом функции FieldSetupTable::SetupFormDataSource2(). Что будет если стандартная проверка super() вернёт ошибку (false), например из-за уникального индекса, а FieldSetupTable::SetupFormDataSource2 вернёт истину?
2) Для чего в вашем коде присутствует if? |
|
14.02.2013, 14:45 | #29 |
Участник
|
Цитата:
Сообщение от S.Kuskov
1) Вы теряете значение ret = super(), затирая его результатом функции FieldSetupTable::SetupFormDataSource2(). Что будет если стандартная проверка super() вернёт ошибку (false), например из-за уникального индекса, а FieldSetupTable::SetupFormDataSource2 вернёт истину?
2) Для чего в вашем коде присутствует if? Заккоментировал вызов super - предупреждение осталось. 2) Код не мой, разбираюсь в нём только. |
|
14.02.2013, 15:17 | #30 |
Участник
|
Хм...интересно... возвратил ещё раз ret - предупреждение исчезло...
|
|
14.02.2013, 16:01 | #31 |
Участник
|
Это вы зря. Как теперь система будет контролировать обязательность полей и уникальность индексов?
Так всё-таки для чего там if? |
|
14.02.2013, 16:12 | #32 |
Участник
|
super я раскоменнтировал , проверка будет проходить.
if ? Честно, не знаю, для дополнительной проверки, может. Предыдущий программист так сделал, нужно для особой настроечной таблицы скорее всего. |
|
14.02.2013, 16:20 | #33 |
Участник
|
|
|
14.02.2013, 16:22 | #34 |
Участник
|
|
|
14.02.2013, 16:25 | #35 |
Участник
|
user_ax
В супере он полезет на валидацию полей самой таблицы - не стоит комментить его, перекрывая ret и не комментируя супер - сводите его работу на нет, поскольку результат проверки он вам не вернет. Про if - получается он всегда будет возвращать (return) только отрицательное значение, иначе return (если true) не отработает и функция по умолчанию будет давать false (так как генерирует boolean по умолчанию false), то есть с этим условием всегда результат функции всегда false... И результат валидации - отрицательный. update: Цитата:
X++: public boolean validateWrite() { boolean ret; ; ret = FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true); // Строка по всем датасетам (ret==true?ret=super():ret); return ret; } Последний раз редактировалось LeonDerCom; 14.02.2013 в 16:37. |
|
14.02.2013, 16:42 | #36 |
Участник
|
Цитата:
Сообщение от LeonDerCom
user_ax
В супере он полезет на валидацию полей самой таблицы - не стоит комментить его, перекрывая ret и не комментируя супер - сводите его работу на нет, поскольку результат проверки он вам не вернет. Про if - получается он всегда будет возвращать (return) только отрицательное значение, иначе return (если true) не отработает и функция по умолчанию будет давать false (так как генерирует boolean по умолчанию false), то есть с этим условием всегда результат функции всегда false... И результат валидации - отрицательный. update: Судя по всему, у вас приоритет у последнего запроса - тогда код бы переделал вот так: X++: public boolean validateWrite() { boolean ret; ; ret = FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true); // Строка по всем датасетам (ret==true?ret=super():ret); return ret; } Но ваш код выдаёт синтаксическую ошибку... |
|
14.02.2013, 17:04 | #37 |
Участник
|
user_ax
Прошу прощения, невнимательность. ret = (ret==true?ret=super():ret); |
|
14.02.2013, 17:12 | #38 |
Участник
|
|
|
14.02.2013, 18:28 | #39 |
Участник
|
Что за жесть? Только тернарного оператора user_ax для полного счастья не хватает?
Всё гораздо проще: X++: public boolean validateWrite() { boolean ret; ; ret = super(); if (ret) { ret = FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true); // Строка по всем датасетам } return ret; } X++: ret = ret && FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true); // Строка по всем датасетам А по поводу предупреждения "Не все пути в validateWrite возвращают значение", user_ax, если всё ещё не поняли, то это так компилятор сообщает вам что вы забыли в конце написать return. В оригинальном вашем сообщении return распологался внутри оператора if (отсюда и все мои попытки обратить на него ваше внимание), а если значения переменных будут такими, что алгоритм не попадёт в этот if? Чем завершится работа функции validateWrite? Какое значение она вернёт? |
|
14.02.2013, 19:11 | #40 |
Участник
|
Цитата:
Вообще, мне непонятна идея засовывания проверки на разрешение редактирования в валидацию поля... Если необходимо определить разрешение на редактирование всей записи, то в метод active() - <имядатасерса>.allowEdit(FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true)); Либо в modifiedField - если определенные поля... А валидацию оставить на решение ее конкретной задачи. |
|
Теги |
datafield, datasource, presence, свойства полей |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|