Копировать ссылку на страницу

Найти задачи по следующим критериям:

имеют вложенную запись справочника;
находятся в состоянии задачи «Выполнена» или «Прекращена»;
отправлены по типовому маршруту «Согласование совещания».

Вычисление

  CurrentObject = Object.Environment.FindItem('CurrentObject')

  if CurrentObject.ComponentType = ctReference

    CurrentObject : IReference = CurrentObject

    CONST_NAME = 'СВЩТМУЧ'

    RouteKod = ''

    if ConstantExists(CONST_NAME)

      RouteKod = GetConstant(CONST_NAME)

      if not VarIsNull(RouteKod)

        Query = Format("select

                          main.XrecID

                        from dbo.SBTask main

                        join dbo.SBTaskAttach attach

                        on

                          main.XrecID = Attach.TaskId and

                          attach.AttachID = %s and

                          attach.AttachType = 'R' and

                          ((main.State = 'D') or (main.State = 'B')) and

                          main.ArchiveTag = 0 and

                          main.StandardRoute = 

                            (select

                               top 1 Analit

                             from dbo.MBAnalit

                             where Vid = (select Vid from MBVidAn where Kod = 'ТМТ')                         

                             and ltrim(Kod) = '%s'

                            )

                        order by main.XrecID"; ArrayOf(CurrentObject.ID; Trim(RouteKod)))

        BoundTaskIDs = SQL(Query)

        // Архивирование задач

        foreach TaskId in CSubString(BoundTaskIDs; '|')

          try

            Task = Tasks.GetObjectByID(TaskId)

            Task.ArchiveInfo.MoveToArchive(1)

            Task.Cancel

          except

            if not VarIsNull(Task)

              Task.Cancel

            endif

          endexcept

          if not VarIsNull(Task)

            Task = nil

          endif

        endforeach

      endif

    endif

    

    // Найти и заархивироваь все повестки по совещанию

    MEETING_DOC_CONST_NAME = 'MMAgendaEDocKind'

    DocMeetingKod = ''

    if ConstantExists(MEETING_DOC_CONST_NAME)

      DocMeetingKod = GetConstant(MEETING_DOC_CONST_NAME)

      if not VarIsNull(DocMeetingKod)

        // Найти все повестки по совещанию

        DocQuery = Format("select XRecID

                           from 

                             dbo.SBEDoc

                           where   

                             Kind = (select Analit 

                               from 

                                 MBAnalit

                               where 

                                 Vid = (select Vid from MBVidAn where Kod = 'ВЭД')

                                 and ltrim(Kod) = '%s')

                             and ArchiveTag = 0 

                             and Meeting = %s"; ArrayOf(Trim(DocMeetingKod); CurrentObject.ID))

        BoundDocIDs = SQL(DocQuery)

        // Архивирование повесток

        foreach DocID in CSubString(BoundDocIDs; '|')

          try

            Doc = EDocuments.GetObjectByID(DocID)

            Doc.ArchiveInfo.MoveToArchive(1)

            if not VarIsNull(Doc)

              Doc = nil

            endif

          except

          endexcept

        endforeach

      endif

    endif

  endif

© 2016 Компания DIRECTUM Сообщество пользователей DIRECTUM