Изменение литеры: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
Этот сценарий на языке VBScript позволяет изменить "Литера" в карточках | Этот сценарий на языке VBScript позволяет изменить поле "Литера" в карточках | ||
отмеченных документов или объектов без взятия документов на редактирование. | отмеченных документов или объектов без взятия документов на редактирование. | ||
Строка 14: | Строка 14: | ||
к Search 11 и 12 версии, начиная с 1.11.2010. Если у вас используется Search более старой | к Search 11 и 12 версии, начиная с 1.11.2010. Если у вас используется Search более старой | ||
версии - вам необходимо удалить строки в этом примере скрипта, в которых используются API-функции | версии - вам необходимо удалить строки в этом примере скрипта, в которых используются API-функции | ||
* procedure ShowProgressBarForm( const FormTitle: WideString; const Text1: WideString; const Text2: WideString; TotalParts: Integer) | |||
* function SetProgressBarData_and_CheckUserBreak( const Text1: WideString; const Text2: WideString; PartsComplete: Integer): Integer; | |||
* procedure CloseProgressBarForm | |||
Если у вас используется более ранняя версия Search и вы не удалите эти строки - это будет | Если у вас используется более ранняя версия Search и вы не удалите эти строки - это будет | ||
приводить к сбоям. Получить обновление, в котором уже имеются эти API-функции для Search 11 | приводить к сбоям. Получить обновление, в котором уже имеются эти API-функции для Search 11 |
Версия от 15:49, 27 октября 2010
Этот сценарий на языке VBScript позволяет изменить поле "Литера" в карточках отмеченных документов или объектов без взятия документов на редактирование.
В случае, если отмечены групповые документы, скрипт изменит литеру для всех вариантов исполнения изделия. Обратите внимание, что в этом примере не производится анализ литеры, которая была ранее присвоена изделию. При необходимости такого анализа - модифицируйте скрипт самостоятельно.
В этом примере также демонстрируется как можно при написании инструментов для Search использовать форму с прогресс-баром, отображающим ход выполнения скрипта. Эта форма позволяет также прервать выполнение скрипта, если пользователь нажмет кнопку "Отмена".
API-функции, позовляющие показывать форму с прогресс-баром были добавлены в обновления к Search 11 и 12 версии, начиная с 1.11.2010. Если у вас используется Search более старой версии - вам необходимо удалить строки в этом примере скрипта, в которых используются API-функции
- procedure ShowProgressBarForm( const FormTitle: WideString; const Text1: WideString; const Text2: WideString; TotalParts: Integer)
- function SetProgressBarData_and_CheckUserBreak( const Text1: WideString; const Text2: WideString; PartsComplete: Integer): Integer;
- procedure CloseProgressBarForm
Если у вас используется более ранняя версия Search и вы не удалите эти строки - это будет приводить к сбоям. Получить обновление, в котором уже имеются эти API-функции для Search 11 и 12 версии вы можете, обратившись в техподдержку Интермех cad@intermech.ru.
Ниже приводится код сценария:
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