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

Несоответствие типов СхемаКомпоновкиДанных Третий день бьюсь, помогите, пожалуйста!

Автор corben1979, 09 июн 2016, 11:49

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

corben1979

Здравствуйте! Нужно изменить стандартный отчет Карточка количественно-суммового учета МЦ. Сохранил его во внешний, добился, чтобы запускалась форма. Но вот при формировании отчета постоянно ошибка. Конфигурация БГУ 2.0, платформа 8.3.8.1675. Управляемое приложение. Третий день бьюсь. Помогите пожалуйста!

Ошибка при вызове метода контекста (Выполнить)

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

по причине:
Несоответствие типов (параметр номер '1')

В данном методе первый параметр должен иметь тип СхемаКомпоновкиДанных, а получается строка

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

Процедура СформироватьОтчет(Знач ПараметрыОтчета, Результат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт
   
+ Code
   Результат.Очистить();
   
   Если ПараметрыОтчета.Свойство("Схема") тогда
       Если ЭтоАдресВременногоХранилища(ПараметрыОтчета.Схема) Тогда
          //ОтчетОбъект = РеквизитФормыВЗначение("Отчет");

          //СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");


           СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ПараметрыОтчета.Схема);
          //СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

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

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

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

       
      //Создадим и инициализируем процессор компоновки

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

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

       ПроцессорВывода.НачатьВывод();
       
       Массив = Новый Массив;
      //ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);       

       Пока Истина Цикл
                   
          //ОбработкаПрерыванияПользователя();

          //Получим следующий элемент результата компоновки

           ЭлементРезультата = ПроцессорКомпоновки.Следующий();
                   
           Если ЭлементРезультата = Неопределено Тогда
              //Следующий элемент не получен - заканчиваем цикл вывода

               Прервать;
           Иначе
               
              //Элемент получен - выведем его при помощи процессора вывода

               ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
               
               Если ЭлементРезультата.Макет = "Макет3" Тогда               
                   Массив.Добавить(Результат.ВысотаТаблицы);                               
               КонецЕсли;
               
           КонецЕсли;
       КонецЦикла;
      //вставка разрыва страниц

       ЭтоПервый = Истина;
       КонечнаяОбласть = Неопределено;
       ОбластьСтрок = Неопределено;
       Пока Истина Цикл
           Если ЭтоПервый Тогда
               НайденнаяОбласть = Результат.НайтиТекст("Карточку заполнил");
               ЭтоПервый = Ложь;
           Иначе
               НайденнаяОбласть = Результат.НайтиТекст("Карточку заполнил",КонечнаяОбласть);
           КонецЕсли;
           Если НайденнаяОбласть = Неопределено Тогда
               Прервать;
           КонецЕсли;
            КонечнаяОбласть = Результат.НайтиТекст("Дата",НайденнаяОбласть);
           Если КонечнаяОбласть<>Неопределено Тогда
               ОбластьСтрок = Результат.Область(Лев(КонечнаяОбласть.Имя,Найти(КонечнаяОбласть.Имя,"C")-1));
               ОбластьСтрок.КонецСтраницы = Истина;
           КонецЕсли;
       КонецЦикла;
      //убираем последний разрыв страницы

       Если НЕ ОбластьСтрок = Неопределено Тогда
           ОбластьСтрок.КонецСтраницы = Ложь;
       КонецЕсли;
       
       КолСтрок = Массив.Количество() - 1;
       Для инд = 0 По КолСтрок Цикл
           
           Ном = КолСтрок - инд;
           
           Результат.Область("R"+Формат(Массив[Ном],"ЧГ=0")).Видимость = Ложь;
               
       КонецЦикла;
               
  //Исключение

  //    ИнформацияОбОшибке = ИнформацияОбОшибке();

  //    Пока ИнформацияОбОшибке.Причина <> Неопределено Цикл

  //        ИнформацияОбОшибке = ИнформацияОбОшибке.Причина;

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

  //    ТекстСообщения = НСтр("ru = 'Отчет не сформирован!'") + Символы.ПС + ИнформацияОбОшибке.Описание;

  //    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);

  //    Отказ = Истина;

  //КонецПопытки;

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

Буду благодарен за любые идеи и подсказки.

Летящий в даль

Попробуйте запустить на отладку отчет старый, посмотрите, откуда он берет эту схему

corben1979

Цитата: Летящий в даль от 09 июн 2016, 13:00
Попробуйте запустить на отладку отчет старый, посмотрите, откуда он берет эту схему

Берется из макета. Я кстати, уже как только не пробовал получать макет. Ошибка одна и та же. Например, так:
СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Добавлено: 09 июн 2016, 16:35


СхемаКомпоновкиДанных11 =
ПолучитьИзВременногоХранилища(ПараметрыОтчета.Схема);

получить нужный объект удалось. Только дальше пошло что-то не так. В этой же строке ошибка, только уже синтаксическая.

ВнешнийОтчет.КарточкаКоличественноСуммовогоУчетаМЦ0504041.Форма.ФормаОтчета.Форма(552)}: Ошибка при вызове метода контекста (Выполнить)
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных11, НастройкиДляКомпоновкиМакета, ДанныеРасшифровкиОбъект);
по причине:
Ошибка компоновки макета
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка

Теги:

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

Рейтинг@Mail.ru

Поиск