Имя: Пароль:
1C
1С v8
Передача параметров во внешний отчет через ПостроительОтчета
0 SprayTM
 
15.10.19
07:18
Есть два внешних отчета. В ОбработкеРасшифровки прописан код, в котором должен открываться другой внешний отчет с некоторыми параметрами из первого(Номенклатура и ТипЦен, которые передаются в отбор на втором отчете). Передавать параметры нужно через ПостроительОтчета. Но с ним возникают трудности - выдает ошибку о нехватке фактических параметров. Куда решать, а то уже второй день с этим борюсь.
8.3, УТ 2.1

ИначеЕсли ВнешняяРасшифровкаАнализЦенКонтрагентов Тогда
    
    Если НЕ Расшифровка.Свойство("Номенклатура") Тогда
        Возврат;
    КонецЕсли;

    ВнешнийОтчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Анализ цен");
    
    Если ВнешнийОтчет.Пустая() Тогда                    
        Предупреждение("В справочнике ""Внешние отчеты"" не найден отчет с наименованием ""Анализ цен""");            
    Иначе
        ДвоичныеДанные  = ВнешнийОтчет.ХранилищеВнешнейОбработки.Получить();                            
        ИмяФайла         = ПолучитьИмяВременногоФайла("epf");
        ДвоичныеДанные.Записать(ИмяФайла);
        
        ОтчетАнализЦенКонтрагентов               = ВнешниеОтчеты.Создать(ИмяФайла, Ложь);
        ОтчетАнализЦенКонтрагентов.ДатаОтчета = КонецДня(ТекущаяДата());
        
        Форма = ОтчетАнализЦенКонтрагентов.ПолучитьФорму();
                        
        Если КонецПериода <> Неопределено Тогда
            Если ТипЗнч(КонецПериода.Значение)  = Тип("СтандартнаяДатаНачала") Тогда
                КонецПериода.Значение.Дата        = КонецДня(ТекущаяДата());
                КонецПериода.Использование         = Истина;
            КонецЕсли;
        КонецЕсли;

        ОтчетАнализЦенКонтрагентов.ПостроительОтчета.Параметры.Вставить("Номенклатура", Расшифровка.Значение("Номенклатура"));
        ОтчетАнализЦенКонтрагентов.ПостроительОтчета.Параметры.Вставить("ТипЦен", "Аптечная");

        АнализЦенКонтрагентовДокументРезультат = Форма.ЭлементыФормы.Найти("ДокументРезультат");
        Форма.СформироватьОтчет(АнализЦенКонтрагентовДокументРезультат);
        Форма.Открыть();
        
        УдалитьФайлы(ИмяФайла);
        Возврат;
    КонецЕсли;            
    
КонецЕсли;
1 ДенисЧ
 
15.10.19
07:22
500 рублей и я не стану угадывать строку, в которой возникает ошибка!
2 SprayTM
 
15.10.19
07:24
(1) неужто весь геморрой в одной строке кроется?
3 ДенисЧ
 
15.10.19
07:26
(2) Ну, я же не знаю, сколько ошибок у тебя в ДНК, явно больше одной.
Поскольку ты даже не сообразил, что если 1с даёт ошибку, то она же и показывает строку, в которой эта ошибка возникает.
4 SprayTM
 
15.10.19
07:29
(3) ошибку она выдает здесь
Форма.СформироватьОтчет(АнализЦенКонтрагентовДокументРезультат);
5 Irbis
 
15.10.19
07:32
(4) А отладчик как всегда спёрли, и по обычаю вкупе с СП.
6 SprayTM
 
15.10.19
07:35
(5)СП обшарил по построителю, ничего не нашёл нужного.
Отладчик в параметры построителя заносил пустое значение в номенклатуру и "Аптечная" в ТипЦен
7 Kol Pecivanovich
 
15.10.19
07:36
(4)
посмотрите в форме процедуру СформироватьОтчет, сколько там параметров стоит в скобках, столько же и при вызове нужно передавать
8 Irbis
 
15.10.19
07:39
(6) Построитель вообще пока не при делах. Да и требовать от формы выполнения отчета... скорее это должен быть метод объекта.
9 SprayTM
 
15.10.19
07:46
(7) Процедура СформироватьОтчет(ДокументРезультат, ПоказыватьЗаголовок, ТолькоЗаголовок = Ложь) Экспорт
вы про эту процедуру?
(8) СформироватьОтчет - это экспортная процедура, вызываемая из АнализЦен
10 Kol Pecivanovich
 
15.10.19
07:47
(9) да
11 Irbis
 
15.10.19
08:08
(9) Экспортная процедура чего? Отчет или 153 его формы. Вызов экспортной процедуры объекта можно вообще без формы делать.
12 SprayTM
 
15.10.19
08:23
(11) Дело в том, что в первом отчете есть такая же экспортная процедура СформироватьОтчет, и если делать не через форму, то он просто копирует всю таблицу во второй отчет
13 ДенисЧ
 
15.10.19
08:45
ОтчетАнализЦенКонтрагентов.СформироватьОтчет(...)
14 SprayTM
 
15.10.19
09:06
(13) Благодарю
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.