public Notification AddRequest(Main request)
		{
			OnBeforeValidationRequest(request);
			var ackResult = request.Check();
			var notification = CreateNotification(request, ackResult);
			return ReturnNotification(request.Header, notification);
		}
		public void TestCreate()
		{
			var doc = new Main();
			Assert.IsNull(doc.Header);
			Assert.IsNull(doc.Document);
			Assert.IsNull(doc.TaskList);
			Assert.IsNull(doc.AddDocuments);
			Assert.IsNull(doc.Expansion);
			Assert.IsNull(doc.DocTransfer);
		}
		public void TestMissingAreas_Format2()
		{
			var type = new Main();

			var ackResult = type.Check();
			Assert.IsNotNull(ackResult);
			Assert.That(ackResult.Count, Is.GreaterThanOrEqualTo(1));
			var ex = ErrorReceiptCode.MissingAreas_Format;
			var arg0 = "Document";
			var obj = ackResult.FirstOrDefault(p => ((p.errorcode == ex.errorcode) && (p.Value.Contains(arg0))));
			EqualTo(obj, ex, arg0);
		}
		private Notification CreateNotification(Main request, List<AckResult> ackResult)
		{
			// TODO: Добавьте код выполняемый после проверки полей полученного запроса

			// TODO: Возможно, потребуется сохранить запрос в базу данных
			if (ackResult.Count == 0)
			{
				ackResult.AddRange(SaveToDb(request));
			}

			var notification = Notification.Init();

			// TODO: Необходимо сформировать ответ

			// Добавляем сообщения об ошибках (при необходимости часть можно поправить)
			notification.Acknowledgement.AckResult = ackResult;


			return notification;
		}
		private List<AckResult> SaveToDb(Main data)
		{
			return new List<AckResult>();
		}
		// TODO: Добавьте свой код для обработки поступающих сообщений

		#region AddRequest

		partial void OnBeforeValidationRequest(Main request)
		{
			// TODO: Этот метод может быть удален
			// TODO: Добавьте код выполняемый перед проверкой полей полученного запроса
		}
		private List<AckResult> LoadFromDb(ResponseSupplement data, out Main source)
		{
			source = new Main();
			return new List<AckResult>();
		}
		partial void OnBeforeValidationRequest(Main request);