---
title: Работа с формулами
slug: erp-uh/работа-с-формулами
---


## ВыражениеПолногоИдентификатораХарактеристики
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает выражение получения идентификатора характеристики. Следует обратить внимание, что выражение
// в обычном запросе и в наборе-запросе СКД отличаются.
//
// Параметры:
// 	МетаданныеВидаХарактеристик - ОбъектМетаданных - Объект метаданных характеристик. См. РаботаСФормуламиПовтИсп.СвойстваПоддерживаемыхИсточниковХарактеристик.
// 	ДляСКД - Булево - Флаг получения выражения для текста запроса в СКД.
// Возвращаемое значение:
// 	Строка - Выражение поля идентификатора, включающего скобки и обращение к указанному в СвойстваПоддерживаемыхИсточниковХарактеристик полю.
//
Функция ВыражениеПолногоИдентификатораХарактеристики(МетаданныеВидаХарактеристик, ДляСКД = Ложь) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ВыражениеПолногоИдентификатораХарактеристики(МетаданныеВидаХарактеристик, ДляСКД);
```
</details>

## МодифицированноеВыражениеОперандаДляСКД
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает модифицированное выражение операнда для СКД с наборами данных - запросами, в которых переопределено
// получение характеристик.
//
// Параметры:
// 	ИсходноеВыражение - Строка - Выражение операнда. Например, "Номенклатура.{ДР.Характеристика1}.Контрагент"
// Возвращаемое значение:
// 	Строка - модифицированное выражение. Например, "Номенклатура.[[ДР.Характеристика1]]].Контрагент".
Функция МодифицированноеВыражениеОперандаДляСКД(ИсходноеВыражение) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.МодифицированноеВыражениеОперандаДляСКД(ИсходноеВыражение) 
```
</details>

## СвойстваХарактеристики
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl


// Возвращает свойства характеристики по ее выражению на языке формул
//
// Параметры:
// 	ВыражениеХарактеристики - Строка - Например, "{ДР.ОсновнойПоставщик}".
// Возвращаемое значение:
// 	Структура - Описание:
// * Метаданные - ОбъектМетаданныхПланВидовХарактеристик, ОбъектМетаданныхСправочник - Метаданные источника характеристик.
// 				Например, Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения
// 				или Метаданные.Справочники.ВидыКонтактнойИнформации.
// * Идентификатор - Строка - Идентификатор характеристики, указанный в соответствующем реквизите, хранимом в таблице характеристик.
// * Префикс - Строка - Префикс вида характеристик. Например "ДР." - Для дополнительных реквизитов и сведений.
Функция СвойстваХарактеристики(ВыражениеХарактеристики) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.СвойстваХарактеристики(ВыражениеХарактеристики) 
```
</details>

## ПолеИдентификатораДополнительныхРеквизитовИСведений
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает имя поля идентификатора для формул дополнительных реквизитов и сведений.
//
// Возвращаемое значение:
// 	Строка - Имя поля "ИдентификаторДляФормул"
Функция ПолеИдентификатораДополнительныхРеквизитовИСведений() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПолеИдентификатораДополнительныхРеквизитовИСведений() 
```
</details>

## ПолучитьПустоеДеревоОперандов
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Формирует дерево значений с колонками Идентификатор, Представление.
//
// Возвращаемое значение:
//  ДеревоЗначений - Пустое дерево операндов с колонками:
//    *Идентификатор - Строка - Идентификатор операнда.
//    *Представление - Строка - Представление операнда.
//    *ТипЭлементаДерева - Строка - См. РаботаСФормулами.ТипыЭлементовДереваОперандов
//    *РазрешаетсяВыборОперанда - Булево - Если истина, то строку дерева операнда можно будет выбирать в формулу.
//    		Например, не имеет смысла выбор групп операндов.
//    *ВключаетсяВИдентификатор - Булево - Признак включения идентификатора текущей строки в состав идентификатора нижерасположенной строки.
//    		Например, если группа операндов идентифицирует путь к данным, то она должна включаться в идентификатор.
//    		Если группа операндов используется только для логической компоновки операндов, то она не должна включаться в идентификатор.
//    *ТипЗначения              - ОписаниеТипов - Описание типов операнда. Разрешается не указывать тип только для групп операндов.
//    		В остальных случаях заполнение обязательно.
//    *РазворачиватьДоРеквизитов - Булево - Признак необходимости рекурсивно разворачивать ссылочный операнд до реквизитов.
//    *Значение - Число - Значение операнда. Может использоваться, например, для интерактивного расчета значения по формуле.
//    *СодержитЗначение - Булево - Флаг, что строка операнда содержит значение.
//    *ПометкаУдаления  - Булево - Заполняется, если операнд представляет из себя ссылку на объект (например, тип цен).
//    		Если элемент помечен на удаление, то при выборе будет выведено дополнительное оповещение.
//
Функция ПолучитьПустоеДеревоОперандов() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПолучитьПустоеДеревоОперандов() 
```
</details>

## ТипыЭлементовДереваОперандов
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Типы элементов дерева операндов. Тип элемента влияет на картинку строки в дереве, а также может влиять на поведение.
// Реализация в виде структуры позволяет использовать ее в коде как перечисление.
//
// Возвращаемое значение:
// 	Структура - Описание:
// * Операнд - Строка - Обычный операнд не относящийся к метаданным. Например, вид цен. Значение по умолчанию.
// * Группа - Строка - Группа операндов или реквизитов или параметров. Картинка как папка.
// * ГруппаСтрокВерхнегоУровня - Строка - Группа операндов или реквизитов. Картинка как три реквизита.
// * Реквизит - Строка - Реквизит метаданных. Например, реквизит вид номенклатуры.
// * ДополнительныйРеквизит - Строка - Дополнительный реквизит. Отличается от дополнительного сведения только картинкой (и местом хранения значения).
// * ДополнительноеСведение - Строка - Дополнительное сведение.
// * ВидКонтактнойИнформации_Адрес - Строка - Вид контактной информации с типом "адрес".
// * ВидКонтактнойИнформации_Телефон - Строка - Вид контактной информации с типом "телефон".
// * ВидКонтактнойИнформации_АдресЭлектроннойПочты - Строка - Вид контактной информации с типом "адрес электронной почты".
// * ВидКонтактнойИнформации_Skype - Строка - Вид контактной информации с типом "skype".
// * ВидКонтактнойИнформации_ВебСтраница - Строка - Вид контактной информации с типом "веб страница".
// * ВидКонтактнойИнформации_Факс - Строка - Вид контактной информации с типом "факс".
// * ВидКонтактнойИнформации_Другое - Строка - Вид контактной информации с типом "другое".
// * ВидКонтактнойИнформации_НесколькоВидовКонтактнойИнформации - Строка - Идентификатор по указанному идентификатору существует несколько
// 		элементов справочника виды контактной информации с разными типами.
// * ПрочаяХарактеристика - Строка - Другой вид характеристик, не являющийся доп.реквизитами и сведениями или контактной информацией.
//
Функция ТипыЭлементовДереваОперандов() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ТипыЭлементовДереваОперандов() 
```
</details>

## НоваяСтрокаДереваОперанда
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Добавляет в указанное место подчиненную строку дерева и заполняет ее значениями по умолчанию.
//
// Параметры:
// 	МестоДобавления - ДеревоЗначений, СтрокаДереваЗначений, ДанныеФормыДерево, ДанныеФормыЭлементДерева - дерево,
// 			полученное методом ПолучитьПустоеДеревоОперандов или дерево на форме или строки дерева.
// Возвращаемое значение:
// 	- СтрокаДереваЗначений - Строка, добавленная в дерево значений.
// 	- ДанныеФормыЭлементДерева - Строка, добавленная в дерево на форме.
Функция НоваяСтрокаДереваОперанда(МестоДобавления) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.НоваяСтрокаДереваОперанда(МестоДобавления) 
```
</details>

## ОграниченияРазверткиОперандов
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает шаблон параметров дополнительных ограничений развертки операндов.
//
// Возвращаемое значение:
// 	Структура - Описание:
// * РекурсивноРазворачиватьОперандыСхемыКомпоновки - Булево - Значение по умолчанию Истина (разворачиваются). Но можно отключить разворот строк
// 		одним параметром без указания соответствующего параметра для каждой строки дерева операндов.
// * МаксимальныйУровеньРазверткиСтрок - Число - Значение по умолчанию 0 (не контролируется). Контроль максимального уровня строк в дереве при развертке.
// * ВыводитьРеквизиты - Булево - Значение по умолчанию Истина. Флаг необходимости выводить обычные реквизиты при развертке.
// * ВыводитьХарактеристики - Булево - Значение по умолчанию Истина. Флаг необходимости выводить характеристики (доп.реквизиты и сведения, а также контактную информацию).
// * НаборыДополнительныхРеквизитов - Массив из СправочникСсылка.НаборыДополнительныхРеквизитовИСведений - Если массив пустой, то дополнительный отбор для доп.реквизитов
// 		и сведений по наборам не накладывается. Действует только отбор, описанный в метаданных (кнопка "Характеристики") для объектов
// 		из типа значения разворачиваемой строки.
// 		Если массив не пустой, то в дополнению к отбору из метаданных накладывается отбор на вхождение доп.реквизитов и сведений
// 		в указанные наборы.
// * ВыводимыеРеквизиты - Строка - Значение по умолчанию "" (вывод реквизитов не ограничивается). Возможность ограничить выводимые реквизиты списком, перечисленным через запятую.
// 		Если значение заполнено, то при выводе реквизита будет выполняться проверка на вхождение в этот список.
// * НеВыводимыеРеквизиты - Строка - Значение по умолчанию "" (вывод реквизитов не ограничивается). Возможность ограничить выводимые реквизиты списком, перечисленным через запятую.
// 		Если значение заполнено, то при выводе реквизита будет выполняться проверка на НЕ вхождение в этот список.
//
Функция ОграниченияРазверткиОперандов() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ОграниченияРазверткиОперандов() 
```
</details>

## РазвернутьСтрокуОперанда
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Разворачиваем строку дерева операндов на один уровень по ее типу значения (добавляются подчиненные строки - реквизиты и характеристики).
//
// Параметры:
// 	СтрокаДерева - СтрокаДереваЗначений - разворачиваемая строка дерева:
// 	 *Идентификатор - Строка - Для всех типов значений. Идентификатор строки.
// 	 *Представление - Строка - Для всех типов значений. Представление строки.
// 	 *ТипЭлементаДерева - Строка - Для всех типов значений. см. РаботаСФормулами.ТипыЭлементовДереваОперандов.
// 	 *РазрешаетсяВыборОперанда - Булево - Для всех типов значений. Флаг возможности выбора строки операнда.
// 	 *ВключаетсяВИдентификатор - Булево - Для всех типов значений. Флаг включения текущего операнда в нижеследующие.
// 	СтрокаДерева - ДанныеФормыЭлементДерева - разворачиваемая строка дерева.
// 	 *Идентификатор - Строка - Для всех типов значений. Идентификатор строки.
// 	 *Представление - Строка - Для всех типов значений. Представление строки.
// 	 *ТипЭлементаДерева - Строка - Для всех типов значений. см. РаботаСФормулами.ТипыЭлементовДереваОперандов.
// 	 *РазрешаетсяВыборОперанда - Булево - Для всех типов значений. Флаг возможности выбора строки операнда.
// 	 *ВключаетсяВИдентификатор - Булево - Для всех типов значений. Флаг включения текущего операнда в нижеследующие.
// 	ОграниченияРазвертки - Неопределено - Значения развертки по умолчанию.
// 	ОграниченияРазвертки - см. РаботаСФормулами.ОграниченияРазверткиОперандов.
//
Процедура РазвернутьСтрокуОперанда(СтрокаДерева, ОграниченияРазвертки = Неопределено) Экспорт
```

Пример вызова
```bsl
РаботаСФормулами.РазвернутьСтрокуОперанда(СтрокаДерева, ОграниченияРазвертки);
```
</details>

## РазвернутьСтрокуОперандаДереваФормы
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Разворачиваем строку дерева операндов на один уровень по ее типу значения (добавляются подчиненные строки - реквизиты и характеристики).
// Вызывается из формы с деревом операндов при событии развертки строки дерева. Поиск строки по ее идентификатору и удаление подчиненной служебной строки.
//
// Параметры:
// 	ДеревоОперандовФормы - ДанныеФормыДерево - Дерево операндов на форме.
// 	ИдентификаторТекущейСтрокиДереваОперандов - Число - Идентификатор строки дерева формы.
// 	МаксимальныйУровеньРазверткиСтрок - Число - Значение по умолчанию 0 (не контролируется). Контроль максимального уровня строк в дереве при развертке.
//
Процедура РазвернутьСтрокуОперандаДереваФормы(ДеревоОперандовФормы, ИдентификаторТекущейСтрокиДереваОперандов, МаксимальныйУровеньРазверткиСтрок = 0) Экспорт
```

Пример вызова
```bsl
РаботаСФормулами.РазвернутьСтрокуОперандаДереваФормы(ДеревоОперандовФормы, ИдентификаторТекущейСтрокиДереваОперандов, МаксимальныйУровеньРазверткиСтрок);
```
</details>

## ДобавитьВДеревоДоступныеПоляПоСхемеКомпоновки
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl


// Добавляет в указанное место дерева операндов первый уровень полей по схеме компоновки данных.
//
// Параметры:
// 	МестоДобавления - ДеревоЗначений, СтрокаДереваЗначений - Строки добавляются непосредственно в дерево операндов
// 				или в указанную строку дерева операндов.
// 	СхемаКомпоновки - СхемаКомпоновкиДанных - Произвольная схема компоновки, поля выборки которой необходимо добавить
// 				в указанное место.
// 	ОграниченияРазвертки - Неопределено, Структура - см. РаботаСФормулами.ОграниченияРазверткиОперандов.
//
Процедура ДобавитьВДеревоДоступныеПоляПоСхемеКомпоновки(МестоДобавления, СхемаКомпоновки, ОграниченияРазвертки = Неопределено) Экспорт
```

Пример вызова
```bsl
РаботаСФормулами.ДобавитьВДеревоДоступныеПоляПоСхемеКомпоновки(МестоДобавления, СхемаКомпоновки, ОграниченияРазвертки);
```
</details>

## ЗагрузитьДеревоОперандовВДеревоФормы
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Загружает в дерево на форме инициализированное разработчиком дерево значений,
// также заполняет соответствие значений операндов, если соответствующий параметр передан.
//
// Параметры:
// 	ДеревоФормы - ДанныеФормыДерево - Дерево на форме, в которое загружается инициализированное разработчиком дерево значений.
// 				Имеет служебные колонки, которых нет в ДеревоОперандов, они заполняются в данном методе.
// 	ДеревоОперандов - ДеревоЗначений - Инициализированное разработчиком дерево значений. См. ПолучитьПустоеДеревоОперандов.
// 	МассивРазрешенныхОперандов - Неопределено, Массив - имена разрешенных операндов для проверки корректности формулы.
// 	ЗначенияОперандов - Неопределено - Значение по умолчанию. Соответствие операндов и их значений не заполняется.
// 				Соответствие - Соответствие операндов и их значений:
// 					* Ключ - Строка - Идентификатор операнда.
// 					* Значение - Число - значение операнда.
Процедура ЗагрузитьДеревоОперандовВДеревоФормы(ДеревоФормы, ДеревоОперандов, МассивРазрешенныхОперандов = Неопределено, Экспорт
```

Пример вызова
```bsl
РаботаСФормулами.ЗагрузитьДеревоОперандовВДеревоФормы(ДеревоФормы, ДеревоОперандов, МассивРазрешенныхОперандов, );
```
</details>

## ПолучитьПустоеДеревоОператоров
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Формирует дерево значений с колонками Наименование, Оператор, Сдвиг.
//
// Возвращаемое значение:
//  ДеревоЗначений - Пустое дерево операторов с колонками:
//  * Наименование - Строка - Наименование оператора.
//  * Оператор - Строка - Оператор.
//  * Сдвиг - Число - Сдвиг оператора.
//
Функция ПолучитьПустоеДеревоОператоров() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПолучитьПустоеДеревоОператоров() 
```
</details>

## ДобавитьГруппуОператоров
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Добавляет в дерево операторов группу операторов с переданным наименованием.
//
// Параметры:
//  Дерево - ДеревоЗначений - Дерево операторов. см. функцию ПолучитьПустоеДеревоОператоров().
//  Идентификатор - Строка - Идентификатор оператора на встроенном языке.
//  Представление - Строка - Наименование группы дерева операторов на языке пользователя.
//
// Возвращаемое значение:
//  СтрокаДереваЗначений - Добавленная группа операторов.
//
Функция ДобавитьГруппуОператоров(Дерево, Идентификатор, Представление) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, Идентификатор, Представление) 
```
</details>

## ДобавитьОператор
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Добавляет в дерево операторов группу операторов с переданным наименованием.
//
// Параметры:
//  МестоДобавления - ДеревоЗначений, СтрокаДереваЗначений - Дерево операторов или группа операторов, в которую необходимо добавить оператор.
//  Идентификатор - Строка - Идентификатор оператора на встроенном языке.
//  КонструкцияДляВставки - Строка - Текст, добавляемый в формулу при выборе, идентификатор со скобками и параметрами.
//  Представление - Строка - Представление оператора на языке пользователя.
//  Пояснение - Строка - Опциональное пояснение для пользователя, что выполняет оператор.
//  Сдвиг - Число - необходим для определения позиции курсора.
//
// Возвращаемое значение:
//  СтрокаДереваЗначений - Добавленный оператор.
//
Функция ДобавитьОператор(МестоДобавления, Идентификатор, КонструкцияДляВставки, Представление, Пояснение = "", Сдвиг = 0) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ДобавитьОператор(МестоДобавления, Идентификатор, КонструкцияДляВставки, Представление, Пояснение, Сдвиг);
```
</details>

## ПолучитьСтандартноеДеревоОператоров
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Формирует дерево со стандартными операторами "+", "-", "*", "/"
//
// Возвращаемое значение:
//  ДеревоЗначений - дерево операторов. см. функцию ПолучитьПустоеДеревоОператоров().
//
Функция ПолучитьСтандартноеДеревоОператоров() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПолучитьСтандартноеДеревоОператоров() 
```
</details>

## ПостроитьДеревоОператоров
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Заполняет дерево операторов для конструктора формул.
//
// Параметры:
//  Параметры - Структура - содержит виды операторов, которые необходимо добавить в дерево.
//  УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы, в которой выполняется действия,
//  		необходим для корректного помещения во временное хранилище.
//
// Возвращаемое значение:
//  Строка - Адрес во временном хранилище.
//
Функция ПостроитьДеревоОператоров(Параметры, УникальныйИдентификатор) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПостроитьДеревоОператоров(Параметры, УникальныйИдентификатор) 
```
</details>

## ПараметрыПроверкиФормулы
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает шаблон параметров проверки формулы.
//
// Возвращаемое значение:
// 	Структура - Описание:
// * ФункцииОбщегоМодуля - Массив из см. РаботаСФормуламиКлиентСервер.ОписаниеФункцииОбщегоМодуля - Описание добавленных функций.
// * ФормулаДляВычисленияВЗапросе - Булево - Признак исполнения функции в качестве выражения текста запроса.
// * Поле - Строка - Путь к реквизиту формы, для которого было выведено сообщение, или к данным объекта.
// * ПутьКДанным - Строка - Содержит путь в форме, которая будет отображать сообщение, до объекта, связанного с этим сообщением.
// * СообщениеОбОшибке - Строка - Значение по умолчанию "". Если сообщение заполнено, то при наличии ошибки будет выводится указанное сообщение.
// * НеВыводитьСообщения - Булево - Флаг, позволяющий отключить вывод сообщений об ошибках.
//
Функция ПараметрыПроверкиФормулы() Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПараметрыПроверкиФормулы() 
```
</details>

## ПроверитьФормулу
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Осуществляет проверку корректности формулы
//
// Параметры:
//   Формула - Строка - текст формулы.
//   Операнды - Массив из Строка - операнды формулы.
//   ТипРезультата - ОписаниеТипов - ожидаемый тип результата вычисления.
//   ПараметрыПроверки - см. ПараметрыПроверкиФормулы
//
// Возвращаемое значение:
//  Булево - Ложь, если есть ошибки, иначе Истина.
//
Функция ПроверитьФормулу(Формула, Операнды, ТипРезультата, ПараметрыПроверки = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПроверитьФормулу(Формула, Операнды, ТипРезультата, ПараметрыПроверки);
```
</details>

## ВыраженияСПредставлениямиХарактеристикДляОнлайнПроверки
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает соответствие выражение с идентификаторами - выражение с представлениями.
// Используется для онлайн проверки корректности выражений СКД из форм подбора аналитики и субконто.
// В случае указания контактной информации, для идентификатора которой подходят несколько представлений, вернет
// не сложное выражение через конструкцию ВЫБОР КОГДА, а первое подходящее представление контактной информации
// (для корректного отображения в поле на форме).
// Для онлайн проверки выражений в выражения следует подставлять представления характеристик.
// Использование переопределения имен характеристик для онлайн проверки не используется из-за высоких накладных расходов
// при инициализации компоновщика.
//
// Параметры:
// 	ВыраженияСИдентификаторами - Массив из Строка - выражение операнда в терминах идентификаторов. Например, Номенклатура.{ДР.Экспедитор}.ГоловнойКонтрагент.{КИ.Телефон}
// 	СхемаКомпоновки - Неопределено, СхемаКомпоновкиДанных - Схемы компоновки по которой проверяется существование полей операндов.
// 				Если схема компоновки не задана парсинг выражений не возможен.
//
// Возвращаемое значение:
// 	Соответствие из КлючИЗначение - соответствие выражений в терминах идентификаторов и выражения с использованием представления:
// 	 *Ключ - Строка - выражение с идентификаторами. Например, Номенклатура.{ДР.Экспедитор}.ГоловнойКонтрагент.{КИ.Телефон}.
// 	 *Значение - Строка - выражение с представлениями характеристик. Например, Номенклатура.[Главный экспедитор].ГоловнойКонтрагент.Телефон.
//
Функция ВыраженияСПредставлениямиХарактеристикДляОнлайнПроверки(ВыраженияСИдентификаторами, СхемаКомпоновки = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ВыраженияСПредставлениямиХарактеристикДляОнлайнПроверки(ВыраженияСИдентификаторами, СхемаКомпоновки);
```
</details>

## ПолучитьДанныеОперандовДляТаблицыДанных
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Вычисляет значения выражений операндов для таблицы значений. Возвращает таблицу данных с добавленными колонками результатов вычислений.
// Колонки таблицы данных должны быть типизированы.
//
// Параметры:
// 	ТаблицаДанных - ТаблицаЗначений - Таблица данных, содержащая произвольное количество типизированных колонок.
// 	ВыраженияВычисления - Соответствие - Выражение (операнд) вычисления и имя колонки результата. В зависимости
// 				от контекста выполнения формулы указываются все выражения (операнды), которые можно вычислить
// 				по данным таблицы данных:
// 	 * Ключ - Строка - Выражение вычисления в формате операнда формулы.
// 	 			Например, "Номенклатура.{ДР.Экспедитор}.ГоловнойКонтрагент.{КИ.Телефон}".
// 	 			Если выражение вычисления начинается с определенной колонки, например "Номенклатура", то данная колонка
// 	 			должна быть в таблице данных.
// 	 * Значение - Строка - Имя колонки, в которую будет помещен результат вычисления выражения.
// 	ИменаКолонокХарактеристик - Неопределено, Соответствие - если выражение вычисления начинается с характеристики,
// 				то необходимо указать имя колонки, в которой содержится соответствующие значения характеристик.
// 				Например, при вычислении наименования новой не записанной в базу номенклатуры,
// 				значения операндов могут рассчитываться из заполненных в карточке товара дополнительных реквизитов:
// 		* Ключ - Строка - Часть операнда, выражение характеристики в формате формул. Например "{ДР.ОсновнаяНоменклатураСписания}".
// 		* Значение - Строка - Имя колонки в таблице источников вычисления.
// 	ВыполнятьПроверкуВыражений - Булево - Флаг, указывающий, нужно ли проводить полную проверку выражений.
// 				Если полная проверка всего выражения не проводится, то это может сэкономить время на парсинге выражений
// 				(предполагается, что выражения указаны корректно), что может быть критично для механизмов, используемых
// 				в транзакции. Если полная проверка всего выражения не проводится, то выражения парсятся только для
// 				получения типов, для которых указана характеристика или для получения представления характеристики.
// 				Если полная проверка всего выражения проводится, то все выражение проверяется на корректность
// 				не зависимо от наличия в нем характеристик.
//
// Возвращаемое значение:
// 	Структура - структура со свойствами:
// * ТаблицаРезультатов - ТаблицаЗначений - Таблица, содержащая колонки таблицы источников вычислений и колонки результатов вычислений:
// 	 ** ИндексСтроки - Число - колонка индекса строки. Если она отсутствует в таблице источников, то будет добавлена.
// * ЕстьОшибки - Булево - Флаг наличия ошибок при преобразовании выражений.
// * СообщенияОшибокПреобразования - Соответствие - Сообщения ошибок преобразования, при их наличии:
//    ** Ключ - Строка - Исходное выражение, для которого зарегистрирована ошибка.
//    ** Значение - Строка - Текст сообщения об ошибке.
//
Функция ПолучитьДанныеОперандовДляТаблицыДанных(ТаблицаДанных, ВыраженияВычисления, ИменаКолонокХарактеристик = Неопределено, Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ПолучитьДанныеОперандовДляТаблицыДанных(ТаблицаДанных, ВыраженияВычисления, ИменаКолонокХарактеристик, );
```
</details>

## ДанныеДляПолученияВыраженийФормулЧерезСКД
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает структуру параметров для получения данных через СКД, а также, выполняет корректировку СКД
// (если для получения выражений используются только наборы данных запросы, то по указанным выражениям вычисляются
// все типы данных, для которых указаны характеристики указывается в текстах соответствующих наборов запросов
// текст переопределения получения характеристик на языке расширения запросов (ограниченное количество типов,
// т.к. указание переопределения характеристик для всех возможных типов не оптимально).
// В случае, если для вычисления выражений используются наборы объекты, то выражения преобразуются с использованием
// представлений характеристик на языке текущего пользователя.
//
// Параметры:
// 	СхемаКомпоновки - СхемаКомпоновкиДанных - Схема компоновки, используемая для получения данных.
// 	ИсходныеВыражения - Массив из Строка - Массив исходных выражений в формате написания формул.
// 				Например, "Номенклатура.{ДР.ОсновнойПоставщикТовара}.{КИ.Телефон}".
// 	ВыполнятьПроверкуВыражений - Булево - Флаг, указывающий, нужно ли проводить полную проверку выражений.
// 				Если полная проверка всего выражения не проводится, то это может сэкономить время на парсинге выражений
// 				(предполагается, что выражения указаны корректно), что может быть критично для механизмов, используемых
// 				в транзакции. Если полная проверка всего выражения не проводится, то выражения парсятся только для
// 				получения типов, для которых указана характеристика или для получения представления характеристики.
// 				Если полная проверка всего выражения проводится, то все выражение проверяется на корректность
// 				не зависимо от наличия в нем характеристик.
// 	ИспользоватьТолькоПредставленияХарактеристик - Булево - Настройка позволяет принудительно включить преобразование
// 				характеристик к представлению на языке текущего пользователя. Бывает полезна для механизм, где критична
// 				производительность механизма получения данных (например, выполнение в транзакции), т.к. парсинг
// 				выражения с целью получения типов данных занимает время. Если Истина будет выполнена замена характеристик
// 				на представления не зависимо от того, какие наборы данных используются в схеме компоновки.
// Возвращаемое значение:
// 	Структура - Описание:
// * ПреобразованныеВыражения - Соответствие - Результат преобразования выражений.
// 		*Ключ - Строка - Исходное выражение.
// 		*Значение - Строка - Результат преобразования для СКД. В случае, если для вычисления выражений
// 			используются только наборы запросы, то, например, "Номенклатура.[[ДР.ОсновнойПоставщикТовара]]].[[КИ.Телефон]]]".
// 			Если для вычисления выражений используются также наборы объекты, то выражение преобразуется с использованием
// 			представлений. Например, "Номенклатура.[Основной поставщик товара (Обувь)].Телефон".
// * ЕстьОшибки - Булево - Флаг наличия ошибок при преобразовании выражений.
// * СообщенияОшибокПреобразования - Соответствие - Сообщения ошибок преобразования, при их наличии:
//    **Ключ - Строка - Исходное выражение, для которого зарегистрирована ошибка.
//    **Значение - Строка - Текст сообщения об ошибке.
// * СхемаКомпоновкиИзменена - Булево - Флаг, указывающий, что схема компоновки изменена (в наборы данных запросы
//   			добавлено переопределение получения характеристик на языке расширения запросов.
//
Функция ДанныеДляПолученияВыраженийФормулЧерезСКД(СхемаКомпоновки, ИсходныеВыражения, ВыполнятьПроверкуВыражений = Ложь, Экспорт
```

Пример вызова
```bsl
Результат = РаботаСФормулами.ДанныеДляПолученияВыраженийФормулЧерезСКД(СхемаКомпоновки, ИсходныеВыражения, ВыполнятьПроверкуВыражений, );
```
</details>

---

© 2024, **ООО 1С-Софт**  
Все права защищены. Эта программа и сопроводительные материалы предоставляются  
в соответствии с условиями лицензии [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/legalcode).

---
