diff --git a/pkg/items/service.go b/pkg/items/service.go
index b193076bf804b133ce0d0f422278c41adb47e039..747f155461a4450771a31274c7d7743a14038f5b 100644
--- a/pkg/items/service.go
+++ b/pkg/items/service.go
@@ -74,6 +74,22 @@ func NewFilter(params ...interface{}) *Filter {
 	return f
 }
 
+func (f *Filter) Clone() *Filter {
+	if f == nil {
+		return nil
+	}
+	clone := &Filter{
+		ID:     make([]string, len(f.ID)),
+		Data:   make([]*filter.Filter, len(f.Data)),
+		Q:      make([]string, len(f.Q)),
+		Search: f.Search,
+	}
+	copy(clone.ID, f.ID)
+	copy(clone.Data, f.Data)
+	copy(clone.Q, f.Q)
+	return clone
+}
+
 // AggregateExpRe - формат, которому должна соответствовать формула расчета данных
 var AggregateExpRe = regexp.MustCompile(`([a-zA-Z]+)\((.*)\)`)