Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/163: Рейтинг темы: голосов - 163, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67

Открыть документ из другой БД

13.05.2009, 12:36. Показов 30020. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
У меня есть две БД - основная и дополнительная.
Опишу процесс и что должно произойти:
В основной БД открываю документ (документ открывается в фреймсете - фреймсет поделен на два фрейма, верхний и нижний)=> в док-е есть кнопка, нажимаю ее => выбирается необходимый документ из дополнительной БД => Открывается документ из дополнительной БД.
Документ из доп. БД открывается в новой вкладке, а мне нужно, чтобы он открывался в нижнем фрейме, типа как дополнение к основному документу.
Подскажите... как заставить открываться доп. док (док в дополнительной БД) в нижнем фрейме основной БД???
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2009, 12:36
Ответы с готовыми решениями:

Открыть документ по другой форме...
Собственно сабж. Может кто-нибудь знает способ открытия документа по указанной форме, кроме открытия через EditDocument в событиях...

Как заставить Emb View + Emb Editor открыть документ в другой форме?
Использую связку Embedded View + Embedded Editor. Нужно открыть документ по форме, отличной от содержимого поля Form. Как это сделать? В...

Открыть документ в другой форме
Добрый вечер. Подскажите формулу, чтобы из вида документ открывался в другой форме. Сейчас использую ViewSwitchForm на кнопке в виде,...

23
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 12:54
В нижнем фрейме Content: URL - Computed в формате

Code
1
Notes://SERVER/CZZZ753500290C7C/0/B4F383FA7F754EEAC225757600484ZZZ?OpenDocument
, который смотрит параметр из профайла/энваромента/документа.
Это параметр ты заполняешь под своей кнопкой, которая раньше открывала документ.
После заполнения параметра шмальнуть

Code
1
notesUIWorkspace.ReloadWindow
.
Вроде всё.
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67
13.05.2009, 13:00
Цитата Сообщение от Omh
В нижнем фрейме Content: URL - Computed в формате

Code
1
Notes://SERVER/CZZZ753500290C7C/0/B4F383FA7F754EEAC225757600484ZZZ?OpenDocument
, который смотрит параметр из профайла/энваромента/документа.
Это параметр ты заполняешь под своей кнопкой, которая раньше открывала документ.
После заполнения параметра шмальнуть

Code
1
notesUIWorkspace.ReloadWindow
.
Вроде всё.
А что означают параметры (СЕРВЕР и ОпенДокумент - понятно, а остальное??):

Code
1
Notes://SERVER/CZZZ753500290C7C/0/B4F383FA7F754EEAC225757600484ZZZ?OpenDocument
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 13:05
CZZZ753500290C7C = replicaid базы документа, который ты хочешь показать.
0 - вообще, UNID default view из базы. Можно смело заменить на 0.
B4F383FA7F754EEAC225757600484ZZZ - UNID документа, который ты хочешь показать.
0
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
13.05.2009, 13:16
Только что будет с верхним фреймом после notesUIWorkspace.ReloadWindow ?
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 13:47
А вот это надо проверить.
Может быть и беда будет
Не подумал.
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67
13.05.2009, 13:56
Цитата Сообщение от Omh
В нижнем фрейме Content: URL - Computed в формате

Code
1
Notes://SERVER/CZZZ753500290C7C/0/B4F383FA7F754EEAC225757600484ZZZ?OpenDocument
, который смотрит параметр из профайла/энваромента/документа.
Это параметр ты заполняешь под своей кнопкой, которая раньше открывала документ.
После заполнения параметра шмальнуть

Code
1
notesUIWorkspace.ReloadWindow
.
Вроде всё.
Omh, если я Вас правильно понял, то мне нужно: узнать сервер и бд-файл дополнительной БД; вьюху я так понимаю можно вписать руцями ее название; и еще узнать UnidID документа, который будем открывать из доп. БД. Допустим эти параметры я узнал, как мне их передать в УРЛ фрейма? Заносить эти значения в какие-то поля (например настроечного документа), а потом в УРЛ - брать значения этих полей из настроечного док-а? Так чтоли?

З.Ы. Прошу прощение, если не правильно мыслю - я не ас в Lotus-e
0
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
13.05.2009, 14:03
В Enviroment удобнее всего их запихивать.
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 14:04
San40S, всё правильно говоришь.

UNID view заменяй на 0, не надо название руцями вписывать.
Т.е. на волшебной кнопке в верхнем документы, ты куда-то, откуда легко достать на формуле, пишешь свежесозданный URL.
В нижнем фрейме вычитываешь этот URL в формуле фрейма.
И делаешь ReloadWindow.

P.s. и смело бодяж на "ты", меня стремует, когда меня на "вы" зовут
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67
13.05.2009, 16:00
Цитата Сообщение от Omh
San40S, всё правильно говоришь.

UNID view заменяй на 0, не надо название руцями вписывать.
Т.е. на волшебной кнопке в верхнем документы, ты куда-то, откуда легко достать на формуле, пишешь свежесозданный URL.
В нижнем фрейме вычитываешь этот URL в формуле фрейма.
И делаешь ReloadWindow.

P.s. и смело бодяж на "ты", меня стремует, когда меня на "вы" зовут
Notes://SERVER/CZZZ753500290C7C/0/B4F383FA7F754EEAC225757600484ZZZ?OpenDoc ument
что такое "Notes://"?

В общем у меня вышло следующее:

Code
1
2
3
4
srv := @Environment("Esrv");
db := @Environment("Edbfile");
uid := @Environment("Euid");
Notes://srv/db/0/uid?OpenDocument
но выдает ошибку в этой формуле между srv и db:
---------------------------
Formula Error
---------------------------
Inappropriate (unary) usage of an operator: /
---------------------------
ОК
---------------------------
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 16:28
тебе надо как стринг это слепить:

Code
1
2
3
4
srv := @Environment("Esrv");
db := @Environment("Edbfile");
uid := @Environment("Euid");
{Notes://} + srv + {/} + db + {/0/} + uid + {?OpenDocument}
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67
13.05.2009, 17:03
За вот это спасибо, больше не ругается...


Цитата Сообщение от Omh
тебе надо как стринг это слепить:

Code
1
2
3
4
srv := @Environment("Esrv");
db := @Environment("Edbfile");
uid := @Environment("Euid");
{Notes://} + srv + {/} + db + {/0/} + uid + {?OpenDocument}
В общем, написал формулу в URL Фрейма. При открытии основного документа, ругается, что не находит путь к серверу и нижний фрейм - пустой :(

Я уже незнаю, что делаю не так :(

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Update:
Не вышло у меня так как делал, но... нашел еще один выход:

Code
1
2
3
4
5
6
7
Set newdoc = ДополнительнаяБД.GetDocumentByUNID(res)
If newdoc Is Nothyng Then
Msgbox "Дополнительный документ не найден", 16, "Ошибка"
Else
[b]Call ws.SetTargetFrame("Bottom")[/b]
Call ws.EditDocument(False, newdoc)
End If
Перед открытием доп. документа, просто указывает фрейм в котором открыть, а после открытия можно обратно переназначить фрейм и все

Но, хотелось бы узнать, нету ли минусов в таком методе???
0
0 / 0 / 0
Регистрация: 12.10.2007
Сообщений: 522
13.05.2009, 17:32
Set newdoc = ДополнительнаяБД.GetDocumentByUNID(res)
если newdoc is Nothyng, то будет error(скажет, что не корректный UNID). ставь обработчика
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 17:34
Кстати да, чёт я про settargetframe ваще не подумал.
Наверно, потому что не практикую.
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67
13.05.2009, 18:07
Цитата Сообщение от susinmn
Set newdoc = ДополнительнаяБД.GetDocumentByUNID(res)
если newdoc is Nothyng, то будет error(скажет, что не корректный UNID). ставь обработчика
так там есть:

Code
1
2
If newdoc Is Nothyng Then
Msgbox "Дополнительный документ не найден", 16, "Ошибка"


Цитата Сообщение от Omh
Кстати да, чёт я про settargetframe ваще не подумал.
Наверно, потому что не практикую.
Да я о нем и не знал )
Чисто случайно нашел, попробовал - работает! :(

Omh пасиб тебе огромное за помощь!!!
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
13.05.2009, 18:10
Code
1
If newdoc Is Nothyng Then Msgbox "Дополнительный документ не найден", 16, "Ошибка"
Это не проверка


Code
1
db.GetDocumentByUNID
не возвращает Nothyng в случае неправильного UNIDa.
Он возвращает сразу ошибку.
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 67
13.05.2009, 18:32
Цитата Сообщение от Omh

Code
1
If newdoc Is Nothyng Then Msgbox "Дополнительный документ не найден", 16, "Ошибка"
Это не проверка :(


Code
1
db.GetDocumentByUNID
не возвращает Nothyng в случае неправильного UNIDa.
Он возвращает сразу ошибку.
Упс... точно, я перепутал с GetDocumentByID

А GetDocumentByUNID возвращает lsERR_NOTES_BAD_UNID (4091)

я написал так:

Code
1
2
3
4
5
6
7
8
9
10
On Error Resume Next
...
...
If Err = lsERR_NOTES_BAD_UNID Then
Call ws.SetTargetFrame("Bottom")
Call ws.EditDocument(False, newdoc)
Else
Msgbox "Дополнительный документ не найден", 16, "Ошибка"
 
End If
но не уверен корректно ли, хотя оно и работает
0
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
13.05.2009, 18:38
Гораздо проще писать так:

On Error Resume Next
Set doc = db.getDocumentByUNID()
On Error Goto ErrorHandler
if doc is nothyng then .... <тут обрабатываешь>

А еще проще вынести это в отдельную функцию общего назначения, вместо первых 3х строчек будет одна.
0
Tyo
14.05.2009, 18:08
Цитата Сообщение от K-Fire
Гораздо проще писать так:

On Error Resume Next
Set doc = db.getDocumentByUNID()
On Error Goto ErrorHandler
if doc is nothyng then .... <тут обрабатываешь>

А еще проще вынести это в отдельную функцию общего назначения, вместо первых 3х строчек будет одна.
В такой конструкции немаловажно сбрасывать Err в 0. Т.к. любой последующий анализ Err на неравенство 0 будет истинным. Например, в следующем примере будет труднодиагностируемая ошибка из-за её проявления вне локального контекста (даже если оформить отдельной функцией). Doc2 будет Nothyng несмотря на корректное его получение, если получение doc было с ошибкой.

[codebox]
On Error Resume Next
Set doc = db.getDocumentByUNID()
On Error Goto ErrorHandler
*** ЗДЕСЬ НУЖЕН Err = 0 ***
...

On Error Resume Next
Set doc2 = db.getDocumentByUNID()
On Error Goto ErrorHandler
If Err<>0 then Set doc2=Nothyng
*** И ЗДЕСЬ НУЖЕН Err = 0 ***
[/codebox]
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
14.05.2009, 18:47
Цитата Сообщение от TIA
В такой конструкции немаловажно сбрасывать Err в 0. Т.к. любой последующий анализ Err на неравенство 0 будет истинным. Например, в следующем примере будет труднодиагностируемая ошибка из-за её проявления вне локального контекста (даже если оформить отдельной функцией). Doc2 будет Nothyng несмотря на корректное его получение, если получение doc было с ошибкой.
Интересно, как же у меня код тогда работает? Я много лет такую конструкцию использую.

В общем набросал тестовый скрипт по быстрому, doc2 получается правильно, никаких ошибок не возникает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2009, 18:47
Помогаю со студенческими работами здесь

При нажатии на button открыть текстовый документ или вордовский документ, путь к которому задан программой
Подскажите как сделать ,что бы при нажатии на button открывался текстовый документ или вордовский документ, путь которого задан ...

Как добавить ссылку на документ-основание в другой документ?
Здравствуйте! У меня учебная задача, делаю свою легонькую конфигурацию. Есть документ &quot;Индивидуальный заказ&quot; с тч...

Открыть документ
Я из базы “Name1” перехожу в базу “Name2” , в базе “Name2” по форме “Form1” создаю документ. Подскажите, пожалуйста, как мне сразу после...

Открыть .GZ документ
Привет всем! Расскажите, как распаковать и открыть .GZ документ. Спасибо.

Не могу открыть документ
Здравствуйте!Я переустановил систему данные все сохранил,при их открытии пишет:Приложению Word не удалось открыть документ,т.к пользователь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru