kor
|
|
1 | |
Lotus Script07.08.2005, 12:25. Показов 82338. Ответов 35
Метки нет (Все метки)
Здавствуйте... Опять обращаюсь за помощью
предположим вот имеется код по присвоению по кнопке полю значения Код
Sub Click(Source As Button) Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim User As Variant Call workspace.EditDocument( True ) Set uidoc = workspace.CurrentDocument User = uidoc.FieldGetText( "status") Print User User = "under repair" Call uidoc.FieldSetText("status" ,User) Call uidoc.Refresh End Sub Суть задачи такова... имеется большой список техники. Чтобы отправить её в ремонт предположим надо наэать кнопку которая выполняет этот скрипт и она меняет значение поля на under repair. Но вот что не могу сообразить как сделать так чтобы по нажатию на эту кнопку заполнялось поле на under repair (это выполняется) и открывалась форма с полями которые надо заполнить для того чтобы определить кто отдал в ремонт технику когда какая поломка итд. В общем я ищу какое то подобие команды @Command....Compose....чтобы потом создать историю поломок. А вот как ещё это открытие привязать не знаю рылся в хелпе не нашёл...и как это всё привязать? какой класс нужен ещё? |
07.08.2005, 12:25 | |
Ответы с готовыми решениями:
35
Lotus Script Пауза В Lotus Script Lotus Script+java Agent Xml Parser + Lotus Script |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
07.08.2005, 13:04 | 2 |
Для: Gor
Тебе нужно создать документ-ответ: Код
Sub Click(Source As Button) Dim session As New NotesSession Dim ws As New NotesUIWorkspace Dim newdoc As New NotesDocument(session.CurrentDatabase) newdoc.Form = "Имя формы" Call newdoc.MakeResponse(ws.CurrentDocument.Document) Call ws.EditDocument(True, newdoc) End Sub
0
|
0 / 0 / 2
Регистрация: 07.05.2005
Сообщений: 743
|
|
07.08.2005, 13:42 | 3 |
или вызывай диалог там все заполняй а потом выставляй в нужных документах значения
0
|
|
|
07.08.2005, 17:14 | 4 |
Помогите!!!!!!Нужно написать script(для почт.сервера).Задание такое:отбирать письма,отправляемые по признаку наличия номера 8095ххххххх в теме и отсылать их на определённные адресс.Очень большое спасибо, если кто сможет!
|
0 / 0 / 2
Регистрация: 07.05.2005
Сообщений: 743
|
|
07.08.2005, 22:39 | 5 |
Поставь правила на сервере
0
|
kor
|
|
08.08.2005, 09:13 | 6 |
Но тут возникает ещё один тогда небольшой вопрос...
Каким образом потом провести снятие с ремонта? Ведь надо будет потом опять изменить поле статус на пустое по кнопке (это ещё реализуемо) и удалить респонс документ именно к этой записи где записаны пометки о ремонте (кто отдал, когда итд.) Вот как удалить респонс? Я предполагаю все записи об оборудовании находящемся в ремонте хранить в отдельной вьюхе. Как лучше реализовать именно это удаление записей когда оборудование придёт с ремонта? |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
08.08.2005, 09:22 | 7 |
Для: Gor
А зачем удалять ответ ? Он пойдет у тебя в историю для этой техники. А реализовать, наверное, лучше так: документ-ответ у тебя создается когда техника в ремонт ушла. Т.е. там надо сделать кнопку, вроде "Пришел с ремонта". По нажатию которой меняется статус у главного документа (который описывает технику) и заносится дата возвращения из ремонта в Response-документ.
0
|
kor
|
|
08.08.2005, 13:02 | 8 |
Не пойму в чём ошибка всё вроде бы правильно делаю....
Создал по кнопке респонс документ как и советовали Код
Sub Postsave(Source As Notesuidocument) Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim User As Variant Call workspace.EditDocument( True ) Set uidoc = workspace.CurrentDocument User = uidoc.FieldGetText( "status") Print User User = "under repair" Call uidoc.FieldSetText( "status" ,User) Call uidoc.Refresh End Sub Но сейчас в основной вьюхе где лежит весь список оборудования не отображается поле статус в колонке когда сохраняешь респонс. Формула отбора там во вьюхе где всё оборудование лежит такая: SELECT Form = "Printer_S" & !@IsResponseDoc (Printer_S это форма по которой создавался весь список об-ия) И насчёт кнопки пришёл с ремонта. Всё не так видимо просто.... Ведь надо будет по приходу с ремонта опять заполнять уже новую форму кто принял с ремонта во сколько когда цена ремонта итд. Т.е. как я понимаю видимо опять придётся сделать ещё одну кнопку которая бы делала опять же новый респонс с другими полями и на событии опять же постсэйв вешать код для очистки этого поля? к примеру такой какой нить????? Код
Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim User As Variant Call workspace.EditDocument( True ) Set uidoc = workspace.CurrentDocument User = uidoc.FieldGetText( "status") Print User User = "" Call uidoc.FieldSetText("status" ,User) Call uidoc.Refresh |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
08.08.2005, 13:18 | 9 |
<!--QuoteBegin-Gor+9:08:2005, 11:49 -->
<span class="vbquote">(Gor @ 9:08:2005, 11:49 )</span><!--QuoteEBegin-->Но сейчас в основной вьюхе где лежит весь список оборудования не отображается поле статус в колонке когда сохраняешь респонс. [snapback]23183" rel="nofollow" target="_blank[/snapback]?[/quote] А почему он должен отображаться ? Поле статуса ты меняешь у response-документа, которые не отображаешь в представлении. Меняй поле статуса не у response, а у главного документа. <!--QuoteBegin-Gor+9:08:2005, 11:49 --> <span class="vbquote">(Gor @ 9:08:2005, 11:49 )</span><!--QuoteEBegin-->И насчёт кнопки пришёл с ремонта. Всё не так видимо просто.... Ведь надо будет по приходу с ремонта опять заполнять уже новую форму кто принял с ремонта во сколько когда цена ремонта итд. Т.е. как я понимаю видимо опять придётся сделать ещё одну кнопку которая бы делала опять же новый респонс с другими полями и на событии опять же постсэйв вешать код для очистки этого поля? к примеру такой какой нить????? [snapback]23183" rel="nofollow" target="_blank[/snapback]?[/quote] Я бы сделал все это в одном документе. Одна поломка (с отчетом о ремонте) - один документ. Просто вначале не заполняешь некоторые поля, которые заполняешь когда техника вернется с ремонта (можно их скрывать в зависимости от статуса). Но если ты хочешь отдельным документом, то делай форму Response-To-Response. И будет у тебя вьюха с иерархией - документ с техникой, к нему дочерние с поломкой, к ним дочерние с отчетом о ремонте.
0
|
kor
|
|
08.08.2005, 13:35 | 10 |
тоже верно)
У меня были мысли сделать это всё в одном документе просто скрытие я не знаю как написать) его же надо прямо в поля записать...в hide paragraph.........is true Просто тут условие какое то хитрое - одна группа полей должна скрываться когда нажимаешь кнопку с одним названием например "в ремонт" а другая группа полей должна быть открытой и наоборот... |
kor
|
|
08.08.2005, 14:00 | 11 |
Код
Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim User As Variant Call workspace.EditDocument( True ) Set uidoc = workspace.CurrentDocument User = uidoc.FieldGetText( "status") Print User User = "under repair" Call uidoc.FieldSetText( "status" ,User) Call uidoc.Refresh Я так понимаю поле значит должно status быть в основном документе? А событие всё равно на постсэйв в респонсе? А как тогда обратиться к основному документу к полю status из респонса в постсэйв?? Всё тоже самое только Set uidoc = workspace.???????? и вот на этом месте должно быть имя формы? А он распознает то что ему надо именно к текущему документу статус применить (поменять в смысле) тогда же он вроде ко всем сразу применит документам статус :blink: ?? |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
08.08.2005, 14:23 | 12 |
<!--QuoteBegin-Gor+9:08:2005, 12:22 -->
<span class="vbquote">(Gor @ 9:08:2005, 12:22 )</span><!--QuoteEBegin-->Просто тут условие какое то хитрое - одна группа полей должна скрываться когда нажимаешь кнопку с одним названием например "в ремонт" а другая группа полей должна быть открытой и наоборот... [snapback]23186" rel="nofollow" target="_blank[/snapback]?[/quote] Первая должна быть открыта всегда. Вторая - только после ремонта. Имхо, так правильнее. Статус надо сделать и в главном, и в респонсе. Пока у респонса статус "в ремонте", вторую группу полей не показываем. Статус можно даже не по кнопке сделать, а из списка выбирать. Тебе надо получить back-end документ родителя. Например в PostSave респонса пишем: Код
Sub Postsave(Source As Notesuidocument) Dim ws As New NotesUIWorkspace Dim session As New NotesSession Dim doc As NotesDocument Set doc = session.CurrentDatabase.GetDocumentByUNID(Source.Document.ParentDocumentUNID) doc.Status = Source.Document.Status Call doc.Save(True, True) End Sub И сразу настрой права (поля Authors/Readers).
0
|
kor
|
|
08.08.2005, 14:40 | 13 |
Код
Sub Click(Source As Button) Dim session As New NotesSession Dim ws As New NotesUIWorkspace Dim newdoc As New NotesDocument(session.CurrentDatabase) newdoc.Form = "Имя формы" Call newdoc.MakeResponse(ws.CurrentDocument.Document) Call ws.EditDocument(True, newdoc) End Sub Этот код как было описано создаёт респонс документ, а почему тогда поля типа computed в нём не отображаются взятые из родительского. Причём они не отображаются только тогда когда его создаёшь через Lotus script а если на @ формулах перейти @Command([compose];"название респонса") то все поля которые в ресонсе computed отображаются нормально |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
08.08.2005, 15:30 | 14 |
Т.е. как не отображаются ?
Какая формула у computed полей ?
0
|
kor
|
|
08.08.2005, 15:50 | 15 |
ТТТАААККК))))
ок) попробую описать сначала всю ситуацию которая сейчас возникла. Может так понятней будет. Просто вопросов много накопилось... за всё это обсуждение и что то не сходится помоему... Что мы имеем: имеем список оборудования записаный во вьюху заполняется он по родительской форме к примеру MAT. Задача: Чтобы во вьюхе с оборудованием при постановке на ремонт техники отображался статус в отдельном столбце. (к примеру on repair) и при снятии он убирался. Также должна быть ещё одна вьюха фиксирующая все отправки на ремонт и приём с ремонта. Выполнение: Создаём поле Status в родительском документе пускай оно будет всегда скрытое. В родительском документе должны быть 2 кнопки отправка техники на ремонт и снятие с ремонта. Причём кнопка снятие с ремонта должна быть скрыта всегда если у родительского документа нету документа ответа????(писал я тут про это хитрое условие скрытия)Не соображу как это скрытие написать.... Отправка техники на ремонт осуществляется нажатием одной из кнопок в данном случае onrepair. По нажатию кнопки создаётся по скрипту документ ответ: Код
Sub Click(Source As Button) Dim session As New NotesSession Dim ws As New NotesUIWorkspace Dim newdoc As New NotesDocument(session.CurrentDatabase) newdoc.Form = "Имя формы" Call newdoc.MakeResponse(ws.CurrentDocument.Document) Call ws.EditDocument(True, newdoc) End Sub Но при нажатии кнопки onrepair поля для снятия с ремонта должны скрываться(здесь тоже как написать скрытие не очень понятно) . В документе ответе на событии постсэйв должен висеть скрипт который бы изменял поле статус в родительском документе на onrepair? Код
Sub Postsave(Source As Notesuidocument) Dim ws As New NotesUIWorkspace Dim session As New NotesSession Dim doc As NotesDocument Set doc = session.CurrentDatabase.GetDocumentByUNID(Source.Document.ParentDocumentUNID) doc.Status = Source.Document.Status Call doc.Save(True, True) End Sub А во вьюхе со всеми поломками отображать надо именно этот респонс? как раз со всеми полями? просто в Select будет имя этого респонса и всё? |
kor
|
|
08.08.2005, 15:58 | 16 |
так они же и так должны отображаться если одно поле допустим Editable в родительском а другое computed в респонсе и свойство у формы респонса
Formulas inherit values from selected documents...а в value у полей написаны только их названия без формул. Вроде бы так всегда computed отображались...Даже пробовал в этой базе документ с помощью Compose открыть и все поля computed отображаются.. а если этот скрипт на создание пишешь то нет.... |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
09.08.2005, 11:25 | 17 |
Для: Gor
Как бы я сделал: В родительском документе две кнопки. Одна создает документ с описанием поломки, другая его открывает (при возврате из ремонта). По первой все понятно. По второй. Пишешь код, который перебирает все документы-ответы и проверяет статус. Если находим ответ со статусом "В ремонте" (по идее таких должно быть не больше одного), то открываем его на редактирование. Иначе выводим сообщение, что оборудование рабочее :blink:. В документе с поломкой есть поле "Status". И кнопка (вроде, "Ремонт завершен"), которая это поле обнуляет. При создании документа с поломкой (по первой кнопке из родителя) автоматически ставится статус "В ремонте". Дополнительные поля (которые заполняются, когда ремонт закончен) скрываем формулой Status="В ремонте". Также делаем ссылку на главный документ для удобства. В Post Save документа с поломкой пишем код, который изменяет статус родителя в зависимости от статуса документа. В главном документе делаем встроенное представление, которое показывает все документы-ответы. Это и будет историей. <!--QuoteBegin-Gor+9:08:2005, 14:45 --> <span class="vbquote">(Gor @ 9:08:2005, 14:45 )</span><!--QuoteEBegin-->Даже пробовал в этой базе документ с помощью Compose открыть и все поля computed отображаются.. а если этот скрипт на создание пишешь то нет.... [snapback]23196" rel="nofollow" target="_blank[/snapback]?[/quote] Т.к. когда делаешь через скрипт, то ты заранее создаешь back-end документ и открываешь его во front-end (т.е. фактически документ получается не вновь созданный и значения не наследуются). Когда делаешь через формулу, то там back-end документ создается только после сохранения front-end документа(документ вновь созданный и значения наследуются). Вроде так. Через скрипты надо использовать формулу для наследования значений полей. Код
@GetDocField($Ref; "Имя поля в родителе")
0
|
kor
|
|
09.08.2005, 12:36 | 18 |
Спасибо большое попробую твой вариант реализовать Medevic!
Ну уж если чего не допойму постить уж в эту тему буду не ругайте меня сильно матным языком :D |
kor
|
|
09.08.2005, 15:17 | 19 |
Для: Medevic
Всё вроде бы нормально кнопки по скрытию работают, снятие с ремонта вроде бы тоже продвигается удачно... не совсем корректно работает одна вещь... Например создаём респонс по скрипту (из родительского на него выходим по кнопке), Потом на событие PostOpen респонса я меняю поле статус в респонсе. Оно успешно меняется. Когда вношу изменения в респонс и сохраняю там на событии PostSave висит скрипт который присваивет полю из родительского документа значение статуса из респонса который уже сменен по событию PostOpen в респонсе, НО!!!! 2 маленькие проблемки при этом если закрываем респонс, во вьюхе значение колонки статус не меняется сразу же. Тоже самое и в родительском. Только если заново открываешь родительский и вьюху там уже статус меняется... и + почему то не работает PostSave в респонсе вообще если сохранение проводится по кнопке а не когда сам документ предлагает себя сохранить. В кнопке сохранения @Command([FileSave]); @Command([FileCloseWindow]) |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
09.08.2005, 15:54 | 20 |
<!--QuoteBegin-Gor+10:08:2005, 14:04 -->
<span class="vbquote">(Gor @ 10:08:2005, 14:04 )</span><!--QuoteEBegin-->Например создаём респонс по скрипту (из родительского на него выходим по кнопке), Потом на событие PostOpen респонса я меняю поле статус в респонсе. [snapback]23257" rel="nofollow" target="_blank[/snapback]?[/quote] Это зачем ты так делаешь ? Если ты хочешь инициализировать вычисляемое поле при создании документа, то использую в нем формулу типа: Код
@If(@IsNewDoc;"Значение";@ThisValue) <span class="vbquote">(Gor @ 10:08:2005, 14:04 )</span><!--QuoteEBegin-->Оно успешно меняется. Когда вношу изменения в респонс и сохраняю там на событии PostSave висит скрипт который присваивет полю из родительского документа значение статуса из респонса который уже сменен по событию PostOpen в респонсе, НО!!!! 2 маленькие проблемки при этом если закрываем респонс, во вьюхе значение колонки статус не меняется сразу же. Тоже самое и в родительском. Только если заново открываешь родительский и вьюху там уже статус меняется... [snapback]23257" rel="nofollow" target="_blank[/snapback]?[/quote] Если я правильно понял, то так и должно быть. :D Жми F9 для обновления. <!--QuoteBegin-Gor+10:08:2005, 14:04 --> <span class="vbquote">(Gor @ 10:08:2005, 14:04 )</span><!--QuoteEBegin-->почему то не работает PostSave в респонсе вообще если сохранение проводится по кнопке а не когда сам документ предлагает себя сохранить. В кнопке сохранения @Command([FileSave]); @Command([FileCloseWindow]) [snapback]23257" rel="nofollow" target="_blank[/snapback]?[/quote] Должно работать всегда. Проверь дебаггером.
0
|
09.08.2005, 15:54 | |
09.08.2005, 15:54 | |
Помогаю со студенческими работами здесь
20
Свойства Представления Из Lotus Script Вычисление медианы на lotus script получение Guid на Lotus Script Из формул запустить Lotus Script Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |