• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Поле Со Списком (как Добавить Пункт В Список)

ученикLN

New member
25.11.2013
4
0
BIT
1
Задача простая. Есть поле со списком, точнее поля. В которых пользователь выбирает значения. Но некоторые значения необходимо в этот список добавлять или удалять. С помощью scripta Новое appendtotextlist добавляет только в поле, список остается прежним.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
RTFM
Читаем про типы полей Combobox, listbox, dialogBox и их свойства.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
Вторая закладка свойств поля, галочка "Allow values not in list" это позволит руками добавлять значение, которого нет в списке.
Но список от этого не изменится. Чтобы список постоянно дополнялся можно сделать так:

1. Надо сделать настроечный документ, в документе сделать поле многозначное со списком значений.
2. В свойствах поля, где выбирают значения, на второй закладке в секции "Choices" вместо "Enter choices (one per line)" делаем "Use Formula fo choices"
3. В окошко ниже пишем формулу @DbLookUP(...), чтобы получать значения из нашего настоечного документа.
4. При сохранении документа так же получаем настроечный документ и смотрим значения.
Если выбранное нами там есть - ничего не делаем, если его нет - добавляем.
Естественно данный настроечный документ должен быть открыт всем для редактирования, но спрятан в UI.

Вот как-то так, не слишком элегантно, да и несколько подводных камней есть (конфликт при сохранении), но решение вполне имеет место быть.
 

ученикLN

New member
25.11.2013
4
0
BIT
1
Вторая закладка свойств поля, галочка "Allow values not in list" это позволит руками добавлять значение, которого нет в списке.
Но список от этого не изменится. Чтобы список постоянно дополнялся можно сделать так:

1. Надо сделать настроечный документ, в документе сделать поле многозначное со списком значений.
2. В свойствах поля, где выбирают значения, на второй закладке в секции "Choices" вместо "Enter choices (one per line)" делаем "Use Formula fo choices"
3. В окошко ниже пишем формулу @DbLookUP(...), чтобы получать значения из нашего настоечного документа.
4. При сохранении документа так же получаем настроечный документ и смотрим значения.
Если выбранное нами там есть - ничего не делаем, если его нет - добавляем.
Естественно данный настроечный документ должен быть открыт всем для редактирования, но спрятан в UI.

Вот как-то так, не слишком элегантно, да и несколько подводных камней есть (конфликт при сохранении), но решение вполне имеет место быть.
Спасибо, попробую. Да. не совсем гладко..

Добавлено:
Вторая закладка свойств поля, галочка "Allow values not in list" это позволит руками добавлять значение, которого нет в списке.
Но список от этого не изменится. Чтобы список постоянно дополнялся можно сделать так:

1. Надо сделать настроечный документ, в документе сделать поле многозначное со списком значений.
2. В свойствах поля, где выбирают значения, на второй закладке в секции "Choices" вместо "Enter choices (one per line)" делаем "Use Formula fo choices"
3. В окошко ниже пишем формулу @DbLookUP(...), чтобы получать значения из нашего настоечного документа.
4. При сохранении документа так же получаем настроечный документ и смотрим значения.
Если выбранное нами там есть - ничего не делаем, если его нет - добавляем.
Естественно данный настроечный документ должен быть открыт всем для редактирования, но спрятан в UI.

Вот как-то так, не слишком элегантно, да и несколько подводных камней есть (конфликт при сохранении), но решение вполне имеет место быть.
Спасибо, попробую. Да. не совсем гладко..
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
176
Посмотрите как работает поле Categories в базе "Библиотека документов".
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
Спасибо, попробую. Да. не совсем гладко..
Можно и совсем "гладко":
1 помещаете на форму поле, где и находится список (дефолтный) для "листа"
2 Use Formula fo choices - @DbLookup или @DbCollumn из служебного вида (или уже существующего, сортированного вида, с нужными доками, дополнив его скрытой колонкой с нужным полем), где для отбора списка для "листа" - вышеозначенное поле. Ну и, конечно, для отобранного сделать @Unuque
3 при дополнении "листа" новым значением, дописываете это значение в поле для выбора.

P.S.
В самом начале, когда ещё нет ни одного сохраненного дока, для "листа" берёте дефолтное значение списка из того-же поля, а не из вида.
 

ученикLN

New member
25.11.2013
4
0
BIT
1
Можно и совсем "гладко":
1 помещаете на форму поле, где и находится список (дефолтный) для "листа"
2 Use Formula fo choices - @DbLookup или @DbCollumn из служебного вида (или уже существующего, сортированного вида, с нужными доками, дополнив его скрытой колонкой с нужным полем), где для отбора списка для "листа" - вышеозначенное поле. Ну и, конечно, для отобранного сделать @Unuque
3 при дополнении "листа" новым значением, дописываете это значение в поле для выбора.

P.S.
В самом начале, когда ещё нет ни одного сохраненного дока, для "листа" берёте дефолтное значение списка из того-же поля, а не из вида.
Да, похоже единственный способ. Он и предлагается в свойствах. Еще раз проутюжил LotusScript, увы зацепиться за перечень в списке не получается. Если в поле ничего не выбрано, возвращает пустоту.
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc =ws.CurrentDocument
Dim item As NotesItem
Dim doc As NotesDocument
Set doc=uidoc.Document
Set item=doc.GetFirstItem("Reg_zakaz")

Forall v In item.Values
Messagebox(v)
End Forall

Хотел сделать так, рядом с полем повесить две кнопочки (Добавить и Удалить) .Пользователь выбирает из списка пункт или свой пишет ,если хочет нажимает добавить в список или выбрав пункт удаляет его из списка кнопкой удалить. Т.к. пунктов с выбором много придется колбасить с представлением.

alexas1, пожалуйста поясните для "листа" это как? Делаешь другую форму с полем списком, как savl советовал, далее представление в котором Dblookup по этому полю.....? И что такое служебное представление (служебный вид)?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
alexas1, пожалуйста поясните для "листа" это как? Делаешь другую форму с полем списком, как savl советовал, далее представление в котором Dblookup по этому полю.....? И что такое служебное представление (служебный вид)?
В течении дня нарисую микропример. -_-
Сорри, за задержку
"служебный вид" - для использования в коде а не для показа в UI (обычно скрытый)
 

Вложения

  • example.zip
    16,2 КБ · Просмотры: 128

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
По дизайну:
Ничего лишнего в доке не сохраняется, вся инфа берётся из вида - для реализации добавил скрытую колонку (ListBox) в уже существующий сортированный вид (v1). Если ListBox (или DialogList) несколько, то в тот же вид добавляется нужное кол-во скрытых колонок.
Формула для поля DefaultList может быть такой:
a := "1 значение":"2 значение":"3 значение":"4 значение";
@Unique(@If (DefaultList="";a;DefaultList :ListBox));
 

ученикLN

New member
25.11.2013
4
0
BIT
1
По дизайну:
Ничего лишнего в доке не сохраняется, вся инфа берётся из вида - для реализации добавил скрытую колонку (ListBox) в уже существующий сортированный вид (v1). Если ListBox (или DialogList) несколько, то в тот же вид добавляется нужное кол-во скрытых колонок.
Формула для поля DefaultList может быть такой:
a := "1 значение":"2 значение":"3 значение":"4 значение";
@Unique(@If (DefaultList="";a;DefaultList :ListBox));

alexas1, спасибо волшебник! Ясно, как белый день и правда гладко! :) А что думаешь над такой задачей. Есть поле список (часто использумых значений) из него пользователь выбирает, может набрать новое, но не сохранять в списке поскольку оно очень редкое и не будет засорять список и внести новое, но сохранить поскольку стало часто используемым. Выборочное сохранение и удаление элементов списка. Этот вариант, наверное, уже по методу savla через один настроечный документ в представлении и складывания списка в поле....?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
Раз требуется более или менее интенсивная работа со списком выбора, логично его держать в отдельном журнале: один элемент списка - один документ журнала.
Для работы со списком можно использовать вот эту мульку LiveSearch немного изменив логику работы:
Для пустого значения в строке поиска и для значений которые не нашлись - показывать в окне отбора ВЕСЬ список с заголовком типа "Выберите из списка или продолжите поиск". Одновременно показать кнопарь "Добавить в список", если поле не пусто, который может создать новый док, из того, что введено.
Для значения в строке поиска, в точности совпадающего с элементом списка, показать кнопарь "Удалить из списка" ("Добавить в список", конечно, скрыть).
Надо понимать, что при интенсивной работе с доками журнала задваивание доков возможно, поэтому использовать unique надо.
Соответственно, при удалении из списка (удаление соответствующего дока) надо удалять все найденные, а не первый. И обработать ситуацию возможной ошибки при удалении из-за отсутствующего дока (кто то мог удалить док, пока юзер был "в процессе")
Конфликтов не будет, интерфейс вроде логичный, задваивание записей в журнале не критично (хотя это можно исключить - только нафига?)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!