private List<Tuple<TemplateNodeQueryInfo, Int64, DataTable>> GetResultTables(
			ConcreteTemplateNodeDefinition nodeDefinition,
			MultyQueryResultInfo           queriesResult
		)
		{
			List<Tuple<TemplateNodeQueryInfo, Int64, DataTable>> resultTables =
				new List<Tuple<TemplateNodeQueryInfo, Int64, DataTable>>();

			try
			{
				GroupDefinition database = nodeDefinition.Group;

				if (database != null)
				{
					foreach (QueryDatabaseResult queryDatabaseResult in queriesResult.GetDatabaseResults())
					{
						QueryDatabaseResultInfo dbResult = queryDatabaseResult.Result;

						if (dbResult == null || dbResult.DataTables == null)
						{
							continue;
						}

						if (database.Name == dbResult.Database)
						{
							Int64 recordSet = 1L;

							foreach (DataTable curTable in dbResult.DataTables)
							{
								resultTables.Add(
									new Tuple<TemplateNodeQueryInfo, Int64, DataTable>(
										queryDatabaseResult.TemplateNodeQuery,
										recordSet,
										curTable
									)
								);

								recordSet++;
							}
						}
					}
				}
			}
			catch (Exception ex)
			{
				log.Error("Error in 'Extracts data from queries and saves it to table for RDLC.'", ex);
				throw;
			}

			return resultTables;
		}
		private Dictionary<TemplateNodeQueryInfo, DataTable> PrepareHistoryData(
			MultyQueryResultInfo results
		)
		{
			Dictionary<TemplateNodeQueryInfo, DataTable> result =
				new Dictionary<TemplateNodeQueryInfo, DataTable>();

			foreach (QueryDatabaseResult queryDatabaseResult in results.GetDatabaseResults())
			{
				QueryDatabaseResultInfo dbResult = queryDatabaseResult.Result;

				if (dbResult == null || dbResult.DataTables == null)
				{
					continue;
				}

				TemplateNodeQueryInfo templateNodeQuery = queryDatabaseResult.TemplateNodeQuery;

				foreach (DataTable table in dbResult.DataTables)
				{
					Debug.Assert(table != null);

					if (!result.ContainsKey(templateNodeQuery))
					{
						result.Add(templateNodeQuery, table);
					}
				}
			}

			return result;
		}