diff --git a/perxis-proto b/perxis-proto
index 278f919cda5b9d9aac548f1714213eaf52c28d7f..0627c9f829178bc6de2623a0b6d42964c44de496 160000
--- a/perxis-proto
+++ b/perxis-proto
@@ -1 +1 @@
-Subproject commit 278f919cda5b9d9aac548f1714213eaf52c28d7f
+Subproject commit 0627c9f829178bc6de2623a0b6d42964c44de496
diff --git a/pkg/files/field.go b/pkg/files/field.go
index 7386831322a0c67852cd18e570bc3a0c5781da9f..bd237bd622f657861cef5bf608fcf5bf2aba1898 100644
--- a/pkg/files/field.go
+++ b/pkg/files/field.go
@@ -2,7 +2,6 @@ package files
 
 import (
 	"context"
-	"errors"
 	"fmt"
 	"io"
 	"net/url"
@@ -132,17 +131,16 @@ func (t FileType) PreSave(ctx context.Context, fld *field.Field, v interface{},
 		return nil, false, nil
 	}
 	f := v.(*File)
-	if f.ID == "" {
-		return nil, false, errors.New("FileType: file id required")
-	}
-	if !f.Temporary {
-		return f, false, nil
-	}
 
+	// Выполняет проверка и сохранение файла в постоянное хранилище
+	// Если файл уже находится в постоянном хранилище, то ничего не делаем
+	// TODO при реализации SaveFile нужно передавать флаг или ошибку
+	//  - чтобы корректно отдавать флаr changed если файл не перемещался
 	f, err := t.fs.MoveUpload(ctx, &MultipartUpload{File: *f})
 	if err != nil {
 		return nil, false, err
 	}
+
 	return f, true, nil
 }