diff --git a/pkg/schema/field/field.go b/pkg/schema/field/field.go
index 4d2a6771bbe956f07698e52835aca53a2853bd58..2645730fb33ba7c0913f9a32cd46018851d067f2 100644
--- a/pkg/schema/field/field.go
+++ b/pkg/schema/field/field.go
@@ -380,7 +380,7 @@ func (f *Field) ListFields(filter ...FieldFilterFunc) []*Field {
 // ListFieldsRecursive возвращает массив всех вложенных полей рекурсивно
 func (f *Field) ListFieldsRecursive(filter ...FieldFilterFunc) []*Field {
 	fields := f.ListFields(filter...)
-	for _, fld := range fields {
+	for _, fld := range f.ListFields() {
 		fields = append(fields, fld.ListFieldsRecursive(filter...)...)
 	}
 	return fields
diff --git a/pkg/schema/field/field_test.go b/pkg/schema/field/field_test.go
index c6f8c5739b77c8c950ed158e46d4c6164998b769..cb0458ed610a428abe84dc038bc4c172c5560bb9 100644
--- a/pkg/schema/field/field_test.go
+++ b/pkg/schema/field/field_test.go
@@ -93,17 +93,22 @@ func TestField_ListFieldsRecursive(t *testing.T) {
 
 func TestField_ListFieldsRecursive_WithFilter(t *testing.T) {
 	sch := Object(
-		"a", Object(
+		"f1", Object(
 			"b", Object(
 				"c", String().SetSingleLocale(true),
 			),
 		),
+		"f2", Object(
+			"b", Object(
+				"c", String().SetSingleLocale(true),
+			),
+		).SetSingleLocale(true),
 	)
 
 	sch.EnableState()
 
 	fields := sch.ListFieldsRecursive(func(f *Field) bool { return f.SingleLocale == true })
-	assert.Len(t, fields, 1)
+	assert.Len(t, fields, 3)
 }
 
 func TestField_CloneWithState(t *testing.T) {
diff --git a/pkg/schema/schema_test.go b/pkg/schema/schema_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..dbedf48f9667c348c0898b73a3d308312aede6c6
--- /dev/null
+++ b/pkg/schema/schema_test.go
@@ -0,0 +1,18 @@
+package schema
+
+import (
+	"testing"
+
+	"git.perx.ru/perxis/perxis-go/pkg/schema/field"
+	"github.com/stretchr/testify/assert"
+)
+
+func TestSchema_Clone(t *testing.T) {
+	f := New("a", field.String())
+	f.ClearState()
+	fld := f.Clone(false)
+	assert.Nil(t, fld.State)
+	f.EnableState()
+	fld = f.Clone(false)
+	assert.NotNil(t, fld.State)
+}