Создание формулы
Выберите в списке группу, в которой нужно создать формулу.
Вызовите команду Создать формулу:
при помощи кнопки панели инструментов
Создать формулу;из контекстного меню группы формул.
В указанной группе появится Новая формула.
Примечание
Формуле автоматически будет присвоен код, который отображается в раскрывающемся разделе Коды в поле Код. Код формулы можно редактировать, однако код каждой формулы должен быть уникален.
Введите название формулы в поле Имя в области настройки. Значение может быть неуникальным.
Введите описание формулы, если необходимо.
В поле Формула создайте текст формулы вручную или при помощи команд контекстного меню.
Добавьте и отредактируйте параметры, если необходимо.
Важно
Если средствами Редактора были внесены изменения в существующую формулу, нажмите кнопку Вычислить для всех объектов, чтобы значения свойств объектов, которые вычисляются по этой формуле, были пересчитаны.
Параметры
Параметры формулы, указанной в дереве, перечислены в списке параметров.
Параметр – небольшая часть формулы, которой присваивается собственное имя. Используется, чтобы упростить составление и чтение сложных формул.
Если в формулу вставляется значение свойства, код свойства или код области связи при помощи команды контекстного меню, параметр создается и добавляется автоматически:
имя параметра вставляется в текст формулы
параметр добавляется в список параметров
Чтобы вручную заменить выражение в формуле параметром, выполните следующие действия:
Добавьте в формулу имя параметра – переменную, которая будет заменять выражение.
Примечание
Имя параметра в тексте формулы пишется в квадратных скобках. Переменная не может содержать квадратных скобок, но может содержать пробелы, кириллицу и другие печатные символы.
Например, [Вид изделия], [Типоразмер], [Обозначение стандарта] и т.д..
Добавьте новый параметр в список параметров формулы и заполните поля:
Параметр – наименование переменной, которая заменяет выражение в формуле, без квадратных скобок
Вычисление – выражение, которое заменяет переменная
Добавить параметр формулы
Удалить параметр
Сортировать по наименованию
Сортировать по положению в теле формулы
Примечание
Параметры могут содержать в себе другие параметры, а также константы, операторы и функции.
Поддерживаемые типы свойств
строка (
string)целое число (
integer)число с плавающей запятой (
double)дата и время (
datetime)логическое (
boolean)перечислимое, перечислимое с описанием (
enum)множество (
set)RTF-текст (
rtf)таблица (
table)
Ввод формул
Текст или параметры формулы могут включать в себя:
константы
операторы
специальные символы
конструкции, предназначенные для вставки значений свойств объектов, связанных объектов, документов, связей
уникальные номера элементов
коды свойств
коды областей связи (выбора объектов)
функции
Редактирование формулы доступно:
в поле Формула
в поле Вычисление параметра
Способы редактирования:
вручную
автоматическая вставка готовых конструкций (выражений) при помощи команд контекстного меню
Константы
Строковая константа – массив символов. Строковые константы записываются в одинарных кавычках, например, ‘ABC’ или ‘123’.
Числовая константа – целое или дробное число, например, 123 или 123.456.
Константа даты и времени – символьное значение даты и времени специального формата. Константы даты и времени записываются в одинарных кавычках или знаках решетки, например, ‘01.09.2022 05:07:11’ или #01.09.2022 05:07:11#.
this – текущий объект.
Pi – число Пи.
null – бестиповая ссылка, не указывающая на объект.
Подсказка
Чтобы поместить в строковую константу одинарную кавычку, используйте перед ней экранирующий символ \. Например, ‘\‘ABC\’’.
Для записи числовых констант можно использовать научную нотацию, например:
1.22e1
1e2
1e+2
1e-2
.1e-2
1e10
См.также
Операторы
Выражения в формулах связываются при помощи операторов. В таблице ниже приведены группы операторов в порядке снижения их приоритета.
Название |
Оператор |
Пример использования |
|---|---|---|
Унарные |
||
Логическое отрицание |
not, ! |
Результат: |
Побитовое отрицание (операция выполняется с двоичным представлением числа) |
~ |
Результат: |
Операторы арифметических операций |
||
Умножение, деление |
*, / |
Результат: |
Взятие остатка от деления |
% |
Результат: |
Сложение, вычитание |
+, - |
Результат: |
Операторы сравнения (результатом операции сравнения является логический тип данных) |
||
Равно |
=, == |
Результат:
Результат: |
Неравно |
!=, <> |
Результат:
Результат: |
Больше, меньше |
>, < |
Результат:
Результат: |
Больше или равно, меньше или равно |
>=, <= |
Результат:
Результат: |
Логические операторы (результатом логического выражения является логический тип данных) |
||
Конъюнкция (логическое И) |
and, && |
Результат:
Результат: |
Дизъюнкция (логическое ИЛИ) |
or, || |
Результат:
Результат: |
Битовые операции (операции выполняются с двоичным представлением чисел) |
||
Побитовое И |
& |
Результат: |
Побитовое исключающее ИЛИ (XOR) |
^ |
Результат: |
Побитовое ИЛИ |
| |
Результат: |
Битовый сдвиг влево |
<< |
Результат: |
Битовый сдвиг вправо |
>> |
Результат: |
Вставка готовых конструкций (выражений)
Установите курсор в нужное место поля ввода формулы или в поле вычисления параметра формулы и вызовите из контекстного меню одну из команд.
Дальнейшие действия будут зависеть от выбранной команды.
Команда |
Вложенные команды |
Выбор свойства |
Вставка параметра |
|---|---|---|---|
Вставить спецсимвол … |
– |
– |
|
Взять значение свойства |
|||
Взять значение свойства … |
+ |
+ |
|
Взять значение свойства связанного объекта … |
+ (шаг 2) |
+ |
|
Взять значение свойства связанного объекта у связанного объекта … |
+ (шаг 3) |
+ |
|
Взять значение свойства документ … |
+ |
+ |
|
Взять значение свойства документа у связанного объекта … |
+ (шаг 2) |
+ |
|
Взять значение свойства связи … |
+ (шаг 2) |
+ |
|
Взять значение свойства у владельца табличного свойства … |
+ |
+ |
|
Взять уникальный номер элемента … |
– |
– |
|
Вставить код свойства … |
+ |
+ |
|
Вставить код области связи … |
– |
+ |
|
Вставить функцию … |
– |
– |
|
В результате выполнения команды будет вставлена конструкция (выражение) или параметр, который будет содержать эту конструкцию.
Особенности вставки параметра:
если команда вставки вызывалась из поля формулы, то:
в формуле появится имя параметра в квадратных скобках: [Параметр]
в список параметров будет добавлен новый параметр Параметр, в поле вычисления этого параметра будет вставлена конструкция
если конструкция вставлялась в параметр формулы (в Параметр 1), то:
в поле вычисления Параметра 1 появится имя Параметра 2 в квадратных скобках: [Параметр 2]
в список параметров будет добавлен новый Параметр 2, в поле вычисления этого параметра будет вставлена конструкция
См.также
Изучите описание выбора свойства при вставке конструкций
См.также
Выбор свойства
Если необходимо вставить конструкцию (выражение), которая содержит значение свойства или код свойства, после вызова команды потребуется выбрать свойство из списка на одном из этапов выполнения команды.
Последовательность действий при выборе свойства:
Установите переключатель Свойство в понятии / Свойство в нужное положение.
Переключатель расположен в верхней части окна со списком свойств. Содержимое списка зависит от положения переключателя.
Положение переключателя по умолчанию: Свойство в понятии
Свойство.Работа переключателя:
Свойство в понятии
СвойствоПолный перечень понятий с их свойствами.
При вычислении будут учитываться только свойства понятий объектов, собственные свойства объектов будут проигнорированы.
Свойство в понятии
СвойствоПолный перечень свойств.
В этом случае в нижней части окна появятся варианты для выбора:
Любое свойство – при вычислении будут учитываться все свойства, однако свойство в понятии будет иметь приоритет над собственным свойством;
Только собственное свойство – при вычислении будут учитываться только собственные свойства объектов (документов, связей).
Выберите свойство, конструкцию для возвращения которого нужно вставить в формулу или параметр. Для облегчения поиска свойства можно воспользоваться фильтром.
Нажмите Выбрать.
Спецсимволы
Введите спецсимволы в тексте формулы или выберите из таблицы при помощи команды контекстного меню Вставить спецсимвол.
\ – символ экранирования, используется в строках для экранирования служебных символов или вставки символа с использованием его кода Unicode;; – применяется при использовании функции GetPropertyValue в паре с функциями GetPropertyUnit и GetOkeiCodeUnit;'\r\n' – перенос на следующую строку для свойств типа RTF-текст.Следующие специальные символы могут использоваться в формулах,
вычисляющих значение свойства Обозначение в КОМПАС-3D:
$d — начало дроби;; — разделитель между числителем и знаменателем;$ — конец дроби;@/ — перенос строки.Значение свойства
Чтобы вставить в формулу конструкцию (выражение), которая возвращает значение свойства ПОЛИНОМ:MDM, выберите в контекстном меню команду Взять значение свойства, а затем одну из вложенных команд:
Значение свойства
Возвращает значение выбранного свойства.
Значение свойства связанного объекта
Возвращает значение свойства объекта, связанного с текущим (значение свойства связанного объекта).
Значение свойства связанного объекта у связанного объекта
Возвращает значение свойства объекта, с которым связан связанный объект.
- На рисунке:
Объект 1 связан с Объектом 3 через Объект 2.
Свойство 1 Объекта 1 вычисляется по формуле:
[Параметр 1] + [Параметр 2] + ... + [Параметр n]
Параметр 2 добавлен в результате выполнения команды:
Взять значение свойства –> Взять значение свойства связанного объекта у связанного объекта…
Параметр 2 содержит конструкцию, которая возвращает значение Свойства 3 Объекта 3.
Вызовите команду Взять значение свойства –> Взять значение свойства связанного объекта у связанного объекта.
Выберите область связи, которой принадлежит связанный объект:
Раскройте нужную группу связей.
Выберите тип связи.
Укажите область связи.
Нажмите Далее.
Выберите область связи, которой принадлежит связанный объект у связанного объекта, также, как в предыдущем пункте.
Выберите свойство связанного объекта.
Значение свойства документа
Возвращает значение свойства документа, связанного с объектом.
Примечание
Если с объектом связано несколько документов, возвращается свойство первого документа.
Значение свойства документа у связанного объекта
Возвращает значение свойства документа, принадлежащего связанному объекту.
Примечание
Если с объектом связано несколько документов, возвращается свойство первого документа.
Значение свойства связи
Возвращает значение свойства связи, установленной между объектами.
Значение свойства у владельца табличного свойства
Возвращает значение свойства объекта в ячейку его табличного свойства.
Уникальный номер объекта
Возвращает уникальный номер объекта.
Вызовите команду Взять уникальный номер элемента.
Выберите Контекст, из которого будет взят уникальный номер:
Хранилище;
Справочник;
Каталог;
Группа.
Выберите тип значения номера.
Числовой – уникальный номер объекта будет представлен в виде числа;
Строковый – уникальный номер будет представлен в виде строки.
При выборе варианта Строковый появятся дополнительные поля.
Заполните поля:
Префикс – введите префикс строки;
Кол-во символов – введите число, которое будет обозначать минимальное количество символов в уникальном номере, записанное в строке; если в номере большее количество символов, он будет записан полностью, если меньшее, то вместо недостающих символов будут подставлены нули;
Суффикс – введите суффикс строки.
Пример сформированной строки будет показан в нижней части окна. Для обновления примера после ввода значений в какое-либо поле щелкните мышью в соседнем поле.
Нажмите кнопку Вставить.
Код свойства
В тексте или параметрах формулы могут использоваться коды свойств ПОЛИНОМ:MDM.
Код области связи
Возвращает код области связи (области выбора объектов).
Например, если в формуле необходимо учесть зависимость значения свойства от свойств связанных объектов, используйте коды областей выбора объектов.
Функции
Функция |
Пример использования |
|---|---|
Математические функции |
|
Abs(x)
Возвращает абсолютное значение числа. |
Результат: |
Acos(x)
Возвращает величину угла (в радианах) по заданному значению косинуса. |
Результат: |
Asin(x)
Возвращает величину угла (в радианах) по заданному значению синуса. |
Результат: |
Atan(x)
Возвращает величину угла (в радианах) по заданному значению тангенса. |
Результат: |
Ceiling(x)
Возвращает ближайшее большее целое число. |
Результат: |
Cos(x)
Возвращает косинус угла, заданного в радианах. |
Результат: |
Exp(x)
Возвращает результат выражения ex. |
Результат: |
Floor(x)
Возвращает ближайшее меньшее целое число. |
Результат: |
IEEERemainder(x, y)
Возвращает остаток от деления x на y. Остаток рассчитывается по формуле:
где x – делимое y – делитель Q – результат деления x на y, округленный до ближайшего целого числа;
если x / y находится на равном расстоянии от двух целых чисел, выбирается четное число;
если результат выражения +0 при положительном x; -0 при отрицательном x. |
Результат: |
Log(x, y)
Возвращает логарифм числа x по основанию y. |
Результат: |
Log10(x)
Возвращает десятичный логарифм числа x. |
Результат: |
Max (a1, a2, …)
Возвращает наибольшее из значений.
Не учитывает null и пустые строки.
Для чисел с плавающей запятой учитывает тип значения свойства. Если на вход подается диапазон, то берет максимальное значение диапазона. Если число с допуском, то берет номинальное значение. |
Результат: |
Min (a1, a2, …)
Возвращает наименьшее из значений.
Не учитывает null и пустые строки.
Для чисел с плавающей запятой учитывает тип значения свойства. Если на вход подается диапазон, то берет минимальное значение диапазона. Если число с допуском, то берет номинальное значение. |
Результат: |
Pow(x,y)
Возвращает результат возведения числа x в степень y. |
Результат: |
Round(x,y)
Возвращает результат округления числа x с точностью y знаков после запятой.
Округление работает так же, как при вызове метода Math.Round в c#. Подробное описание см. в документации Microsoft. |
Результат:
Результат:
Результат:
Результат: |
Sign(x)
Возвращает -1 для отрицательного x, и 1 для положительного. |
Результат: |
Sin(x)
Возвращает синус угла, заданного в радианах. |
Результат: |
Sqrt(x)
Возвращает квадратный корень из x. |
Результат: |
Tan(x)
Возвращает тангенс угла, заданного в радианах. |
Результат: |
Truncate(x)
Возвращает целую часть числа. |
Результат: |
if(Условие, Выражение 1, Выражение 2)
Если условие истинно, возвращает результат выражения 1.
Если условие ложно, возвращает результат выражения 2. |
Результат:
Результат: |
in (x, a1, a2, …, an)
Ищет элемент x в коллекции элементов (a1, a2, …, an)
Если элемент найден, возвращает true, если нет – false.
Функция работает только с числовыми и строковыми типами данных. |
Результат:
Результат:
Результат:
Результат: |
Функции приведения типов |
|
AsString(выражение)
Преобразует результат выражения к строке.
AsString(null) возвращает null. |
Результат: |
IsNull(выражение)
Возвращает true, если выражение – null, иначе – false. |
Результат:
Результат: |
ToBool(выражение)
Преобразует результат выражения к логическому типу. |
Результат:
Результат:
Результат: |
ToDouble(выражение)
Преобразует результат выражения к вещественному числу. |
Результат: |
ToDouble(выражение, культура)
Преобразует результат выражения к вещественному числу с учетом культуры. |
Результат:
Результат: |
ToInt(выражение)
Преобразует результат выражения к целому числу. |
Результат:
Результат: |
ToPlainText(выражение)
Преобразует RTF-текст к строке. |
Вернет значение свойства Описание типа RTF-текст указанного объекта в виде строки. |
ToString(выражение)
Преобразует результат выражения к строке.
ToString(null) возвращает пустую строку.
Разделитель дробных чисел соответствует текущей системной культуре. |
Результат: |
ToString(выражение, культура)
Преобразует результат выражения к строке с учетом указанной культуры. |
Результат:
Результат: |
Функции для работы с датой |
|
AppServerDateTime()
Возвращает текущую дату и время с сервера приложений ПОЛИНОМ:MDM в виде строки в формате dd.MM.yyyy HH:mm:ss и культуре ru-RU. |
Результат: |
StringDateTime(выражение, формат, культура)
Преобразует результат выражения типа дата и время к строке с учётом указанных формата и культуры.
Если формат не указан, то по умолчанию вернет строку в формате dd.MM.yyyy HH:mm:ss.
Подробное описание см. в документации Microsoft. |
Результат:
Результат:
Результат: |
Строковые функции |
|
StringArray( Строка1, Строка2, …, Строкаn )
Возвращает коллекцию из указанных строк. |
|
StringEquals(Строка 1, Строка 2, Чувствительность к регистру)
Если строки эквивалентны возвращает true, иначе возвращает false. |
Результат:
Результат:
Результат: |
StringExtract(Коллекция строк, Индекс элемента коллекции)
Возвращает элемент коллекции с указанным индексом. |
Результат: |
StringFormat(Строка, Коллекция параметров)
Создает строку по шаблону.
Работатет аналогично методу String.Format в c#. Подробное описание см. в документации Microsoft. |
Результат: |
StringIndexOf(Строка, Подстрока, Чувствительность к регистру)
Ищет подстроку в строке и возвращает индекс начала подстроки. Если подстрока не найдена, возвращает -1. |
Результат:
Результат:
Результат: |
StringIsEmpty(Строка)
Возвращает true, если получает на вход пустую строку или null, иначе возвращает false. |
Результат:
Результат: |
StringJoin(Коллекция, Разделитель)
Возвращает все элементы коллекции в виде строки через разделитель. |
Результат: |
StringLength(Строка)
Возвращает длину строки. |
Результат: |
StringPrefixSuffix(Строка, Префикс, Суффикс)
Добавляет к исходной строке префикс и суффикс.
Если нужно добавить только префикс/суффикс, то в качестве суффикса/префикса укажите пустую строку. |
Результат:
Результат: |
StringRemove(Строка, Коллекция подстрок)
Ищет в строке подстроки из коллекции и удаляет их. |
Результат: |
StringReplace(Строка, Подстрока 1, Подстрока 2)
Ищет в строке подстроку 1 и заменяет ее на подстроку 2. |
Результат: |
StringSplit(Строка, Разделитель)
Разбивает строку на части, используя разделитель, и возвращает эти части в виде коллекции. |
Результат: |
StringSubstring(Строка, Индекс, Длина)
Возвращает подстроку заданной длины, начиная с указанного индекса.
Если длина не указана, берется подстрока от элемента с заданным индексом до последнего элемента строки. |
Результат:
Результат: |
StringToLower(Строка)
Возвращает указанную строку в нижнем регистре. |
Результат: |
StringToUpper(Строка)
Возвращает указанную строку в верхнем регистре. |
Результат: |
StringTrim(Строка)
Убирает пробелы в начале или конце строки. |
Результат: |
StringTrimEnd(Строка, Коллекция)
Убирает в конце строки все символы, которые есть в указанной коллекции.
Если коллекция не указана, то в конце строки убираются пробелы. |
Результат:
Результат:
Результат: |
StringTrimStart(Строка, Коллекция)
Убирает в начале строки все символы, которые есть в указанной коллекции.
Если коллекция не указана, то в начале строки убираются пробелы. |
Результат:
Результат:
Результат: |
Функции для чисел с плавающей запятой |
|
GetDoublePropertyValueWithUnit(IPropertyOwner, propertyCode, defaultValue, defaultUnitCode)
Возвращает значение свойства и код единицы измерения свойства propertyCode владельца свойства IPropertyOwner.
Если свойство не найдено или у него нет значения, то возвращает значение по умолчанию (defaultValue) и код единицы измерения по умолчанию (defaultUnitCode). |
Вернет значение и код единицы измерения свойства с кодом
Если свойство не найдено или у него нет значения, то возвращает значение и единицу измерения по умолчанию: |
GetDoubleRange(minValue,maxValue,unitCode)
Возвращает число с плавающей запятой в виде диапазона.
Параметры minValue, maxValue принимают на вход строковые или числовые значения. Например, через функцию GetPropertyValue().
minValue - минимальное значение диапазона
maxValue - максимальное значение диапазона
Параметр unitCode необязательный. Принимает на вход строковое значение. Например, через функцию GetPropertyUnit() или GetOkeiCodeUnit().
unitCode - код единицы измерения
|
Параметры формулы
например,
например,
Параметр формулы
например,
Результат: |
GetDoubleTolerance(value,minValue,maxValue,unitCode)
Возвращает число с плавающей запятой в виде числа с допуском.
Параметры value, minValue, maxValue принимают на вход строковые или числовые значения. Например, через функцию GetPropertyValue().
value - номинальное значение
minValue - минимальное из отклонений
maxValue - максимальное из отклонений
Параметр unitCode необязательный. Принимает на вход строковое значение. Например, через функцию GetPropertyUnit() или GetOkeiCodeUnit().
unitCode - код единицы измерения
|
Параметры формулы
например,
например,
например,
Параметр формулы
например,
Результат: |
MinRange(doublePropertyValue)
Учитывает тип числа с плавающей запятой.
Если на вход подается диапазон, возвращает минимальное значение диапазона.
Если число с допуском, возвращает номинальное значение с учетом минимального отклонения.
Если на вход подается число, то вернет число.
Значения возвращаются в виде строки. |
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
MaxRange(doublePropertyValue)
Учитывает тип числа с плавающей запятой.
Если на вход подается диапазон, возвращает максимальное значение диапазона.
Если число с допуском, возвращает номинальное значение с учетом максимального отклонения.
Если на вход подается число, то вернет число.
Значения возвращаются в виде строки. |
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
MinTolerance(doublePropertyValue)
Учитывает тип числа с плавающей запятой.
Если на вход подается диапазон, возвращает значение, которое рассчитывается по формуле:
где minValue - минимальное значение диапазона maxValue - максимальное значение диапазона
Если на вход подается число с допуском, возвращает минимальное из отклонений.
Если на вход подается число, то вернет число.
Значения возвращаются в виде строки. |
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
MaxTolerance(doublePropertyValue)
Учитывает тип числа с плавающей запятой.
Если на вход подается диапазон, возвращает значение, которое рассчитывается по формуле:
где minValue - минимальное значение диапазона maxValue - максимальное значение диапазона
Если на вход подается число с допуском, возвращает максимальное из отклонений.
Если на вход подается число, то вернет число.
Значения возвращаются в виде строки. |
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
Nominal(doublePropertyValue)
Учитывает тип числа с плавающей запятой.
Если на вход подается диапазон, возвращает значение, которое рассчитывается по формуле:
где minValue - минимальное значение диапазона maxValue - максимальное значение диапазона
Если на вход подается число с допуском, возвращает число (номинальное значение).
Если на вход подается число, то вернет число.
Значения возвращаются в виде строки. |
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
IsRange(doublePropertyValue)
Возвращает true, если doublePropertyValue является диапазоном, иначе возвращает false.
Если тип свойства не является числом с плавающей запятой, вернет false.
|
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
IsTolerance(doublePropertyValue)
Возвращает true, если doublePropertyValue является числом с допуском, иначе возвращает false.
Если тип свойства не является числом с плавающей запятой, вернет false.
|
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат: |
IsNominal(doublePropertyValue)
Возвращает true, если doublePropertyValue является числом, иначе возвращает false.
Если тип свойства не является числом с плавающей запятой, вернет false.
|
Параметр формулы
Например, параметр возвращает диапазон
Результат:
Например, параметр возвращает число с допуском
Результат:
Например, параметр возвращает число
Результат: |
Функции для работы с API |
|
CatalogNumber()
Возвращает уникальный номер объекта, документа или представления в рамках каталога. |
|
ConvertUnit(srcCode, dstCode, value)
Конвертирует значение value из единицы измерения с кодом srcCode в единицу измерения с кодом dstCode.
Если преобразование выполнить не удалось, возвращается исходное значение value. |
Результат:
В результате значение 1 (кг) будет преобразовано в 1000 (г). |
Find(collection, ‘filter’)
Возвращает коллекцию всех элементов коллекции collection, удовлетворяющих условию, заданному в фильтрующем параметре.
Фильтрующий параметр получает на вход переменную item – очередной элемент коллекции. |
Параметр filter: Результат: |
FindFirst(collection, ‘filter’)
Возвращает первый элемент коллекции collection, удовлетворяющий условию, заданному в фильтрующем параметре.
Фильтрующий параметр получает на вход переменную item – очередной элемент коллекции. |
Параметр filter: Результат: |
First(collection)
Возвращает первый элемент коллекции collection. |
Результат: |
GetDocuments(IPropertyOwner)
Возвращает коллекцию документов для указанного владельца свойств. |
Вернет наименование первого найденного документа, принадлежащего объекту (this), к которому применена формула. |
GetElements(IPropertyOwner)
Возвращает коллекцию объектов для указанного представления. |
Вернет наименование первого найденного объекта, принадлежащего представлению (this), к которому применена формула. |
GetEnumItemDescription(IPropertyOwner, propertyCode, defaultValue)
Возвращает описание значения свойства типа перечислимое с описанием с кодом propertyCode владельца свойства IPropertyOwner.
Для свойств понятий задается полный код, для собственных свойств – полный код определения свойства.
Простой код определения свойства возвращает первое найденное в понятиях свойство с таким определением.
Если свойство не найдено или у него нет значения, то возвращает значение по умолчанию (defaultValue). |
Вернет описание значения свойства с кодом size принадлежащего объекту, к которому применена формула (this). |
GetGroupClassId(GetOwnerGroup(this))
Возвращает идентификатор класса группы, в которой располагается объект.
Если группе не задан идентификатор класса, то вернется идентификатор класса ближайшей из родительских групп, у которой он заполнен. |
Вернет идентификатор группы, в которой находится указанный объект (this). |
GetGroupObjects(IBaseGroupOwner)
Возвращает коллекцию объектов, документов или представлений указанной группы. |
Вернет коллекцию объектов, которые находятся в той же группе, что и указанный объект. |
GetGroupObjectsRecursively(IBaseGroupOwner)
Возвращает коллекцию объектов, документов или представлений указанной группы и всех подгрупп ниже по иерархии. |
Вернет коллекцию объектов, которые находятся в той же группе, что и указанный объект и во всех подгруппах ниже по иерархии. |
GetGroupsForDocument(IDocument)
Возвращает коллекцию групп, связанных с указанным документом. |
Вернет наименование первой найденной группы, связанной с указанным документом. |
GetLinkedObjects(IPropertyOwner, linkDefinitionEndCode)
Возвращает коллекцию связанных объектов, используя полный код (linkDefinitionEndCode) противоположного конца связи. |
Вернет наименование первого найденного объекта (материала), связанного с указанным объектом. |
GetLinkedInstances(IPropertyOwner, linkDefinitionEndCode)
Возвращает коллекцию свойств связи связанных объектов, используя полный код (linkDefinitionEndCode) противоположного конца связи. |
Вернет обозначение документа на ТУ первого найденного свойства связи объекта, связанного с указанным объектом. |
GetObjectsForDocument(IDocument)
Возвращает коллекцию объектов, связанных с указанным документом. |
Вернет наименование первого найденного объекта, связанного с указанным документом. |
GetOwnerGroup(IPropertyOwner)
Возвращает группу-владельца указанного элемента. |
Вернет наименование группы, в которой находится указанный объект.
Вернет наименование группы, в которой находится группа с указанным объектом. |
GetPropertyUnit(IPropertyOwner, propertyCode, defaultValue)
Возвращает код единицы измерения свойства propertyCode владельца свойства IPropertyOwner. Правила аналогичны функции GetPropertyValue. |
Вернет код единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула (this). |
GetOkeiCodeUnit(okeiCode, defaultValue)
Возвращает код единицы измерения по ее коду ОКЕИ.
Если код не найден, то возвращает значение по умолчанию (defaultValue). |
Вернет код единицы измерения для кода по ОКЕИ 362. |
GetPropertyValue(IPropertyOwner, propertyCode, defaultValue)
Возвращает значение свойства с кодом propertyCode владельца свойства IPropertyOwner.
Для свойств понятий задается полный код, для собственных свойств – полный код определения свойства.
Простой код определения свойства возвращает первое найденное в понятиях свойство с таким определением.
Если свойство не найдено или у него нет значения, то возвращает значение по умолчанию (defaultValue).
Если свойство с кодом propertyCode типа множество и формула применяется для свойства типа множество – сравнивает выбранные элементы свойства с кодом propertyCode и все элементы свойства, к которому применяется формула. Возвращает только те элементы, которые совпадают.
Если свойство с кодом propertyCode типа множество и формула применяется для свойства типа строка, RTF-текст – возвращает выбранные элементы свойства с кодом propertyCode в виде строки через разделитель. |
Вернет значение свойства Наименование, принадлежащего объекту, к которому применена формула (this).
Возможно использование в паре с функциями GetPropertyUnit и GetOkeiCodeUnit через разделитель
Вернет значение и единицу измерения свойства Плотность, принадлежащего объекту, к которому применена формула (this).
Вернет значение свойства Плотность, принадлежащего объекту, к которому применена формула (this) и единицу измерения по коду ОКЕИ 316.
Для свойства c кодом source типа множество с элементами: Выбраны элементы свойства source:
Если формула применяется к свойству типа множество
с элементами: Результат:
Если формула применяется к свойству типа строка или RTF-текст Результат:
|
GetPropertyValues(collection, propertyCode, defaultValue)
Возвращает коллекцию значений свойства с кодом propertyCode.
Для свойств понятий задается полный код, для собственных свойств – полный код определения свойства.
Простой код определения свойства возвращает первое найденное в понятиях свойство с таким определением.
Если свойство не найдено или у него нет значения, то возвращает значение по умолчанию (defaultValue). |
Вернет коллекцию наименований всех материалов, связанных с объектом, к которому применена формула (this). |
GetTablePropertyRows(IPropertyOwner, propertyCode)
Возвращает строки табличного свойства с кодом propertyCode владельца свойства IPropertyOwner. |
Вернет значение столбца Диаметр из первой строки таблицы Типоразмеры, принадлежащей объекту, к которому применена формула (this). |
GetTablePropertyRowAbs(IPropertyOwner, propertyCode, rowAbsNumber)
Возвращает строку табличного свойства с кодом propertyCode владельца свойства IPropertyOwner по ее номеру rowAbsNumber. |
Вернет значение столбца Диаметр из первой строки таблицы Типоразмеры, принадлежащей объекту, к которому применена формула (this).
Помимо целых чисел, параметр rowAbsNumber может принимать значения first_row – первая строка и last_row – последняя строка. |
GetTablePropertyRowRel(IPropertyOwner, rowRelNumber)
Возвращает строку табличного свойства, расположенную на заданном расстоянии rowRelNumber от текущей строки this. |
В ячейке таблицы, на которую назначена формула, будет установлено значение столбца Диаметр из предыдущей строки таблицы, умноженное на 2. |
GetTableRowOwner(this)
Возвращает объект, содержащий таблицу, к которой применена формула (this). |
Вернет в ячейку таблицы, к которой применена формула (this), наименование объекта, содержащего таблицу. |
GetUnitCodeOkei(unitCode, defaultValue)
Возвращает код по ОКЕИ единицы измерения по ее коду (unitCode).
Если единицы измерения с указанным кодом нет, то возвращается значение по умолчанию – defaultValue. |
Вернет код по ОКЕИ единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула. |
GetUnitDesignation(unitCode, defaultValue)
Возвращает обозначение единицы измерения по ее коду (unitCode).
Если единицы измерения с указанным кодом нет, то возвращается значение по умолчанию – defaultValue. |
Вернет обозначение единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула. |
GetUnitInternationalDesignationOkei(unitCode, defaultValue)
Возвращает международное обозначение по ОКЕИ единицы измерения по ее коду (unitCode).
Если единицы измерения с указанным кодом нет, то возвращается значение по умолчанию – defaultValue. |
Вернет международное обозначение по ОКЕИ единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула. |
GetUnitInternationalLiteralDesignation(unitCode, defaultValue)
Возвращает международное буквенное обозначение единицы измерения по ее коду (unitCode).
Если единицы измерения с указанным кодом нет, то возвращается значение по умолчанию – defaultValue. |
Вернет международное буквенное обозначение единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула. |
GetUnitLiteralDesignation(unitCode, defaultValue)
Возвращает национальное буквенное обозначение единицы измерения по ее коду (unitCode).
Если единицы измерения с указанным кодом нет, то возвращается значение по умолчанию – defaultValue. |
Вернет национальное буквенное обозначение единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула. |
GetUnitName(unitCode, defaultValue)
Возвращает название единицы измерения по ее коду (unitCode).
Если единицы измерения с указанным кодом нет, то возвращается значение по умолчанию – defaultValue. |
Вернет название единицы измерения свойства Масса, принадлежащего объекту, к которому применена формула. |
GetViewpoints(IPropertyOwner)
Возвращает коллекцию представлений для указанного владельца свойств. |
Вернет наименование первого найденного представления, принадлежащего объекту (this), к которому применена формула. |
GroupNumber()
Возвращает уникальный номер объекта, документа или представления в рамках группы. |
|
MaxCollection(PropertyValues)
Возвращает наибольшее из коллекции значений.
Не учитывает null и пустые строки в коллекции.
Для чисел с плавающей запятой учитывает тип значения свойства. Если на вход подается диапазон, то берет максимальное значение диапазона. Если число с допуском, то берет номинальное значение. |
Вернет наибольшее значение свойства Диаметр для объектов текущей группы. |
MinCollection(PropertyValues)
Возвращает наименьшее из коллекции значений.
Не учитывает null и пустые строки в коллекции.
Для чисел с плавающей запятой учитывает тип значения свойства. Если на вход подается диапазон, то берет минимальное значение диапазона. Если число с допуском, то берет номинальное значение. |
Вернет наименьшее значение свойства Диаметр для объектов текущей группы. |
OrderBy(collection, propertyCode)
Сортирует элементы коллекции collection в возрастающем порядке по значению свойства с кодом propertyCode. |
Вернет обозначение первого документа из коллекции документов объекта, отсортированной по наименованию в возрастающем порядке. |
OrderByDescending(collection, propertyCode)
Сортирует элементы коллекции collection в убывающем порядке по значению свойства с кодом propertyCode. |
Вернет обозначение первого документа из коллекции документов объекта, отсортированной по наименованию в убывающем порядке. |
ReferenceNumber()
Возвращает уникальный номер объекта, документа или представления в рамках справочника. |
|
VaultNumber()
Возвращает уникальный номер объекта, документа или представления в рамках хранилища. |
|
Специальные функции |
|
EvaluateFormula(‘код формулы’)
Возвращает значение, вычисленное по формуле с указанным кодом. |
Вернет значение, рассчитанное по формуле с кодом box-volume. |
EvaluateParameter(‘Код формулы’, ‘Имя параметра’)
Возвращает значение параметра формулы с указанным кодом. |
Вернет значение параметра length из формулы с кодом box-volume. |
Примечание
Владельцами свойств являются:
элемент классификации,
представление,
документ,
группа.
Примеры
Константы
Формула состоит из двух параметров: Длина и Ширина, и константы 2. Параметры Длина и Ширина состоят из числовых констант 3 и 4.
Формула состоит из константы Pi и константы Радиус, которая равна числовой константе 4.
Взять значение свойства
Установите курсор в нужное место формулы.
Вызовите команду Взять значение свойства –> Взять значение свойства….
Перейдите в понятие Наименование и описание.
Выберите свойство Наименование.
Автоматически будут добавлены:
в поле Формула – параметр:
[Наименование и описание:Наименование]
в поле Наименование параметра – наименование параметра:
Наименование и описание:Наименование
в поле Вычисление параметра – конструкция:
GetPropertyValue([this], 'c:@NameAndDescription::pd:@Name', '')
Взять значение свойства документа
Установите курсор в нужное место формулы.
Вызовите команду Взять значение свойства –> Взять значение свойства документа….
Перейдите в понятие Наименование и описание –> Документ.
Выберите свойство Обозначение.
Автоматически будут добавлены:
в поле Формула – параметр:
[Документ:Документ:Обозначение]
в поле Наименование параметра – наименование параметра:
Документ:Документ:Обозначение
в поле Вычисление параметра – конструкция:
GetPropertyValue(First(GetDocuments([this])), 'c:@NameAndDescription::c:@Document::pd:@Designation', '')
Взять значение свойства у владельца табличного свойства
Команда позволяет передать значение свойства объекта в ячейку табличного свойства этого же объекта.
Установите курсор в нужное место формулы или параметра.
Вызовите команду Взять значение свойства –> Взять значение свойства у владельца табличного свойства.
Перейдите в понятие Наименование и описание –> Элемент классификации.
Выберите свойство Наименование.
Конструкция будет иметь вид:
GetPropertyValue(GetTableRowOwner([this]), 'c:@NameAndDescription::c:@ClassificationItem::pd:@Name', '')c:@NameAndDescription::c:@ClassificationItem::pd:@Name – код свойства, значение которого надо получить и поместить в ячейку таблицы.
Результат:
Вернет в ячейку таблицы, к которой применена формула (this), наименование объекта, содержащего таблицу.
Значение ячейки табличного свойства
Необходимо добавить значение ячейки табличного свойства в наименование объекта.
Добавьте в формулу наименования при помощи команды Вставить функцию… одну из функций для работы с табличными свойствами:
Например, формула наименования:
if(
IsNull(First([Состав покрытия])),
'',
StringJoin([Состав покрытия], '.')
)
+
StringPrefixSuffix([Условия эксплуатации], ' ', '')
параметр [Состав покрытия] c функцией GetTablePropertyRows:
GetPropertyValues(GetTablePropertyRows(this, 'coating composition'),'pd:coating composition::pd:layer','')coating composition – код табличного свойства Состав покрытияpd:coating composition::pd:layer – код свойства (столбца) Обозначение слоя табличного свойства Состав покрытия.Вернет значение столбца layer из первой строки табличного свойства с кодом coating composition из объекта, к которому применена формула (this).
параметр [Состав покрытия] c функцией GetTablePropertyRowAbs:
GetPropertyValue(GetTablePropertyRowAbs(this, 'coating composition', last_row), 'pd:coating composition::pd:layer', '')Вернет значение столбца layer из последней строки табличного свойства с кодом coating composition из объекта, к которому применена формула (this)
Описание из свойства типа Перечислимое с описанием
Есть табличное свойство:
В любой строке таблицы в столбце 1 выбирается одно из значений свойства типа Перечислимое с описанием. Значение в столбце 2 таблицы должно быть получено из описания свойства столбец 1.
Используйте функцию GetTablePropertyRows(IPropertyOwner, propertyCode).
Создайте формулу.
Вызовите команду Вставить функцию….
Выберите функцию GetTablePropertyRows и задайте параметры:
GetEnumItemDescription(this, 'код свойства столбца 1', '')
Пример функции с кодом свойства из базы поставки:
GetEnumItemDescription(this, '61557c4e-ba68-40c0-b2a6-78556a2a2622', '')
Назначьте созданную формулу для вычисления столбца 2.
Результат:
В столбец 2 будет вставлено описание свойства из столбца 1.
Значение свойства представления объекта
Необходимо отобразить значение свойства Исполнение из представления изделия в свойствах самого изделия.
Используйте функцию GetViewpoints(IPropertyOwner).
GetPropertyValue(First(GetViewpoints(this)),'код свойства Исполнение из представления объекта','')
Пример функции с кодом свойства из базы поставки:
GetPropertyValue(First(GetViewpoints(this)),'c:@PartLib::c:@Method::pd:@Variant','')
Функция найдет первое представление объекта, после чего выбор свойства будет происходить именно из свойств этого представления.
Создать строку из значений свойства всех представлений объекта
У объекта есть два представления. У каждого представления заполнено значение свойства Вид.
Значения свойства Вид:
Необходимо в свойство объекта Виды представлений типа строка записать значения свойств представлений через разделитель.
Используйте строковую функцию StringJoin(Коллекция, Разделитель).
StringJoin(GetPropertyValues(GetViewpoints([this]),'код свойства Вид из представления объекта', ''), ', ')
Пример функции с кодом свойства из базы поставки:
StringJoin(GetPropertyValues(GetViewpoints([this]),'@BD5A_1CE699B276844D1F', ''), ',')
Результат:
В свойство объекта Виды представлений будет записана строка: До сборки, После сборки.
Числа с ведущими нулями
Есть группа Кольца ГОСТ 18829-2017. Необходимо создать формулу для наименования изделий группы.
Пример наименования: Кольцо 003-005-14 ГОСТ 18829-2017
Диаметр штока, Диаметр цилиндра, и Диаметр сечения – поля типа Число с плавающей запятой. При вводе значения 003 ведущие нули убираются, значение заменяется на 3, значение 005 заменяется на 5 и т.д.
Используйте функцию преобразования результата выражения к строке: ToString(выражение).
Формула для вычисления наименований изделий группы:
[Изделие:Вид изделия] + ' ' +
if(
[Диаметр штока] < 10,
'00',
if(
[Диаметр штока] < 100,
'0',
''
)
) + ToString([Диаметр штока]) + '-' +
if(
[Диаметр цилиндра] < 10,
'00',
if(
[Диаметр цилиндра] < 100,
'0',
''
)
) + ToString([Диаметр цилиндра]) + '-' +
ToString([Диаметр сечения] * 10) + ' ' + [Обозначение стандарта]
[Изделие:Вид изделия], [Диаметр штока], [Диаметр цилиндра], [Диаметр сечения], [Обозначение стандарта] – параметры формулы
Числа с замыкающими нулями дробной части
Формулу для наименования типоразмеров необходимо составить из числовых значений с фиксированным количеством знаков после запятой, недостающие знаки следует заменить нулями.
Например, значение 2 необходимо добавить в виде 2,00; 1,5 в виде 1,50 и т.д. Наимнование типоразмера будет иметь вид:2,00x200x1,50.
Используйте строковые функции:
Формула для преобразования значения свойства [Толщина] типа число с плавающей запятой:
if(
StringIndexOf(ToString([Толщина]), ',') = -1,
StringPrefixSuffix(ToString([Толщина]), '', ',00'),
StringExtract(StringSplit(ToString([Толщина]), ','), 0))
+
if(
StringIndexOf(ToString([Толщина]), ',') = -1, '', ',' +
StringSubstring(StringPrefixSuffix(StringExtract(StringSplit(ToString([Толщина]), ','), 1),'','00'), 0, 2))
параметр [Толщина]:
GetPropertyValue([this], 'c:RequirementConcept::c:TyposizeConcept::c:V6BEFADCFAEF04261A6A70A3072C08BC4::pd:001c17e4-5c0f-4bfc-91fd-68330eaecb0a', 0)
Результат:
77 –> 77,00
0,1 –> 0,10
2,4 –> 2,40
2,44 –> 2,44
2,4458 –> 2,44
Проверка наличия набора символов в строке
Необходимо проверить наличие русских букв в значении свойства типа строка.
Сравните исходную строку, и строку с удаленными символами из коллекции символов алфавита.
Используйте строковые функции:
if (
StringEquals(
[Исходная строка],
StringRemove(
[Исходная строка],
StringArray('а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ъ','ы','э','ю','я')
)
) = true,
'Нет',
'Есть'
)
Результат:
Функция StringRemove удалит из исходной стоки все символы из коллекции символов алфавита, которые будут найдены. Функция StringEquals сравнит исходную строку и строку после удаления символов коллекции. Строки будут совпадать только в том случае, если ни один символ не был найден и удален. Свойство, которому назначена формула, примет значения:
Есть – строки отличаются – есть хотя бы один символ из набораНет – строки одинаковые – нет ни одного символа из набора
Убрать из строки символы в скобках
Необходимо найти и убрать из строки текст в скобках вместе со скобками.
Например, есть группа материалов Сплавы. Необходимо из значения свойства Наименование получить значение свойства Наименование общее без указанного в скобках условного обозначения:
Используйте строковые функции:
if(
StringIndexOf([Наименование], '(') >= 0 and StringIndexOf([Наименование], ')') >= 0,
StringReplace(
[Наименование],
StringSubstring(
[Наименование],
StringIndexOf([Наименование], '('),
StringIndexOf([Наименование], ')') - StringIndexOf([Наименование], '(') + 1
),
''
),
[Наименование]
)
Перенос на новую строку RTF-текста
Требуется в свойстве типа RTF-текст с помощью формулы вывести переменные с разделением на несколько строк.
Используйте последовательности символов:
'\r\n' – завершает текущий абзац и начинает новыйаналог сочетания клавиши Enter в RTF-редакторах
'\n' – переносит текст на новую строчку внутри текущего абзацааналог сочетания клавиш Shift + Enter в RTF-редакторах
'Описание изделия' + '\r\n' + 'Наименование: ' + [Наименование] + '\n' + 'Внутренний диаметр: ' + [Внутренний диаметр]
Результат:
Описание изделия
Наименование: Шайба 16 ГОСТ 22355-77
Внутренний диаметр: 18