Этап 5: Настройка вычисляемых полей
На этом этапе осуществляется настройка вычисляемых полей, а также дополнительная обработка источника данных. Иногда перед выгрузкой данных их нужно привести в порядок, например убрать лишние пробелы, или все одинарные кавычки заменить на двойные, вариантов может быть множество и все зависит только от задач, которые перед вами стоят. Можно пропустить этот этап, если Вы ничего не хотите вычислять. В противном случае выбирайте «Изменить» и осуществляйте настройку. Как настроить вычисляемые поля и сделать дополнительную обработку источника данных?
в окне «Дополнительная обработка источника» в набор данных можно добавить расчетные поля. Данное окно содержит таблицу со следующими колонками:
Выбор — выбор вычисляемого поля;
Имя — это имя поля, куда будет помещен результат вычисления;
Обработчик — применяемый обработчик, здесь Вы можете использовать обработчик из справочника обработчиков для вычисляемых полей;
Функция (— применяемая функция, здесь Вы можете использовать функцию из справочника функций для вычисляемых полей;
Параметр1 ) — параметр, к которому применяется дополнительная обработка;
Тип — тип данных результата обработки.
Произвольный обработчик — это обработчик, который выполняется после считывания данных, но до вычисляемых. Он предназначен для изменения исходных данных источника.
Чаще всего на этом этапе производится расчет уникальных идентификаторов ссылочных типов данных, присутствующих в вашем наборе. Если этого не сделать, то все ссылочные поля выгрузятся в виде текстовых полей, в которые попадет значение представления для данного поля.
То есть «Склад №2» — это будет просто текст, а не указатель на элемент справочника. И в большом количестве случаев для работы с данными, для их связи между собой в базе данных - одного только представления бывает недостаточно, нужно выгружать еще и ссылку (уникальный идентификатор). Для того, чтобы выгрузить уникальный идентификатор 1C в поле «Функция» в строке должно быть выбрано «Уникальный идентификатор». При открытии окна настройки конструктор предлагает сделать расчет идентификаторов для всех полей ссылочного типа. Проставьте галки только напротив тех, которые вам нужны.
Есть еще несколько предопределенных функций этого вида. Подробнее о них можно узнать в справочнике функций.
В поле «обработчик» может быть использована любая функция, написанная на языке 1С. Обращение к другим полям набора данных осуществляется с предустановкой перед именем слова «Запись.». Например, там может быть написано "НачалоНедели(Запись.Период)" или любая другая функция языка 1С, доступная на сервере, в том числе ваша собственная функция общего модуля. См. картинку:
Произвольный обработчик используется для дообработки всего набора данных в виде таблицы значений. Здесь размер (количество строк) таблицы на входе зависит от настроек буфера. По умолчанию буфер = 0, а количество строк будет подаваться частями по 1000 шт. Если для доп. обработки нужна вся таблица целиком - то размер буфера надо установить отрицательный. См. настройки строки проекта, раздел "оптимизация":
Здесь также можно использовать Предопределенные Обработчики.
Как создать свой произвольный обработчик дополнительной обработки данных:
Откроется окно создания обработчика, где будет необходимое для программиста описание входных параметров (раздел «Описание»). Само тело обработчика пишется в разделе «Параметры» - в поле Алгоритм.
Пример создания своего обработчика для расчета вычисляемых полей:
В приведенном примере можно использовать не всю таблицу, а обрабатывать ее по частям. В этом случае настройки буфера можно не трогать. Если бы вы в своем алгоритме использовали некие группировки таблицы- тогда вам нужна была бы на входе таблица целиком.
Однако в случае очень больших данных получать таблицу значений целиком иногда бывает невозможно ввиду нехватки памяти, имейте это ввиду. Ваш обработчик будет сохранен в справочнике обработчиков и может быть использован в других проектах. Будьте внимательны к синтаксису, проверка синтаксиса автоматически не выполняется. И если вы вдруг где-то не поставите точку с запятой, например - то поля не рассчитаются.
См. также примеры: