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

Переменные и разделение памяти в lotusscript

23.09.2015, 14:23. Показов 7518. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Впервые с таким столкнулся, вот и в недоумении :(

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim doc1 As NotesDocument
 
Dim doc2 As NotesDocument
Dim view1 As NotesView
Dim view2 As NotesView
 
...
Set view1 = db.GetView("My View1")
Set doc1 = view1.GetFirstDocument
While Not (doc1 Is Nothng)
Set view2 = db.GetView("My View2")
Set doc2 = view2.GetFirstDocument
While Not (doc2 Is Nothyng)
...
Set doc2 = view2.GetNextDocument(doc2)
Wend
Set doc1 = view1.GetNextDocument(doc1)  (*)
Wend
Во view2 попадается документ с таким же Form как у doc1, и которые есть во view1 -- по завершении внутреннего цикла в строке (*) получаю ошибку: документ не во view1

Получается лотус для каких-то целей "совместил" переменные?! В отладчике видно, что у doc1 поле parentview поменялось с view1 на view2. Как обойти-то эту глупость?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2015, 14:23
Ответы с готовыми решениями:

Разделение в найденной строке на переменные
file.txt: 101;Иванов;Иван; 102;Сидоров;Сергей; 103;Петров;Петр; $data = file("file.txt"); foreach($data as $i => $line) { ...

Разделение строки на переменные по разделителю
В переменной A создержатся Ad,Bc,Cd,Dad . как разделить переменную что б переменная Б равна тому что до первой запятой в переменной A, C...

Разделение строки на переменные разных типов
Помогите с разделением строки Есть String dat dat = "40.10 50.10 60.10 70.10 11:15:23 4-03-2012" необходимо разделить ее на 4...

22
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
23.09.2015, 14:31
1. вынесите Set view2 = ... за первый while!
2. покажите ошибку, которая генерится.
3. выполните код действительно без кода, который вы заменили на ..., возможно там doc1 меняется или убивается
4. если не поможет, то следующий документ можно получать в следующей строке за while, а в конце цикла присваивать обрабатываемому в цикле
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
23.09.2015, 14:55
Цитата Сообщение от oshmianski
1. вынесите Set view2 = ... за первый while!
ставлю на это ;)
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
23.09.2015, 14:55
view1.AutoUpdate = False
Документ может больше не попадать во вьюху по параметрам отбора.
Посмотрите что Вы с ним делаете, если это влияет на формулу отбора, то надо отключать автообновление.
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
23.09.2015, 14:57
Цитата Сообщение от oshmianski
1. вынесите Set view2 = ... за первый while!
2. покажите ошибку, которая генерится.
3. выполните код действительно без кода, который вы заменили на ..., возможно там doc1 меняется или убивается
4. если не поможет, то следующий документ можно получать в следующей строке за while, а в конце цикла присваивать обрабатываемому в цикле
1. Вынес -- не помогло
2. Ошибка 4151: The Document is not in View ИР в строке 51
3. код работал, пока не добавил вьюху, в которой есть документы из основного набора, т.е. поле FORM одинаковое
4.

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Set viewCat = currdb.GetView("СведенияИР")  вспомогательная вьюха
Set view = currdb.GetView("ИР")
Set doc = view.GetFirstDocument
While Not (doc Is Nothyng)
Set nextDoc = view.GetNextDocument(doc)  сделал как рекомендовано
категории
Set docCat = viewCat.GetFirstDocument
While Not (docCat Is Nothyng)
If docCat.IsResponse Then
If docCat.Short_Name(0) = doc.Short_Name(0) Then
Call BordersDrawAndWrite(reportXls, "C" & Cstr(ni%), docCat.ResourceDesc(0))
End If
End If
Set docCat = viewCat.GetNextDocument(docCat)
Wend
 
и вот тут и doc и nextdoc якобы принадлежат "СведенияИР", а не "ИР" как было...
 
я убрал тут код, он не влияет на работу
 
Set doc = nextDoc
Wend
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
23.09.2015, 15:06
Цитата Сообщение от savl
view1.AutoUpdate = False
Документ может больше не попадать во вьюху по параметрам отбора.
Посмотрите что Вы с ним делаете, если это влияет на формулу отбора, то надо отключать автообновление.
Да ничего я с ним не делаю: нашел, вывел поля в Excel-файл, использовал поля для отбора других документов.


--- Добавлено 24 сен 2015. Первое сообщение размещено 24 сен 2015 ---




Цитата Сообщение от ToxaRat
ставлю на это ;)
Выигрыш уходит к казино! Т.е. -- мимо, не помогло.
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
23.09.2015, 15:09
@erhe, меняйте формулу отбора у вспомогательной вьюхи.
Вы обрабатываете только респонсы, нет смысла там держать еще и родителя.
Какая текущая формула?
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
23.09.2015, 15:17
@erhe,
view1.AutoUpdate = False
view2.AutoUpdate = False

если это не помогло, переписывайте на работу с коллекциями
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
23.09.2015, 15:46
Цитата Сообщение от savl
@erhe, меняйте формулу отбора у вспомогательной вьюхи.
Вы обрабатываете только респонсы, нет смысла там держать еще и родителя.
Какая текущая формула?
Знать бы ещё как эти респонсы отобрать. Простой выбор SELECT (Form="СведенияИР") ничего не дает -- выдает пустое множество (на экране пусто, хотя может документы там и есть... сейчас попробую).
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
23.09.2015, 15:54
Да, исправилось. Если брать только респонсы, то сбоев нет. (Странно, что они вообще возникают... :( )
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
23.09.2015, 16:15
видимо, это кеш. похоже на многопоточно незащищенный объект.
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
23.09.2015, 16:32
Цитата Сообщение от oshmianski
видимо, это кеш. похоже на многопоточно незащищенный объект.
Э-э-э, я как бы в самом клиенте сижу, а не в браузере... И как-то нигде не написано, что нужно об этом думать :(
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
23.09.2015, 16:38
в лотусе много чего не написано. если хотите писать на нем (LotusScript, @Formula), придется привыкнуть.
из моей практики: перебор доков по вьюхе очень редно используется (а может и вообще не используется), лучше коллекции, навигаторы, ViewEntryCollection.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
24.09.2015, 22:57
может битый индекс...
тогда жди чудес любых
load updall -R ...


--- Добавлено 25 сен 2015. Первое сообщение размещено 25 сен 2015 ---




Цитата Сообщение от oshmianski
видимо, это кеш. похоже на многопоточно незащищенный объект.
считается потокобезопасным, хотя освобождение автоматическое объектов сделали с версии 5-ой или 6-ой, до того - надо было самому делать Delete doc с присвоением временной переменной
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
25.09.2015, 10:59
смутные воспоминания (или просто глючит меня), но надо поэксперементировать - если из 2-ух вьюшек получить один и тот же док - итератор одной вьюшки его "потеряет"...
вопрос в области: уровень модуля, уровень класса, уровень приложения
и по коду - я не понимаю почему здесь используется перебор доков по вьюшке, а не получается навигатор/коллекция...
0
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 633
25.09.2015, 12:29
Цитата Сообщение от erhe
Call BordersDrawAndWrite(reportXls, "C" & Cstr(ni%), docCat.ResourceDesc(0))
внутри "такого" цикла тоже может быть не хорошо
docCat.ResourceDesc(0) - иногда такие вещи надо избегать (docCat.GetItemValue("ResourceDesc"))
И да


Цитата Сообщение от lmike
навигатор/коллекция...
0
0 / 0 / 0
Регистрация: 04.08.2008
Сообщений: 408
28.09.2015, 12:34
Цитата Сообщение от erhe
Set nextDoc = view.GetNextDocument(doc) сделал как рекомендовано
а для второго цикла почему так же не сделано?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
28.09.2015, 13:40
в этом коде, прежде всего, надо разобраться с логикой
что нужно получить?
если док внутреннего цикла является респонсом с доку внешнего - то к чему весь этот "цирк" с вложением циклов?


--- Добавлено 29 сен 2015. Первое сообщение размещено 29 сен 2015 ---

что мы видим - сканируется ВЕСЬ view1
затем отбираются доки из view2, у кот. значения неких полей совпадают
что мешает создать вьюшку для отчета, у кот. эти условия соблюдаются? (речь не идет о реляциях, если чё ;) )
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
28.09.2015, 21:16
Цитата Сообщение от oshmianski
в лотусе много чего не написано. если хотите писать на нем (LotusScript, @Formula), придется привыкнуть.
из моей практики: перебор доков по вьюхе очень редно используется (а может и вообще не используется), лучше коллекции, навигаторы, ViewEntryCollection.
Да я уже потихоньку ко странностям привыкаю

А по поводу перебора доков во вьюхе... Мне в наследство досталось несколько баз и там полно такого кода. Писал, кстати, товарищ, которого обучали на курсах программирования Лотусу и даже сертификат об этом у него есть...


--- Добавлено 29 сен 2015. Первое сообщение размещено 29 сен 2015 ---




Цитата Сообщение от lmike
смутные воспоминания (или просто глючит меня), но надо поэксперементировать - если из 2-ух вьюшек получить один и тот же док - итератор одной вьюшки его "потеряет"...
вопрос в области: уровень модуля, уровень класса, уровень приложения
и по коду - я не понимаю почему здесь используется перебор доков по вьюшке, а не получается навигатор/коллекция...
"Мы робили как умели"

По поводу навигатора/коллекции -- почитаю, попробую.
0
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 45
28.09.2015, 21:27
Цитата Сообщение от lmike
что мы видим - сканируется ВЕСЬ view1
затем отбираются доки из view2, у кот. значения неких полей совпадают
что мешает создать вьюшку для отчета, у кот. эти условия соблюдаются? (речь не идет о реляциях, если чё ;) )
мешает малый опыт программирования под Лотус.

Например, требуется простая на вид вещь: в документ нужно добавить набор атрибутов. В обычной программе это -- список неограниченного размера. Причем, список из нескольких столбцов -- не проблема. В Лотусе мне известно решение только через встроенную вьюху (у которой первый столбец вычисляется формулой @Text($Ref); просто добавить окно со списком не получится -- выбирается только один столбец значений, а нужно несколько -- документ). И вроде все хорошо, только одно НО -- документы такой вьюхи нельзя редактировать, Лотус прибивает в них поле $Ref и документ выпадает из вьюхи (точнее он в ней остается, но в нужном документе его нет). Можно как-нибудь красиво сделать без встроенных вьюх и полноценной правкой?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2015, 21:27
Помогаю со студенческими работами здесь

Глобальные переменные в памяти
Добрый день, подскажите плииз такое вообще возможно? и имеет ли смысл! Есть одно число (спец-счетчик). Хранится в одной ячейке одной...

Переменные в динамической памяти!
подскажите как реализовать такое задание: Разместите в динамической памяти две переменные типа структура, содержащую информацию о...

Переменные в статической и динамической памяти!
Народ, подскажите как этот рисунок перевести в программу! тоесть как с помощью программы разместить таким образом переменные в памяти

Переменные в постоянной памяти компьютера
у меня есть вопрос: у меня есть TextBox , в нем происходит ввод пароля (при регестрации), как его значение сохранить в определенную...

Выделение памяти под глобальные переменные
Кто - нибудь объясните мне не ведающему почему так: Имеется структура с таким вот содержанием: typedef struct { u8 type; u32...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru