Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.96/245: Рейтинг темы: голосов - 245, средняя оценка - 4.96
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
1

Ls: Азы

24.06.2013, 17:06. Просмотров 44189. Ответов 114
Метки нет (Все метки)

Подскажите пжлст как создать копию выбранного(выделенного) документа

Sub Click(Source As Button)

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession

Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim item As NotesItem

Set uidoc = ws.CurrentDocument
Set pdoc = uidoc.Document
Set db = session.CurrentDatabase

...
...
...

Exit Sub

End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 17:06
Ответы с готовыми решениями:

Азы Для Переработки Готовой Бд Под Web
помогите как примерно готвую БД перевести под web я так понял надо создавать...

Азы С++ 11
Не могу найти ответы: 1. что такое lvalue? 2. что такое rvalue? 3. что такое...

Азы 1с
Предлагаю во избежание "С чего начать..." закрепить эту тему. Скидывать сюда...

Азы Oracle
Всем привет. Только начал изучать Oracle. Появились следующие вопросы: 1)...

Азы массивов
Чем отлечатся вот эта обращение или запись к массиву arr {Запись как в С++} от ...

114
Dorkhom
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 101
24.06.2013, 17:36 2
Код
Dim copyDoc as NotesDocument
Set copyDoc = pdoc.CopyToDatabase(db)
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
24.06.2013, 17:39 3
Вопрос из серии RTFM.
Смотри хелп дизайнера.
Класс NotesDatabase, метод CreateDocument.
Класс NotesDocument, методы CopyAllItems, CopyToDatabase, ComputeWithForm (это не всегда нужно), Save

Есть аналогичные классы в Java, только называются иначе: Database и Document, методы там есть.
Ветка FAQ: http:///forum35.html
С чего начать:
0
otyxos
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
24.06.2013, 20:40 4
Dim-ok для кнопки в виде:

.SpoilerTarget">Спойлер: Раскрывающийся Текст


Код
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim s As New NotesSession
Dim db As NotesDatabase
Dim SelectedDocInView As NotesDocument
Set uiview = ws.CurrentView
Set db = s.CurrentDatabase
получаем док, выделенный в виде (на котором курсор)
Set SelectedDocInView = db.GetDocumentByID(uiview.CaretNoteID)
делаем его копию в ту-же базу
Call SelectedDocInView.CopyToDatabase(db)
обновляем, что-бы сразу появился в виде
Call ws.ViewRefresh
End Sub
плюс рекомендации от savl-a
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
25.06.2013, 13:05 5
Спасибо ребята, помогли! Сижу классы штудирую
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
25.06.2013, 14:58 6
При копировании документа, необходимо возрастание поля "Organ" на 1
Ругается на несоответствие типов:

Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument

Set doc = ws.CurrentDocument
Organ - имя поля 1документа
Organ = doc.FieldGetText("Organ")
Organ - имя поля копии документа
Organ = Organ + 1
Call doc.FieldSet.Text("Organ", Organ)
0
Kyzoryk86
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
25.06.2013, 15:00 7
Цитата Сообщение от Dim-ok
При копировании документа, необходимо возрастание поля "Organ" на 1
Ругается на несоответствие типов:

Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument

Set doc = ws.CurrentDocument
Organ - имя поля 1документа
Organ = doc.FieldGetText("Organ")
Organ - имя поля копии документа
Organ = Organ + 1
А почитать в хелпе какой тип данных возвращает FieldGetText?
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
25.06.2013, 15:10 8
Dim-ok
Опять же Хелп:NotesUIWorkspace, NotesUIDocument

NotesUIWorkspace.CurrentDocument - возвращает объект класса NotesUIDocument
И вот уже у этого объекта есть метод FieldGetText.
А у NotesDocument, который у тебя в коде, такого метода нет. Вот и ошибка.
Сделай себе обработчик ошибок:

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
Sub Click(Source As Button) для агента это Sub Initialize
On Error goto handler
 
{твой код кнопки}
 
Goto endh
 
handler:
Msgbox {Error #} & Err & {: } & Error$ & { in line } & Erl
resume Endh
endh:
End Sub
Если работать с NOtesDocument, то надо использовать методы ReplaceItemValue и GetItemValue
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
25.06.2013, 15:51 9
savl, прописал корректно сейчас, ошибок в Designer не показывает, а в lotuse(пользователя) о5 пишет "Несоответствие типов в методе OP_IS: найдено EMPTY, ожидался Unknown@.
Сейчас попробую прописать аналогию с использованием методов ReplaceItemValue и GetItemValue
0
ToxoRot
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
25.06.2013, 19:42 10
Organ = doc.GetItemValue ("Organ")(0)
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
26.06.2013, 10:10 11
с аналогией пока худо, вернулся к началу ^_^

Присваивание значения в поле документа
Set uidoc = ws.CurrentDocument

Organ = uidoc.FieldGetText("Organ") (ругается на эту строку в режиме пользователя на типы)
Call uidoc.FieldSetText("Organ", Organ)

что может быть о5 нитак то?
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
26.06.2013, 10:38 12
LotusScript
1
2
Dim Organ as String
Organ = uidoc.FieldGetText("Organ")
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
26.06.2013, 10:53 13
savl, тип проставлял сначала да...

LotusScript
1
2
3
4
5
6
7
получаю представление, где и создана кнопка
Dim ws As New NotesUIWorkspace
Dim UIview As NotesUIView
Set UIview = ws.CurrentView
 
получаем документ
Set uidoc = ws.CurrentDocument

Добавлено: при создании формы, в поле Organ прописан тип "число"
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
26.06.2013, 11:05 14
Dim-ok
ws.CurrentDocument возвращает документ открытый на экране...
Если он закрыт, его так не получить. Вернее можно получить, если какой-то другой открыт.
Хочешь получить из представления, надо действовать по другому.
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
26.06.2013, 11:11 15
savl, можно намекнуть как по другому? Да, действую из представления
0
sovt
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
26.06.2013, 11:19 16
LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim ws As New NotesUIWorkspace
Dim currNoteID As String
Dim ses As New NotesSession
Dim parentDoc As NotesDocument
Dim childDoc As NotesDocument
dym Organ as variant
 
currNoteID = ws.CurrentView.CaretNoteID
Set parentDoc = ses.CurrentDatabase.GetDocumentByID(currNoteID)  документ из представления, копия которого будет сделана
If parentDoc Is Nothyng Then Error 5002, "Ошибка при получении основного договора"
Set childDoc = parentDoc.CopyToDatabase( ses.CurrentDatabase)
Organ = parentDoc .GetItemValue ("Organ")(0)  получить значение, может быть ошибка, если пустое
Call childDoc.ReplaceItemValue("Organ ",Cint(Organ) +1)  +1
call ws.EditDocument(true,childDoc)  Открыть на редактирование
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
26.06.2013, 11:32 17
Ошибок не обнаружено, сейчас буду разбираться дальше, спасибо за новую мысль!
0
Kyzoryk86
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
26.06.2013, 11:40 18
Цитата Сообщение от savl

LotusScript
1
2
3
4
        dym Organ as variant
Organ = parentDoc .GetItemValue ("Organ")(0)  получить значение, может быть ошибка, если пустое
Call childDoc.ReplaceItemValue("Organ ",Cint(Organ) +1)  +1
all ws.EditDocument(true,childDoc)  Открыть на редактирование
Че то взрыв мозга какой то...

Organ - если поле числовое и обязательно заполнено то так

LotusScript
1
2
3
4
        Dim Organ as integer Если номера бывают большие то лучше сразу Long
Organ = parentDoc.GetItemValue ("Organ")(0)
Call childDoc.ReplaceItemValue("Organ ",Organ + 1)  +1
all ws.EditDocument(true,childDoc)  Открыть на редактирование
Organ - если поле может быть пустым то нужно проверять че там в поле, и принимать соотв. действия
устанавливать какое либо значение, не копировать документ...от задачи зависит
0
Dymok-163rus
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
26.06.2013, 11:53 19
Да, поле числовое - это порядковый номер документа, у меня вообще задача:
При нажатии на кнопку(в представлении) должны создаваться копии документа(сколько док-тов должно создаться будет оговорено позже, но точно ни один) по форме родителя, и чтобы поле organ в каждом последующем док-те возрастало на +1
0
otyxos
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
26.06.2013, 12:01 20
Call childDoc.ReplaceItemValue("Organ ",Cint(Organ) +1) +1
так не пойдет, значение в childDoc.Organ не изменится
добавить единицу надо так: childDoc.Organ = Organ +1
и если не контролировать док открытием в UI, то после присвоения - сохранить и обновить View
Call childDoc.Save(True,False)
Call ws.ViewRefresh
Dim-ok если не получится - выкладывай весь свой код кнопки, чтобы разобрать ошибки по твоему коду раз и навсегда.

PS. И пользуйся дебагером, что-бы понять, что накодил (Tools - Debug Lotus Script - поставить галочку)
Что-бы оно заработало, надо переоткрыть вид (или базу).
0
26.06.2013, 12:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 12:01

Азы Конфигурации
По немного изучаю азы программирования 1 с и за одно пишу программку для себя....

Азы программирования
Здравствуйте, коллеги. Помогите начинающему разобраться в решении задач....

Самые азы
Собственно перехожу с консоли на гуи, не получается пока найти хорошую книгу по...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru