     
     required init(from decoder: Decoder) throws {
         let container = try decoder.container(keyedBy: ExportCompletedCodingKeys.self)
-        self.message = try container.decode(String.self, forKey: .message)
+        self.message = try? container.decode(String.self, forKey: .message)
         self.errorMessage = try? container.decode(String.self, forKey: .errorMessage)
         self.createdDocumentName = try? container.decode(String.self, forKey: .createdDocumentName)
         self.taskType = (try? container.decode(TaskType.self, forKey: .taskType)) ?? TaskType.unknownTaskType
-        self.taskState = try container.decode(TaskState.self, forKey: .taskState)
+        self.taskState = (try? container.decode(TaskState.self, forKey: .taskState)) ?? TaskState.unknownState
         try super.init(from: decoder)
     }
 }

    case completed // COMPLETED=Задача завершена
    case interrupted_by_timeout // INTERRUPTED_BY_TIMEOUT=Задача отменена по таймауту
    case interrupted_by_system // INTERRUPTED_BY_SYSTEM=Задача отменена сервисом
}

public struct MSNotificationRetailShift: Decodable {

}

public class NotificationDataExchange: BaseNotification {
    public let message: String? 
    public let errorMessage: String?
    public let createdDocumentName: String?
    /// Тип экспорта
