diff --git a/CHANGELOG b/CHANGELOG
index 108181ad6e..c1cbe7fa65 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,4 @@
+* Raise exception when search function is missing on Function fields
* Add LRU memoization, use it to cache compiled code for safe_eval.
* Add PySON to replace python string evaluation on client side
* Add JSON-RPC
diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py
index f7d17d6123..a970ce7752 100644
--- a/trytond/ir/translation.py
+++ b/trytond/ir/translation.py
@@ -901,6 +901,7 @@ class TranslationClean(Wizard):
'required_field',
'foreign_model_missing',
'foreign_model_exist',
+ 'search_function_missing',
):
continue
if model_name in self.pool.object_name_list():
diff --git a/trytond/ir/translation.xml b/trytond/ir/translation.xml
index 9a95fd10ba..a639a7d206 100644
--- a/trytond/ir/translation.xml
+++ b/trytond/ir/translation.xml
@@ -193,6 +193,15 @@ this repository contains the full copyright notices and license terms. -->
ir
+
+ search_function_missing
+ en_US
+ error
+ Missing search function on field "%s".
+ Missing search function on field "%s".
+ ir
+
+
ir.translation.set_report.init
diff --git a/trytond/model/fields/function.py b/trytond/model/fields/function.py
index 16b911f173..2d3320df25 100644
--- a/trytond/model/fields/function.py
+++ b/trytond/model/fields/function.py
@@ -92,12 +92,14 @@ class Function(Field):
:param cursor: The database cursor.
:param user: The user id.
:param model: The model.
+ :param name: The name of the field.
:param args: The search domain. See ModelStorage.search
:param context: The context.
:return: New list of domain.
'''
if not self.fnct_search:
- return []
+ model.raise_user_error(cursor, 'search_function_missing',
+ name, context=context)
return getattr(model, self.fnct_search)(cursor, user, name, args,
context=context)