diff --git a/pkg/data/data.go b/pkg/data/data.go
index c1d0f63f958209147137cfee6829e531a2f5a87d..c94a7e250e0902caa07e37a40a89209f9a410480 100644
--- a/pkg/data/data.go
+++ b/pkg/data/data.go
@@ -3,6 +3,8 @@ package data
 import (
 	"strconv"
 	"strings"
+
+	"git.perx.ru/perxis/perxis-go/pkg/errors"
 )
 
 const DefaultFieldDelimiter = "."
@@ -178,7 +180,7 @@ func set(path []string, data, value any) error {
 	switch v := data.(type) {
 	case map[string]interface{}:
 		if v == nil {
-			return nil
+			return errors.New("assignment to nil map")
 		}
 
 		if len(path) == 1 {
diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go
index 4a54ff0aa7f01d4410e0255c2471f5e6dfe07a61..6d4ccfbddc3cfb364bbc3ed1c5684d9a4978cc38 100644
--- a/pkg/data/data_test.go
+++ b/pkg/data/data_test.go
@@ -83,7 +83,7 @@ func TestDelete(t *testing.T) {
 			},
 			"a.b",
 			map[string]any{
-				"a": []any{uninitializedMap, map[string]any{"a": "1"}},
+				"a": []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}},
 			},
 		},
 		{
@@ -105,7 +105,7 @@ func TestDelete(t *testing.T) {
 			"a",
 			[]any{
 				uninitializedMap,
-				map[string]any{"b": "2"},
+				map[string]any{"a": 1, "b": "2"},
 			},
 		},
 		// Решили что автоматически удалять пустые объекты/слайсы не нужно
@@ -300,27 +300,25 @@ func TestSet(t *testing.T) {
 		{"Map value", args{"a", map[string]interface{}{"a": "0"}, map[string]interface{}{"a": "a"}}, map[string]interface{}{"a": map[string]interface{}{"a": "a"}}, assert.NoError},
 		{"Slice", args{"a.a", map[string]interface{}{"a": []any{map[string]any{"a": "0"}, map[string]any{"a": "0", "b": "b"}}}, "a"}, map[string]interface{}{"a": []any{map[string]any{"a": "a"}, map[string]any{"a": "a", "b": "b"}}}, assert.NoError},
 		{"Slice", args{"a.0.a", map[string]interface{}{"a": []any{map[string]any{"a": "0"}, map[string]any{"a": "0", "b": "b"}}}, "a"}, map[string]interface{}{"a": []any{map[string]any{"a": "a"}, map[string]any{"a": "0", "b": "b"}}}, assert.NoError},
-		{"Set the object for the uninitialized map", args{"a", uninitializedMap, "a"}, uninitializedMap, assert.NoError},
-		{"Set the object field for the uninitialized map", args{"a.b", uninitializedMap, "a"}, uninitializedMap, assert.NoError},
+		{"Set the object for the uninitialized map", args{"a", uninitializedMap, "a"}, uninitializedMap, assert.Error},
+		{"Set the object field for the uninitialized map", args{"a.b", uninitializedMap, "a"}, uninitializedMap, assert.Error},
 		{
-			"object field from first level array with uninitialized map",
+			"Set object field from first level array with uninitialized map",
 			args{"a.b", map[string]any{"a": []any{uninitializedMap, map[string]any{"a": "1"}}}, "2"},
-			map[string]any{"a": []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}}},
-			assert.NoError,
+			map[string]any{"a": []any{uninitializedMap, map[string]any{"a": "1"}}},
+			assert.Error,
 		},
 		{
-			"object field from second level uninitialized map",
+			"Set object field from second level uninitialized map",
 			args{"a.b.a", map[string]any{"a": map[string]any{"a": uninitializedMap, "b": map[string]any{"b": "2"}}}, "1"},
-			map[string]any{
-				"a": map[string]any{"a": uninitializedMap, "b": map[string]any{"a": "1", "b": "2"}},
-			},
+			map[string]any{"a": map[string]any{"a": uninitializedMap, "b": map[string]any{"a": "1", "b": "2"}}},
 			assert.NoError,
 		},
 		{
-			"object from array with uninitialized map",
+			"Set object from array with uninitialized map",
 			args{"a", []any{uninitializedMap, map[string]any{"b": "2"}}, "1"},
-			[]any{uninitializedMap, map[string]any{"a": "1", "b": "2"}},
-			assert.NoError,
+			[]any{uninitializedMap, map[string]any{"b": "2"}},
+			assert.Error,
 		},
 	}
 	for _, tt := range tests {