Помогите понять почему ругается? Где именно синтаксическая ошибка. Если параметр Коэфициент заменить на значение к примеру 10 в коде всё работает. Но нужно чтоб пользователь в правах сам менял на нужный.
---
```1c
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ИспользоватьВнешниеФункции = Истина;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, ИспользоватьВнешниеФункции);
```
---
Зависит от Вас. Например, сделать в отчете так:

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт

    ОтчетыСервер.ВывестиОтчет(ЭтотОбъект, СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка, , Истина);

    КонецПроцедуры
```
---
Уточните, пожалуйста, а формирование отчета осуществляется программно?
---
Нет, пользователь сам его открывает выставляю нужные для себя настройки и нажимает кнопку сформировать.
---
Я имел ввиду не исполняется ли при нажатии на кнопку "Сформировать", либо в обработчике "ПриКомпоновкеРезультата" в модуле отчета код, похожий на этот:

```1c
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
```
---
В модуле объекта только это

```1c
    Функция ПолучитьСвойства() Экспорт

    СтруктураСвойств = Новый Структура;
    СтруктураСвойств.Вставить("Организация");
    СтруктураСвойств.Вставить("ПодразделениеКомпании");
    СтруктураСвойств.Вставить("Менеджер");
    СтруктураСвойств.Вставить("СкладКомпании");
    СтруктураСвойств.Вставить("ДокументПродажи");
    СтруктураСвойств.Вставить("Поставщик");
    СтруктураСвойств.Вставить("Покупатель");
    СтруктураСвойств.Вставить("Автомобиль");
    СтруктураСвойств.Вставить("Проект");
    СтруктураСвойств.Вставить("Номенклатура");
    СтруктураСвойств.Вставить("ХарактеристикаНоменклатуры");
    СтруктураСвойств.Вставить("АвтоРабота");
    СтруктураСвойств.Вставить("Партия");
    СтруктураСвойств.Вставить("ПериодРегистратор");

    Возврат СтруктураСвойств;

    КонецФункции

    // Стандартная процедура настройки схемы компоновщика данных
    //
    Процедура ЗаполнитьНачальныеНастройки() Экспорт

    ОтчетыСервер.ЗаполнитьНачальныеОстатки(ЭтотОбъект);

    ИмяУпрВалюты = Константы.ВалютаУправленческогоУчетаКомпании.Получить().Наименование;
    ИмяРеглВалюты = Константы.ВалютаРегламентированногоУчетаОрганизаций.Получить().Наименование;

    СтруктураВалютПоказателей = Новый Структура();
    СтруктураВалютПоказателей.Вставить("СуммаРегл", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаУпр", ИмяУпрВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаНДС", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаБезНДС", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СебестоимостьРегл", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СебестоимостьУпр", ИмяУпрВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаНДСВходящий", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СебестоимостьБезНДС", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаНаценкиРегл", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаНаценкиУпр", ИмяУпрВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаНаценкиБезНДС", ИмяРеглВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаСкидки", ИмяРеглВалюты);

    СтруктураВалютПоказателей.Вставить("СуммаЗаказНарядыУпр", ИмяУпрВалюты);
    СтруктураВалютПоказателей.Вставить("СуммаРеализацииУпр", ИмяУпрВалюты);

    Для Каждого ТекРесурс Из СхемаКомпоновкиДанных.ПоляИтога Цикл
    Для Каждого ТекНабор Из СхемаКомпоновкиДанных.НаборыДанных Цикл
    Для Каждого ТекПоле Из ТекНабор.Поля Цикл

    Если НЕ ТипЗнч(ТекПоле) = Тип("ПолеНабораДанныхСхемыКомпоновкиДанных") Тогда
    Продолжить;
    КонецЕсли;

    ИмяПоля = СокрЛП(ТекПоле.Поле);
    Если ТекРесурс.ПутьКДанным = ИмяПоля И СтруктураВалютПоказателей.Свойство(ИмяПоля) Тогда
    ТекПоле.Заголовок = ТекПоле.Заголовок + " (" + СтруктураВалютПоказателей[ИмяПоля]+")";
    Прервать;
    КонецЕсли;

    КонецЦикла;
    КонецЦикла;
    КонецЦикла;

    КонецПроцедуры

    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт

    ОтчетыСервер.ВывестиОтчет(ЭтотОбъект, СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка);

    КонецПроцедуры
```
---
Так, уже теплее. А в "ОтчетыСервер.ВывестиОтчет(" код приведенный мной есть?

Я к чему это спрашиваю. Хочу убедиться, в процессоре компоновки включено использование внешних функций:

```1c
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
```
---
```1c
    Процедура ВывестиОтчет(ОтчетОбъект, СхемаКомпоновкиДанных, Настройки, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка, ВнешниеНаборыДанных = Неопределено, ИспользоватьВнешниеФункции = Ложь) Экспорт

    СтандартнаяОбработка = Ложь;
    ДокументРезультат.Очистить();

    НеПравильныйФормат = Истина;
    Попытка
    НеПравильныйФормат = ТипЗнч(ОтчетОбъект) = Тип("СхемаКомпоновкиДанных");
    Исключение
    КонецПопытки;

    Если НеПравильныйФормат Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Старая версия отчета. Используйте отчеты, начиная от версии 5.0.06!";
    Сообщение.Сообщить();
    Возврат;
    КонецЕсли;

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Настройки, "dataCompositionScheme", "http://v8.1c.ru/8.1/data-composition-system/scheme");
    ТекстЗапроса = ЗаписьXML.Закрыть();

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ТекстЗапроса);
    КопияНастроек = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("НастройкиКомпоновкиДанных"));

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(КопияНастроек);

    КомпоновщикНастроек.Настройки.Структура.Очистить();

    Для Каждого ТекущаяТаблица Из Настройки.Структура Цикл

    Если ТекущаяТаблица.Использование Тогда
    СкопироватьСтруктуру(КомпоновщикНастроек.Настройки.Структура, ТекущаяТаблица, Настройки.Порядок);
    КонецЕсли;

    КонецЦикла;

    Попытка
    ОтчетОбъект.ПередФормированиемМакетаКомпоновки(СхемаКомпоновкиДанных, КомпоновщикНастроек);
    Исключение
    КонецПопытки;

    //ПолеДобавления = Новый ПолеКомпоновкиДанных("ПериодРегистратор");
    //Если НЕ ОтчетыСервер.КомпоновщикЕстьПолеВСтруктуре(ПолеДобавления, ВариантОтчета.Настройки.Структура) Тогда
    // ГруппировкаРегистратора = ОтчетыСервер.ДобавитьПолеВПоследнююГруппировку(ПолеДобавления, ВариантОтчета.Настройки.Структура);
    // Поля = Новый Массив;
    // Поля.Добавить("ПериодРегистратор");
    // ОтчетыСервер.КомпоновщикУстановитьОтборПоПолямГруппировки(ГруппировкаРегистратора, Поля);
    // //ОтчетыСервер.КомпоновщикУстановитьОтборПустыхГруппировок(КомпоновщикНастроек.Настройки.Структура, Поля);
    //КонецЕсли;

    //Для Каждого ТекДоступноеПолеПараметра Из Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы Цикл
    // ТипыПоля = ТекДоступноеПолеПараметра.Тип.Типы();
    // Если ТипыПоля.Количество()>0 И ТипыПоля[0] = Тип("СписокЗначений") Тогда
    // Если (НЕ ТекДоступноеПолеПараметра.ДоступныеЗначения = Неопределено) И ТекДоступноеПолеПараметра.ДоступныеЗначения.Количество()>0 Тогда
    //
    // ЗначениеПараметра = КомпоновщикПолучитьЗначениеПараметра(ТекДоступноеПолеПараметра.Параметр, Настройки);
    // ЭлементСписка = ТекДоступноеПолеПараметра.ДоступныеЗначения.НайтиПоЗначению(ЗначениеПараметра);
    // Если НЕ ЭлементСписка = Неопределено Тогда
    // ЗначениеПараметра = Настройки.ПараметрыДанных.Элементы.Найти(ТекДоступноеПолеПараметра.Параметр);
    // ЗначениеПараметра.Значение[0].Представление = ЭлементСписка.Представление;
    // КонецЕсли;
    // КонецЕсли;
    // КонецЕсли;
    //КонецЦикла;

    ТаблицаПолей = Новый ТаблицаЗначений;
    ТаблицаПолей.Колонки.Добавить("Поле");
    ТаблицаПолей.Колонки.Добавить("Заголовок");
    ТаблицаПолей.Колонки.Добавить("НомерПериода");
    ТаблицаПолей.Колонки.Добавить("ТипПериода");

    ДоступныеПоляГруппировок = КомпоновщикНастроек.Настройки.ДоступныеПоляГруппировок.Элементы;
    Для Каждого ТекНабор Из СхемаКомпоновкиДанных.НаборыДанных Цикл
    Для Каждого ТекПоле Из ТекНабор.Поля Цикл

    Если НЕ ТипЗнч(ТекПоле) = Тип("ПолеНабораДанныхСхемыКомпоновкиДанных") ИЛИ ДоступныеПоляГруппировок.Найти(ТекПоле.Поле) = Неопределено Тогда
    Продолжить;
    КонецЕсли;

    НоваяСтрока = ТаблицаПолей.Добавить();
    НоваяСтрока.Заголовок = ТекПоле.Заголовок;
    НоваяСтрока.Поле = Новый ПолеКомпоновкиДанных(ТекПоле.Поле);
    НоваяСтрока.НомерПериода = ТекПоле.Роль.НомерПериода;
    НоваяСтрока.ТипПериода = ТекПоле.Роль.ТипПериода;

    КонецЦикла;
    КонецЦикла;

    Отказ = ПроверитьКорректностьСтруктуры(КомпоновщикНастроек.Настройки.Структура, ТаблицаПолей);
    Если Отказ Тогда
    Возврат;
    КонецЕсли;

    ОткорректироватьНастройкиСКД(КомпоновщикНастроек.Настройки);

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(
    СхемаКомпоновкиДанных,
    КомпоновщикНастроек.Настройки,
    ДанныеРасшифровки
    );

    Попытка
    ОтчетОбъект.ПослеФормированияМакетаКомпоновки(МакетКомпоновки);
    Исключение
    КонецПопытки;

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, ИспользоватьВнешниеФункции);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.НачатьВывод();
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
    ПроцессорВывода.ЗакончитьВывод();

    Если ДокументРезультат.ФиксацияСлева>0 Тогда
    ДокументРезультат.ФиксацияСлева = 1;
    КонецЕсли;

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

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт

    ОтчетыСервер.ВывестиОтчет(ЭтотОбъект, СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка, , Истина);

    КонецПроцедуры
```
---
```1c
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ИспользоватьВнешниеФункции = Истина;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, ИспользоватьВнешниеФункции);
```
---
Спасибо большое. Получилось. Буду теперь знать об этом нюансе.
---
Отлично! Проблема решена, спасибо тебе!