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

Подскажите по этой ошибке.

Автор Бабайка, 25 мая 2018, 15:23

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

Бабайка

Процедура ОтчетПоПоступлениямМатериалов(ТабДок) Экспорт
   //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ОтчетПоПоступлениямМатериалов)
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   
     Если ПоВсем=Истина тогда

   Макет = ОтчетОбъект.ПолучитьМакет("ОтчетПоПоступлениямМатериалов");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   МатериалыОбороты.ДатаД КАК ДатаД,
   |   МатериалыОбороты.Поставщик КАК Поставщик,
   |   ПРЕДСТАВЛЕНИЕ(МатериалыОбороты.Поставщик),
   |   МатериалыОбороты.Материал,
   |   ПРЕДСТАВЛЕНИЕ(МатериалыОбороты.Материал),
   |   МатериалыОбороты.Цена,
   |   МатериалыОбороты.ЕдиницаИзмерения,
   |   ПРЕДСТАВЛЕНИЕ(МатериалыОбороты.ЕдиницаИзмерения),
   |   МатериалыОбороты.КоличествоОборот КАК КоличествоОборот,
   |   МатериалыОбороты.СуммаОборот КАК СуммаОборот
   |ИЗ
   |   РегистрНакопления.Материалы.Обороты КАК МатериалыОбороты
   |
   |УПОРЯДОЧИТЬ ПО
   |   ДатаД,
   |   Поставщик
   |ИТОГИ
   |   СУММА(КоличествоОборот),
   |   СУММА(СуммаОборот)
   |ПО
   |   ОБЩИЕ,
   |   ДатаД,
   |   Поставщик
   |АВТОУПОРЯДОЧИВАНИЕ";
   
   Если ПоВсем=Ложь тогда

   Макет = ОтчетОбъект.ПолучитьМакет("ОтчетПоПоступлениямМатериалов");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   МатериалыОбороты.ДатаД КАК ДатаД,
   |   МатериалыОбороты.Поставщик КАК Поставщик,
   |   ПРЕДСТАВЛЕНИЕ(МатериалыОбороты.Поставщик),
   |   МатериалыОбороты.Материал,
   |   ПРЕДСТАВЛЕНИЕ(МатериалыОбороты.Материал),
   |   МатериалыОбороты.Цена,
   |   МатериалыОбороты.ЕдиницаИзмерения,
   |   ПРЕДСТАВЛЕНИЕ(МатериалыОбороты.ЕдиницаИзмерения),
   |   МатериалыОбороты.КоличествоОборот КАК КоличествоОборот,
   |   МатериалыОбороты.СуммаОборот КАК СуммаОборот
   |ИЗ
   |   РегистрНакопления.Материалы.Обороты КАК МатериалыОбороты
   |ГДЕ
   |    МатериалыОбороты.Поставщик = &Поставщик
   |
   |УПОРЯДОЧИТЬ ПО
   |   ДатаД,
   |   Поставщик
   |ИТОГИ
   |   СУММА(КоличествоОборот),
   |   СУММА(СуммаОборот)
   |ПО
   |   ОБЩИЕ,
   |   ДатаД,
   |   Поставщик
   |АВТОУПОРЯДОЧИВАНИЕ";   
   КонецЕсли;

   Запрос.УстановитьПараметр("Поставщик", Поставщик);
   РезультатЗапроса = Запрос.Выполнить();
   

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
   ОбластьДатаД = Макет.ПолучитьОбласть("ДатаД");
   ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();
   
   ВыборкаОбщийИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   ВыборкаОбщийИтог.Следующий();      // Общий итог
   ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
   ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());

   ВыборкаДатаД = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   Пока ВыборкаДатаД.Следующий() Цикл
      ОбластьДатаД.Параметры.Заполнить(ВыборкаДатаД);
      ТабДок.Вывести(ОбластьДатаД, ВыборкаДатаД.Уровень());

      ВыборкаПоставщик = ВыборкаДатаД.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

      Пока ВыборкаПоставщик.Следующий() Цикл
         ОбластьПоставщик.Параметры.Заполнить(ВыборкаПоставщик);
         ТабДок.Вывести(ОбластьПоставщик, ВыборкаПоставщик.Уровень());

         ВыборкаДетальныеЗаписи = ВыборкаПоставщик.Выбрать();

         Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;
КонецЕсли;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвал);
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры

Выводит ошибку:

{Отчет.ОтчетПоПоступлениямМатериалов.Форма.ОтчетПоПоступлениямМатериалов.Форма(130)}: Ошибка при вызове метода контекста (Вывести)
   ТабДок.Вывести(ОбластьПодвал);
по причине:
Несоответствие типов (параметр номер '1')
{Отчет.ОтчетПоПоступлениямМатериалов.Форма.ОтчетПоПоступлениямМатериалов.Форма(130)}: Ошибка при вызове метода контекста (Вывести)
   ТабДок.Вывести(ОбластьПодвал);
по причине:
Несоответствие типов (параметр номер '1')

Понимаю, что где_то надо поставить 1, но не понятно где, так как всё вроде перепробовал, выводит, что не может определить переменные.

I need Help

pavl_vs

Цитата: Бабайка от 25 мая 2018, 15:23
{Отчет.ОтчетПоПоступлениямМатериалов.Форма.ОтчетПоПоступлениямМатериалов.Форма(130)}: Ошибка при вызове метода контекста (Вывести)
   ТабДок.Вывести(ОбластьПодвал);
по причине:
Несоответствие типов (параметр номер '1')

Понимаю, что где_то надо поставить 1, но не понятно где, так как всё вроде перепробовал, выводит, что не может определить переменные.

С чего бы это надо поставить? '1' - это номер параметра в методе, но не значение.

Пытаетесь вывести ОбластьПодвал, а где её заполнение, аналогично - ОбластьПодвалТаблицы? Что в них?
Приглядитесь лучше, что такое "Подвал", а возможно и "ПодвалТаблицы"; до последнего дело не дошло.

И хорошо бы посмотреть на макет!?

Бабайка

Вот сам макет, но даже Подвал пуст, он всё равно ведь должен выводить пустые значения в отчете, но он пишет ошибку:trhregerhg:

alexandr_ll

Строку
Макет = ОтчетОбъект.ПолучитьМакет("ОтчетПоПоступлениямМатериалов");
Надо поставить перед условием.
Вообще условие какое-то непонятное.

pavl_vs

Цитата: Бабайка от 25 мая 2018, 20:09
Вот сам макет, но даже Подвал пуст, он всё равно ведь должен выводить пустые значения в отчете, но он пишет ошибку:trhregerhg:

Не уверен, первый раз такое вижу.
Должен, не должен - а если все же закомментарить эти строки
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Вывести(ОбластьПодвалТаблицы);

то что получится?

Бабайка

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

pavl_vs

Бабайка, разберитесь все-таки с синтаксисом условий - у Вас неверно.
Например, д/б либо
Если ПоВсем=Истина Тогда
    //тело оператора
Иначе
    //тело оператора
КонецЕсли;


либо (если хотите акцентировать иное)

Если ПоВсем=Истина Тогда
    //тело оператора
ИначеЕсли ПоВсем=Ложь Тогда
    //тело оператора
КонецЕсли;


И еще, если ПоВсем = Ложь и Поставщик = Пусто, то получаете тривиальный результат 1-го рисунка.

Все 4-ре рисунка с закомментированными строками, или как?

Бабайка

Спасибо большое, я понял, что я натупил, и не правильно написал условие, я думал, что ошибка где то в циклах.::ooifh:

Теги:

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

Рейтинг@Mail.ru

Поиск