Меню

Ошибка при загрузке скд

30.06.2022

При разработке своих отчетов, как правило, мы их делаем на последних версиях платформы. А некоторые наши клиенты скачивают отчеты и пытаются работать на старых платформах. И сталкиваются с тем, что их платформа их просто не открывает. Поэтому мы решили создать для себя (и поделиться с вами) небольшой базой знаний, что следует учитывать при разработке отчетов на СКД

Условное оформление на СКД

Очень интересный момент. Если сделать отчет на СКД и добавить условное оформление на платформе 8.3.19 и потом попытаться открыть этот отчет на платформе 8.3.12 или 8.3.10 то сталкиваемся с проблемой, что отчет не открывается и ругается на Ошибка преобразования данных XDTO. Причем если то же самое условное оформление сделать на платформе 8.3.10 с абсолютно такими же настройками, то он нормально работает на платформе 8.3.10. Но если этот отчет открыть в конфигураторе 8.3.19 и просто сохранить его, то он уже не откроется на старой платформе. Видимо, 8.3.19 что-то добавляет в отчет свое.

Какой выход: либо делать отчеты на старых платформах, либо задавать условное оформление программным путем. Мы пошли по второму пути

Использовать группировки запроса если возможно

Еще один кейс. Если в СКД поставить флаг “Использовать группировки запроса если возможно”, то он также не будет открываться на платформе 8.3.12. Отчет будет выдавать ошибку:

Ошибка загрузки документа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: dataSet Форма: Элемент Тип: {http://v8.1c.ru/8.1/data-composition-system/schema}DataSet
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/schema}useQueryGroupIfPossible Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType

Чтобы отчет открывался на старых платформах эта галочка должна быть установлена во всех наборах, во всех схемах компоновки данных этого отчета:

2022 10 25 16 30 32

2022 10 25 16 30 32

Платформа 8.2.19.130.

Хочу получить результат отчета в дерево значений. Выполняю код

[1c]

&НаСервере

Процедура СохранитьРезультатОтчетаСервер()

    ТекОтчет = РеквизитФормыВЗначение(«Отчет»);

    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ТекОтчет.СхемаКомпоновкиДанных, Отчет.КомпоновщикНастроек.Настройки,,, Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));

    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

    
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);

    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    
    ДЗ = Новый ДеревоЗначений;

    
    ПроцессорВывода.УстановитьОбъект(ДЗ);

    
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

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

[/1c]

Выходит ошибка

[1c]

{ОбщаяФорма.ФормаОтчетаУпрСКД.Форма(101)}: Ошибка при вызове метода контекста (Инициализировать)

    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);

по причине:

Ошибка компоновки данных

по причине:

Ошибка инициализации

по причине:

Ошибка в выражении

по причине:

Синтаксическая ошибка «СервисОтчетов.ПолучитьСсылочноеЗначение»

[/1c]

В схеме один из параметров отчета (справочник ссылка) определяется вызовом функции общего модуля «СервисОтчетов».

У модуля установлены флаги «Клиент», «Сервер», «Вызов сервера».

Если заменить выражение Параметра на предопределенное значение, то все работает.

Неужели при программном выполнении отчета нельзя использовать вызов функций общих модулей?

1C 8 Система компоновки данных (СКД): вывод вычисляемых полей при программном формировании отчета

Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»

Найденные решения:

1с 8 скд вывод вычисляемого поля с выражением при программном выводе

1с 8 ошибка при выводе вычисляемого поля с выражением отчета на СКД при программном выводе

Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):

Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>),
где <ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь

Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):

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

Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:

1с 8 скд ошибка вывода вычисляемого поля отчета на СКД использующего выражение с функцией при программном выводе

{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
        ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»

При этом функция по всем правилам была экспортной и к этому моменту проверок размещена в глобальном модуле. Поэтому название модуля было исключено из значения выражения вычисляемого поля системы компоновки данных и отчет вывелся.

1с 8 скд использование функции в выражении вычисляемого поля программно выводимого отчета

А для случая, если функция для расчета выражения вычисляемого поля скд, размещена не в глобальном модуле, то необходимо указать и имя самого модуля, содержащего используемую функцию (пример рис. 01).

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

22-05-2015

Журавлев А.С.
(www.azhur-c.ru)

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при загрузке скайпа
  • Ошибка при загрузке системы 0xc000000f