Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. *Read more...*

Bug #949335

open

8.2-3.22+ Непонятная ошибка в ПроцессорКомпоновкиДанных.Инициализировать() при обращении к внешней функции

Added by Сергей Старых 3 months ago. Updated 3 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

https://partners.v8.1c.ru/forum/t/2074332/m/2074332
Уже не первый раз сталкиваюсь с недостаточно понятным сообщением об ошибке метода ПроцессорКомпоновкиДанных.Инициализировать() при обращении к функциям модулей и глобального контекста. У метода Инициализировать() есть параметр

ВозможностьИспользованияВнешнихФункций - Указывает возможность использования функции общих модулей конфигурации и функций глобального контекста в выражениях компоновки данных. Значение по умолчанию: Ложь.

Таким образом по умолчанию запрещено использование таких функций.

Но какую же ошибку выбрасывает этот метод при наличии такого обращения в макете компоновки?
Ниже пример кода
Настройки = Новый НастройкиКомпоновкиДанных;
ЭлементСтруктуры = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ЭлементСтруктуры.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ВыбПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбПоле.Поле = Новый ПолеКомпоновкиДанных("Поле1");
Схема = Новый СхемаКомпоновкиДанных;
Ист = Схема.ИсточникиДанных.Добавить();
Ист.Имя = "1";
Ист.ТипИсточникаДанных = "local";
Н = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Н.Имя = "Набор1";
Н.Запрос = "ВЫБРАТЬ &Кум КАК Поле1";
Н.ИсточникДанных = "1";
П = Схема.Параметры.Добавить();
П.Имя = "Кум";
П.Выражение = "ПолучитьФункциональнуюОпцию(""фыв"")";
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(Схема, Настройки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет);

Он выбрасывает ошибку

Ошибка при вызове метода контекста (Инициализировать): Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка в выражении
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "ПолучитьФункциональнуюОпцию"

Думаю фраза "Синтаксическая ошибка" очень мало наталкивает на мысль о том, что включен запрет использования таких функций. Первая мысль обычно скорее "я что то неверно написал в выражении".

Предлагаю заменить текущую формулировку на

Запрещенный вызов "ПолучитьФункциональнуюОпцию"

Мне кажется так людям будет проще понимать причину и что нужно сделать.

Внешнюю обработку с единственной кнопкой для выполнения примера прилагаю.


Files

ВнешняяОбработка1.epf (8.62 KB) ВнешняяОбработка1.epf Сергей Старых, 2022-09-04 06:34 AM

Also available in: Atom PDF