Изменение литеры

Материал из Intermech Wiki
Перейти к навигации Перейти к поиску

Этот сценарий на языке VBScript позволяет изменить "Литера" в карточках отмеченных документов или объектов без взятия документов на редактирование


newLitera = "О3"

call ChangeLetter

Sub ChangeLetter

 set SelItems = s4app.GetSelectedItems 'получение интерфейса отметок
 SelectedCount = SelItems.SelectedCount
 partsComplete = 0
 if SelectedCount > 0 then
   text2 = "Обработано 0 из "& SelectedCount
   s4app.ShowProgressBarForm "Изменение литеры", "Изменение литеры у отмеченных документов/объектов", text2, SelectedCount
   while Selitems.NextSelected <> 0 'цикл по отмеченным записям
     DocID = SelItems.ActiveDocID 'инвентарный номер отмеченного документа
     if DocID > 0 then
       s4app.OpenDocument(DocID) 'делаем документ текущим, чтобы можно было пользоваться функциями API для работы с ним
       s4app.OpenDocArticles( DocID )
       artCount = s4app.GetArticlesCount 'получаем количество вариантов исполнений изделия по данному документу
       for j = 0 to artCount-1 'цикл по вариантам исполнений
         ArtID = s4app.GetDocArticleID( j )
         if ArtID > 0 then
           s4app.OpenArticle( ArtID )
           oldLetter = s4app.GetFieldValue_Articles( "Литера" )
           if newLitera <> oldLetter then
             s4app.SetFieldValue_Articles "Литера", newLitera
           end if
         end if
       next
     else
       ArtID = SelItems.ActiveArtID
       if ArtID > 0 then
         s4app.OpenArticle( ArtID )
         oldLetter = s4app.GetFieldValue_Articles( "Литера" )
         if newLitera <> oldLetter then
           s4app.SetFieldValue_Articles "Литера", newLitera
         end if
       end if
     end if
     SelItems.InvertCurrent
     partsComplete = partsComplete + 1
     text2 = "Обработано " & partsComplete & " из " & SelectedCount
     UserBreak = s4app.SetProgressBarData_and_CheckUserBreak( "", text2, partsComplete )
     if UserBreak > 0 then
       s4app.CloseProgressBarForm
       exit sub
     end if
   Wend
   s4app.CloseProgressBarForm
 end if

end Sub