It doesn't work because when you created "your array" you didn't create an array. There isn't any such concept in SQL. What you did was create a single string of text.
Now, what your subquery is doing in its WHERE clause is comparing a "TypeID" value to this string. Unless your TypeID value is a string that matches ",135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157" exactly, this is not going to work.
You don't create a string, or what you're calling an "array". You can combine these queries into a single query:
SELECT SUM(ISNULL(AzenSarfKhazna.[KhaznaTotal],0)) AS Expr4
FROM AzenSarfKhazna
WHERE AzenSarfKhazna.[OPID] = '1'
AND AzenSarfKhazna.[Type] = 'Other'
AND AzenSarfKhazna.[TypeID] IN (SELECT AccountsDefinition.[ID]
FROM AccountsDefinition,Directexpenses
WHERE AccountsDefinition.[HaveFather] = Directexpenses.[DEXID])