Получение Переменной Окружения Windows Из @-формул

phantom76

Well-Known Member
Lotus team
25.02.2005
360
9
#1
Сам искал решение для получения пути к папке "Мои документы" через @-формулы.

Поясню, возможно кому-то пригодится ( позволяет быстро перекинуть в *.rtf ):

- нужно было произвести выгрузку в файл формы разработанной для печати, не хотелось для этого все переписывать под LS. Вопрос с импортом удалось решить через @Command([FileExport]; "Microsoft RTF"; file). оставалось решить вопрос, как пользователю дать возможность либо через полноценный диалог выбрать путь для сохранения файла (реализовть не удалось на @-формулах), либо сохранить его в стандартную папку из профиля пользователя. В итоге в ресурсах ibm удалось найти решение:

Функции языка формул @RegQueryValue, может использоваться для возврата ключей в реестре Windows.
Примечание : Эта функция была введена в Lotus Notes / Domino ® версии 5.0.2.

ключа реестра для папки " Мои документы " : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \ Shell Folders-> Personal

В этом примере Возвращает путь к временной переменной " mydocs ":


mydocs := @RegQueryValue("HKEY_CURRENT_USER"; "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; "Personal");

в LotusScript, можно использовать оператор Evaluate, например:

Dim mydocspath As Variant
mydocspath = Evaluate({@RegQueryValue("HKEY_CURRENT_USER"; "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; "Personal")})


ссылка на оригинальный материал


например, я применил конструкцию для акции, которая конвертит адаптированную для печати экранную форму в файлик:

mydocs := @RegQueryValue("HKEY_CURRENT_USER"; "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; "Personal");
file := mydocs+"\\заявка"+RFull+".rtf";
@Prompt([Ok]; "Информация"; "Файл будет сохранен в папке Мои документы: " + file);
@Command([FileExport]; "Microsoft RTF"; file)
 

phantom76

Well-Known Member
Lotus team
25.02.2005
360
9
#6
данная функция может возвращать только нотусовые переменные окружения, виндовые она не возвращает.

Добавлено:
Если я не ошибаюсь, то сначала было написано что на LS нету замен :)
да, про LS я убрал, чтобы не смущало, т.к. это перевод оригинальный ссылки. Найти не мог именно решение под @-формулы :D
 

phantom76

Well-Known Member
Lotus team
25.02.2005
360
9
#8
Полезное решение:


Что в итоге получилось:

Предположим у Вас есть отдельная форма адаптированная для печати из Notes - Требуется ее конвертировать в документ MS Word:

Док открываю по данной форме в режиме редактирования и SaveOption="0" (все поля вычисляемые на печатной форме и править юзеру в итоге не чего) с копированием всех полей в бек-энде, провожу необходимую обработку для трансформации данных для печати. На форме размещаю RT-поле для будущего файлика.
На печатной форме создаю акцию:

Код:
mydocs := @RegQueryValue("HKEY_CURRENT_USER"; "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; "Personal");
file := mydocs+"\\префикс_файла"+RFull+".rtf";
@Command([FileExport]; "Microsoft RTF";file);
@Command( [EditInsertFileAttachment]; file; "1"; "1"; "1"; "1" )
В итоге получим сгенерированный файлик , который будет присоединен в созданное нами RT-поле. В качестве перевалочной базы при сохранении и присоединении файла используется юзерская папка "Мои документы" , после операции файл удаляется командой загружающей его.


обнаружился интересный глюк:

команда @Command([FileExport]; "Microsoft RTF"; file) - не корректно конвертирует документ в RTF-формат, основные замеченные ошибки:

1. рисует даже скрытые сегмены таблиц
2. не объединяет ячейки
3. не выдерживает форматирование ячеек
4. не может конвертировать вложенные таблицы

все эти проблемы наблюдал на клиенте 8.5.1 FP5 Basic , эклипсовая версия работает корректно ( ОС Win XP SP3 , MS Office 2003 )