Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 17:29

Переход на 1с 8.3 без режима совместимости с 8.2

Автор Alexg45, 26 ноя 2015, 10:10

0 Пользователей и 1 гость просматривают эту тему.

Alexg45

Всем здравствуйте!
Проблема такая. Убрали галку с режимом совместимости с 8.2. Переименовали все свойства, все ошибки исправили. Стали тестировать отчёт, 2 вкладки работают, одна нет. Получаю ошибку:

Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{Отчет.Название.МодульОбъекта(1343)}: Ошибка при вызове метода контекста (Вывести)

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Ожидается ключевое слово "Конец"

Привожу код предшествующий методу Вывести():

СхемаКомпоновкиДанных = ПолучитьМакет("СКДСверкаПериод");
      КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
      КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
      ТЗ = ПолучитьТаблицуОстатков();
      Если ТЗ.Количество()<=0 Тогда
         Сообщить("Недостаточно данных");
         РезультатДок = ЭтотОбъект.ПолучитьФорму().ЭлементыФормы.РезультатСверка;
         РезультатДок.Очистить();
         Возврат;
      КонецЕсли;
      ВнешниеНаборыДанных = Новый Структура;
      ВнешниеНаборыДанных.Вставить("ТЗ",ТЗ);

//Помещаем в переменную данные о расшифровке данных
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

   //Формируем макет, с помощью компоновщика макета
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

   //Передаем в макет компоновки схему, настройки и данные расшифровки
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
                                           Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки,истина);
РезультатДок = ЭтотОбъект.ПолучитьФорму().ЭлементыФормы.РезультатСверка;
РезультатДок.Очистить();
   //Выводим результат в табличный документ
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(РезультатДок);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   РезультатДок.ПоказатьУровеньГруппировокСтрок(0);


Никак не пойму в чём может быть проблема. Проверял отладчиком, запрос выполняется, таблица ТЗ заполняется данными, непустая. Всё успешно отрабатывает ровно до строки: ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); На ней вылезает ошибка. Данный отчёт работает на реальной базе нормально. Его не меняли.

Vladimir_Sh

Alexg45, добрый день! Немного глупых вопросов:
1. В данной строке РезультатДок какой получает тип данных?
РезультатДок = ЭтотОбъект.ПолучитьФорму().ЭлементыФормы.РезультатСверка;
2. Это вся процедура или до строки с получением макета есть еще что-то?

P.S. Пожалуйста заключайте код в тэг "code". Так намного удобнее читать.
Если я Вам помог, нажми - Спасибо!

vitasw

Похоже, что в СКД есть поле или на закладке "Вычисляемые поля" или на закладке "Параметры" и в выражении этого поля скорее всего есть инструкция "Выбор", где не хватает завершающего оператора "Конец".

Alexg45

РезультатДок получает тип данных ПолеТабличногоДокумента.
До этого код, конечно, есть. Там 2 больших запроса, на основе которых получается данные для таблицы ТЗ.


Vladimir_Sh

Цитата: Alexg45 от 26 ноя 2015, 11:05
РезультатДок получает тип данных ПолеТабличногоДокумента.
До этого код, конечно, есть. Там 2 больших запроса, на основе которых получается данные для таблицы ТЗ.
Как вариант:
Попробуйте все же создать именно ТабличныйДокумент и после компоновки присвоить результат в ПолеТабличногоДокумента.
Если я Вам помог, нажми - Спасибо!

Alexg45

В СКД всё проверяли, там нет выражений. Ни на вкладке Вычисляемые поля, ни Параметры, ни Ресурсы.
Добавлено: 26 ноя 2015, 11:35


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


Выдаёт точно такую же ошибку по методу Вывести.

vitasw


Alexg45


vitasw

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

Настройки - это что?

Alexg45

Получилось вывести хоть какую-то информацию. Оказалось дело в группировке. Если отключить одну, отчёт выводится. Получается, что либо ошибка в самом СКД, так как этот же отчёт неплохо работает без изменений на старой базе и к тому же, обычно в тексте ошибки выводится само выражение, которое привело к ошибке. Либо разработчики что-то поменяли в СКД.
Добавлено: 26 ноя 2015, 14:12


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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск