---
title: Конструктор формул
slug: bsp/конструктор-формул
---


## ДобавитьСписокПолейНаФорму
<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>

## ВыполнитьПоискВСпискеПолей
<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).

---
