Скорость выполнения Действий

Тема в разделе "Lotus - Администрирование", создана пользователем Kron, 28 дек 2006.

  1. Kron

    Kron Гость

    :) Все утра Доброго, Вопрос при выполнеии Действий на формирование формы для печати процесс идет очень долго, как можно ускорить размер БД 4 ГБ около 100000 документов. Может важно информация берется в форму из разных форм и представлений вывод по LotusScript
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Kron
    Всё зависит от скрипта(если проход по докам каким нить ГетНехтНТдок), если еще и к представлению долго никто не обращался то канечно затруднит
     
  3. Kron

    Kron Гость

    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    ' Dim ns As notessession
    Dim db As notesdatabase
    Dim view As notesview
    Dim doc1 As notesdocument
    Dim doc2 As notesdocument
    Dim dc As notesdocumentcollection
    Dim i As Integer
    Set doc1= source.document
    Set db = doc1.parentdatabase
    Set view = db.getview("(view1)")
    Set dc = view.GetAllDocumentsByKey(doc1.AgentShortName(0))
    ' i = 0
    j=1
    For i = 1 To dc.count
    Set doc2 = dc.Getnthdocument(i)
    ' doc1.ReplaceItemValue("F1_"+cstr(i),)
    If doc2.PersonalNotPrintInForm(0)<>"НЕ показывать в карточке обновления" Then
    If doc2.PersonalDBaseUpdateUser(0)="Ответственный за пополнение БД" Then
    Call doc1.ReplaceItemValue("F0_"+Cstr(j),"+")
    End If
    If doc2.PersonalAccountUser(0)="Получатель платежных документов" Then
    Call doc1.ReplaceItemValue("F1_"+Cstr(j),"$")
    End If
    If doc2.PersonalKodeksUser(0)="Пользователь ИПС Кодекс" Then
    Call doc1.ReplaceItemValue("F2_"+Cstr(j),"K")
    End If
    Call doc1.ReplaceItemValue("F3_"+Cstr(j),doc2.PersonalAllName(0))
    Call doc1.ReplaceItemValue("F4_"+Cstr(j),doc2.PersonalDolg(0))
    Call doc1.ReplaceItemValue("F5_"+Cstr(j),doc2.PersonalWorkPhone(0))
    Call doc1.ReplaceItemValue("F6_"+Cstr(j),doc2.PersonalWorkRoom(0))
    If doc2.PersonalBDate(0)<>"" Then
    Call doc1.ReplaceItemValue("F7_"+Cstr(j),"*")
    End If
    j = j + 1
    End If
    Next
    ' последние обновления
    Set view = db.GetView("(view3)")
    Set dc = view.GetAllDocumentsByKey(doc1.AgentShortName(0))
    i = 1
    Set doc2= dc.GetLastDocument
    While i<3 And Not (doc2 Is Nothing)
    If doc2.UpdateContactCondition(0)<>"Выдано" Then
    Call doc1.ReplaceItemValue("F10_1_"+Cstr(i),doc2.UpdateContactMonth(0))
    Call doc1.ReplaceItemValue("F10_2_"+Cstr(i),doc2.UpdateContactWeek(0))
    Call doc1.ReplaceItemValue("F10_3_"+Cstr(i),doc2.UpdateContactManager(0))
    Call doc1.ReplaceItemValue("F10_4_"+Cstr(i),Format(doc2.UpdateContactFactDate(0),"dd.mm.yyyy"))
    ' Call doc1.ReplaceItemValue("F10_5_"+Cstr(i),doc2.ColumnValues(7))
    Call doc1.ReplaceItemValue("F10_6_"+Cstr(i),Format(doc2.UpdateContactFactTime(0),"hh:mm"))
    Call doc1.ReplaceItemValue("F10_10_"+Cstr(i),doc2.Update_number(0))
    i = i+1
    End If
    Set doc2 = dc.GetPrevDocument(doc2)
    Wend
    ' последние контакты
    'Set view = db.GetView("(view2)")
    'i = 1
    'Set doc2=view.GetDocumentByKey(doc1.AgentShortName(0))
    'While i<=2 And Not (doc2 Is Nothing)
    ' Call doc1.ReplaceItemValue("F11_1_"+Cstr(i),Format(doc2.ContactExecutorFactDate(0),"dd.mm.yyyy"))
    ' Call doc1.ReplaceItemValue("F11_2_"+Cstr(i),Format(doc2.ContactExecutorFactTime(0),"hh:mm"))
    ' Call doc1.ReplaceItemValue("F11_3_"+Cstr(i),Format(doc2.ContactExecutorPlanDate(0),"dd.mm.yyyy"))
    ' Call doc1.ReplaceItemValue("F11_4_"+Cstr(i),doc2.ContactDescription(0))
    ' Call doc1.ReplaceItemValue("F11_5_"+Cstr(i),Format(doc2.ContactDate(0),"dd.mm.yyyy"))
    ' Call doc1.ReplaceItemValue("F11_6_"+Cstr(i),doc2.ContactRezult(0))
    ' i = i+1
    ' Set doc2 = view.GetNextDocument(doc2)
    ' If Not doc2 Is Nothing Then
    ' If doc2.ContactAgent(0)<>doc1.AgentShortName(0) Then
    ' Set doc2 = Nothing
    ' End If
    ' End If
    'Wend
    End Sub



    Вот Такой Код вроде ни чего особенного, раньше не тормозило :)
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    хм... как я и думал, первое, постараться избавиться от
    Set doc2 = dc.Getnthdocument(i)
     
  5. Kron

    Kron Гость

    Set doc2 = dc.Getnthdocument(i) поплывет форма и станет не актуальна, просто проблема в том что при начальном формировании бд заложили несколько форм Agent (карточка организации),Personal(карточка физ лица в этой организации),Contact(контакты с физлицом),UpdateContact(контакты обновления физ лица), вот и затык может проще по новой все написать? :)
     
  6. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    хм..
    Код (Text):
    For i = 1 To dc.count
    Set doc2 = dc.Getnthdocument(i)
    ' doc1.ReplaceItemValue("F1_"+cstr(i),)
    If doc2.PersonalNotPrintInForm(0)<>"НЕ показывать в карточке обновления" Then
    If doc2.PersonalDBaseUpdateUser(0)="Ответственный за пополнение БД" Then
    Call doc1.ReplaceItemValue("F0_"+Cstr(j),"+")
    End If
    If doc2.PersonalAccountUser(0)="Получатель платежных документов" Then
    Call doc1.ReplaceItemValue("F1_"+Cstr(j),"$")
    End If
    If doc2.PersonalKodeksUser(0)="Пользователь ИПС Кодекс" Then
    Call doc1.ReplaceItemValue("F2_"+Cstr(j),"K")
    End If
    Call doc1.ReplaceItemValue("F3_"+Cstr(j),doc2.PersonalAllName(0))
    Call doc1.ReplaceItemValue("F4_"+Cstr(j),doc2.PersonalDolg(0))
    Call doc1.ReplaceItemValue("F5_"+Cstr(j),doc2.PersonalWorkPhone(0))
    Call doc1.ReplaceItemValue("F6_"+Cstr(j),doc2.PersonalWorkRoom(0))
    If doc2.PersonalBDate(0)<>"" Then
    Call doc1.ReplaceItemValue("F7_"+Cstr(j),"*")
    End If
    j = j + 1
    End If
    Next
    заметь

    Код (Text):
    Set doc2 = dc.GetFirstdocument
    i = 0
    While Not doc2 Is Nothing
    ' doc1.ReplaceItemValue("F1_"+cstr(i),)
    If doc2.PersonalNotPrintInForm(0)<>"НЕ показывать в карточке обновления" Then
    If doc2.PersonalDBaseUpdateUser(0)="Ответственный за пополнение БД" Then
    Call doc1.ReplaceItemValue("F0_"+Cstr(j),"+")
    End If
    If doc2.PersonalAccountUser(0)="Получатель платежных документов" Then
    Call doc1.ReplaceItemValue("F1_"+Cstr(j),"$")
    End If
    If doc2.PersonalKodeksUser(0)="Пользователь ИПС Кодекс" Then
    Call doc1.ReplaceItemValue("F2_"+Cstr(j),"K")
    End If
    Call doc1.ReplaceItemValue("F3_"+Cstr(j),doc2.PersonalAllName(0))
    Call doc1.ReplaceItemValue("F4_"+Cstr(j),doc2.PersonalDolg(0))
    Call doc1.ReplaceItemValue("F5_"+Cstr(j),doc2.PersonalWorkPhone(0))
    Call doc1.ReplaceItemValue("F6_"+Cstr(j),doc2.PersonalWorkRoom(0))
    If doc2.PersonalBDate(0)<>"" Then
    Call doc1.ReplaceItemValue("F7_"+Cstr(j),"*")
    End If
    j = j + 1
    i = i + 1
    End If
    Set doc2 = dc.GetNextdocument(doc2)
    Wend
    вроде так

    З,Ы, непонятно почуму используеться i и зачем j
     
  7. Kron

    Kron Гость

    ;) Не прошло увеличение скорости, нрешу больше на количество документов, так как при сокращении на половину, скорость выполнения возвращается, придеться еще и по отделам репликами разбивать, чтобы потом с каждого на сервер сливалось :)
     
  8. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Хм.. возможно тут можно решить покопавшись со стороны администратора, но это уже не ко мне :)
    может кто ещё чтото подскажет
     
  9. Kron

    Kron Гость

    Подождем, со стороны администратора, хм... не знаю смотрел уже сервер по самое ни хочу с утра до вечера загружен. Будем ждать еще кого нить :) а может сервер поставить ксион ;)
     
Загрузка...
Похожие Темы - Скорость выполнения Действий
  1. swyatogor
    Ответов:
    48
    Просмотров:
    2.076
  2. aameno2
    Ответов:
    21
    Просмотров:
    1.195
  3. phil124
    Ответов:
    0
    Просмотров:
    1.111
  4. JAR
    Ответов:
    0
    Просмотров:
    1.443
  5. rinsk
    Ответов:
    6
    Просмотров:
    2.728

Поделиться этой страницей