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

Тема в разделе "Lotus - Программирование", создана пользователем phantom76, 9 июл 2012.

  1. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Сам искал решение для получения пути к папке "Мои документы" через @-формулы.

    Поясню, возможно кому-то пригодится ( позволяет быстро перекинуть в *.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)
     
  2. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Environ[$] ( { environName | n } )

    не?
     
  3. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    ну так это на LS а нужно получить на @-формулах
     
  4. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Если я не ошибаюсь, то сначала было написано что на LS нету замен :)
     
  5. ABarmin

    ABarmin Гость

  6. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    данная функция может возвращать только нотусовые переменные окружения, виндовые она не возвращает.

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Максимум, что у меня удавалось получить, это директорию текущего пользователя в Users (Document and Settings); "Мои документы" ей не возвратить.
     
  8. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Полезное решение:


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

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

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

    Код (Text):
    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 )
     
Загрузка...

Поделиться этой страницей