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 Сергей Старых about 1 year ago. Updated about 1 year 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
Actions #1

Updated by Сергей Старых about 1 year ago

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

Also available in: Atom PDF