я на своей базе потестил (~100 пользователей)
в при отрытии:
dll_UsersDef=КаталогИБ()+"UsersDef.dll";
Если ФС.существуетФайл(dll_UsersDef)=0 Тогда
Сигнал();
Предупреждение("Не обнаружена компонента UsersDef.dll! Дальнейшее выполнение обработки невозможно!",5);
Форма.Закрыть();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Попытка
ЗагрузитьВнешнююКомпоненту(dll_UsersDef);
ЮзерДеф=СоздатьОбъект("AddIn.UsersDef");
Исключение
Сигнал();
Предупреждение("Не загружена компонента UsersDef.dll! Дальнейшее выполнение обработки невозможно!",5);
СтатусВозврата(0);
Форма.Закрыть();
Возврат;
КонецПопытки;
в процедуру "Сформировать":
Сообщить("Нач1"+ТекущееВремя());
Для сч = 1 По 100 Цикл
тз = ДатьСписокПользователей("c:\123.txt");
КонецЦикла;
Сообщить("Кон1"+ТекущееВремя());
Сообщить("Нач2"+ТекущееВремя());
Для сч = 1 По 100 Цикл
тз = ЮзерДеф.ПолучитьСписокПользователейТЗ(КаталогИБ());
КонецЦикла;
Сообщить("Кон2"+ТекущееВремя());
При моем раскладе у меня быстрее раза в 2-1,5 чем через длл. Странно

ЗЫ: маленькая ошибочка вышла не 100 а 212 юзеров