Консольная утилита CalcField выполняет пересчёт вычисляемых полей у выбранных элементов — например, после изменения формулы, когда уже созданные элементы нужно привести к новым правилам.

Настройка утилиты

Параметры задаются в файле calc_field.json:

ПараметрОбязательныйОписание
WebUrlДаАдрес портала.
LoginДаУчётная запись, от имени которой выполняется пересчёт (изменение элементов).
PasswordДаПароль этой учётной записи.
FormulaНетФормула отбора элементов; должна вернуть список GUID элементов. Вычисляется в контексте системного пользователя. Если параметр не указан, используется файл itemIdList.txt. При наличии обоих приоритет у формулы.
ThreadNumberНетКоличество параллельных потоков пересчёта (по умолчанию 1).

Файл calc_field.json размещается в каталоге конфигурации:

  • Linux — /etc/Vitro/Server/Conf/
  • Windows — C:\Program Files\Vitro Software\Vitro\Server\Conf\

Файл может содержать один объект настроек или массив объектов — в этом случае наборы настроек выполняются по очереди.

Пример calc_field.json
[
  {
    "WebUrl": "http://vitro",
    "Login": "calc_service",
    "Password": "********",
    "Formula": "Select(GetList('716e8d52-90dc-4c85-bddf-582c94ab505e'), \"Id()\")",
    "ThreadNumber": 2
  }
]

Безопасность

Пароль хранится в файле в открытом виде. Используйте отдельную служебную учётную запись с необходимыми правами, ограничьте доступ к файлу и удаляйте пароль после выполнения работ.

Список элементов в файле

Если формула не задана, утилита читает файл itemIdList.txt из рабочего каталога: по одному GUID на строку, пустые и некорректные строки пропускаются. Перед обработкой копия файла сохраняется в data/itemIdList-ГГГГММДД-ЧЧмм.txt.bak.

Запуск

  • Linux — ./Vitro.Server.CalcField
  • Windows — .\Vitro.Server.CalcField.exe

Алгоритм работы

  1. Утилита авторизуется на портале (при истечении сессии авторизация повторяется автоматически).
  2. Получает список GUID: по формуле (запрос api/calc/get в контексте системного пользователя) или из файла.
  3. Для каждого элемента вызывает POST api/calc/compute/{GUID элемента} — элемент пересохраняется, при этом выполняются его вычисляемые поля.
  4. Прогресс записывается в лог каждые 100 элементов.

Что происходит при пересчёте

Пересчёт — это сохранение элемента. При сохранении срабатывают валидаторы и правила автоматизации на изменившиеся атрибуты. Пересчитываются только поля, которые вычисляются при изменении элемента: атрибуты только для чтения и «Название» (см. Вычисляемые поля); счётчики не увеличиваются. Перед массовым пересчётом проверьте его на небольшом наборе элементов.

Журналы и ошибки

  • Логи — в папке logs/ рабочего каталога, файлы Calc-ГГГГММДД-ЧЧмм.log.
  • GUID элементов, которые не удалось пересчитать, записываются в error/itemIdError-ГГГГММДД-ЧЧмм.txt. После устранения причины этот файл можно использовать как itemIdList.txt для повторного запуска.

  • No labels