Тема: Увеличение времени работы скрипта

Доброго дня!
Накопилось некоторое количество расчётных документов, в результате чего интерфейс загружается долго, как у пользователя, так и через API.
Как итог - добавление нового РД (theApp.Inventory.CalculateDocuments.AddCalculateDocument(...)) занимает всё больше времени. Каким образом можно решить ситуацию? Переводить старые РД в какой-то определённый статус, чтобы они не загружались интерфейсом или же это не связанные события?

Re: Увеличение времени работы скрипта

По хорошему документы надо переводить конечно. Причем сейчас есть признак Отработан (хотя на отображения он пока не влияет).

Но в простейшем случае просто настройте профиль пользователя по датам (для складского учета есть отдельный период).

Re: Увеличение времени работы скрипта

Можно использовать эту функцию https://help.technologics.ru/7.9/TCSAPI … ts2_13.htm

(изменено: pavelAgregat73, 12 декабря 2022 12:33:23)

Re: Увеличение времени работы скрипта

Олег Зырянов пишет:

По хорошему документы надо переводить конечно. Причем сейчас есть признак Отработан (хотя на отображения он пока не влияет).

Но в простейшем случае просто настройте профиль пользователя по датам (для складского учета есть отдельный период).

То есть перевод документов в "отработан" не ускорит никоим образом загрузку?

Олег Зырянов пишет:

Можно использовать эту функцию https://help.technologics.ru/7.9/TCSAPI … ts2_13.htm

А за это - спасибо)

Re: Увеличение времени работы скрипта

То есть перевод документов в "отработан" не ускорит никоим образом загрузку?

Сейчас нет, не вижу такого. Но по идее нужно убирать по умолчанию отработанные документы. Постепенно все режимы к этому приводим.

Re: Увеличение времени работы скрипта

Олег Зырянов пишет:

Можно использовать эту функцию https://help.technologics.ru/7.9/TCSAPI … ts2_13.htm

Олег, с наступившими вас праздниками!

К сожалению, не сумел с ходу разобраться с применением функции без примера. Пытался посмотреть через API Explorer, но там этой функции нет.
Вот как пробовал запустить для Цеха №848 Участок лакокрасочных покрытий, 0 участок (у нас у всех цехов только нолевой участок):

  Dim Docs, s
  Set Docs = theApp.Inventory.CalculateDocuments2( array("848/0"), array("Накладная на перемещение"), array("Ввод данных"), array("DoNotDel") )
  s = Docs.showModal("test")

как бы не варьировал параметры - в Docs получаю все документы всех цехов, типов и состояний в соответствии с профилем пользователя.

Где ошибка? А лучше - может, есть рабочий пример

Re: Увеличение времени работы скрипта

Спасибо, и вас с прошедшими!

Пример ваш вставил, все работает. Но есть нюанс... Если модуль был создан ранее, вернется он, ранее настроеннный... Так что его удалять надо, если используются настройки. Неудобно конечно, тут подумать надо как доработать.

Re: Увеличение времени работы скрипта

Олег Зырянов пишет:

Спасибо, и вас с прошедшими!

Пример ваш вставил, все работает. Но есть нюанс... Если модуль был создан ранее, вернется он, ранее настроеннный... Так что его удалять надо, если используются настройки. Неудобно конечно, тут подумать надо как доработать.

Вот полный код:

sub testForDocs
  Dim Docs, s, thePlantNumber
  thePlantNumber = "848/0"
  'Вероятно, здесь нужно сделать что-то вроде Set Docs = theApp.Inventory.CalculateDocuments :: Set Docs = Nothing ?
  Set Docs = theApp.Inventory.CalculateDocuments2( array(thePlantNumber), array("Накладная на перемещение"), array("Ввод данных"), array("DoNotDel") )

  s = Docs.showModal("test")

  Set Docs = Nothing
end sub

Re: Увеличение времени работы скрипта

Добавьте строки и перезапустите программу перед запуском макроса. Модуль можете сохранить под нужным вам именем

Set Docs = theApp.Inventory.CalculateDocuments2( array(thePlantNumber), array("Накладная на перемещение"), array("Ввод данных"), array("DoNotDel") )

Docs.UserModuleName = Docs.UniqueUserModuleName
Call theApp.DeleteModuleByUserModuleName( Docs.UserModuleName )

Re: Увеличение времени работы скрипта

Олег Зырянов пишет:

Добавьте строки и перезапустите программу перед запуском макроса. Модуль можете сохранить под нужным вам именем

Set Docs = theApp.Inventory.CalculateDocuments2( array(thePlantNumber), array("Накладная на перемещение"), array("Ввод данных"), array("DoNotDel") )

Docs.UserModuleName = Docs.UniqueUserModuleName
Call theApp.DeleteModuleByUserModuleName( Docs.UserModuleName )

Спасибо большое! Всё заработало!

Re: Увеличение времени работы скрипта

Олег, интерфейс оказался вполне удобным но либо не рабочим, либо трудно прогнозируемым.

Вызываю с аргументами - один цех (855/0), четыре типа документов, состояние "Ввод данных", с опциями "не добавлять, не удалять, не редактировать, за последний квартал". Визуально всё верно - цех в профиле только заданных, даты тоже, типы документов - всё верно. Вот только выдача не соответствует запрашиваемому цеху

Увеличение времени работы скрипта

Re: Увеличение времени работы скрипта

Да действительно. В корне показываются все документы (по цехам профиля) А при выборе цеха в дереве показываются только именно по нему. Не совсем ожидаемо. Изучим.

Re: Увеличение времени работы скрипта

Спасибо, ожидаем изменений в следующем релизе?

Re: Увеличение времени работы скрипта

Изучаем. Но видимо исправим (более логично будет).