Да, кстати, по поводу runbuf и иже с ним
утечка памяти в аксапта
Можно так-же сделать так
X++:
cm = dictTable.makeRecord();
buf = strfmt("void getRecord(%1 %1)\n{\n;\n select %1 where %1.%2 == \"%3\";\n}",
dictTable.name(), dictField.name(), it.ItemId);
if (compiler.compile(buf))
{
compiler.execute(cm);
Т.е. функция ничего не возвращает.
А вот еще про runbuf()
Пример использования RunBuf
В общем - на свой страх и риск.