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

внешняя обработка (Печатная форма)

Автор Герман, 28 окт 2022, 09:50

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

Герман

Создал внешнюю обработку (печатную форму), добавил ее в коллекцию печатных значений двух документов "Транспортной накладной" и "Задание на перевозку". В "Транспортной накладной" все работает хорошо ошибки не выдает, все параметры выносятся на макет печатной формы при выборе на Команде "Печать". А в документе "Задание на перевозку" при выборе документа на Печать не открывается макет данной печатной формы а выдает ошибку "Поле объекта не обнаружено (Грузополучатель)". Уже все проверил не могу понять в чем дело. Ошибка выдает не на все параметры которые получение из запроса. Помогите кто знает в чем дело?
   
Макет = ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТранспортнаяНакладная.Дата КАК Дата,
        |    ТранспортнаяНакладная.Номер КАК Номер,
        |    ТранспортнаяНакладная.АвтомобильГосударственныйНомер КАК АвтомобильГосударственныйНомер,
        |    ТранспортнаяНакладная.Водитель КАК Водитель,
        |    ТранспортнаяНакладная.Грузополучатель КАК Грузополучатель,
        |    ТранспортнаяНакладная.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
        |    ТранспортнаяНакладная.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
        |    ТранспортнаяНакладная.УдостоверениеСерия КАК УдостоверениеСерия,
        |    ТранспортнаяНакладная.УдостоверениеНомер КАК УдостоверениеНомер,
        |    ТранспортнаяНакладная.АвтомобильМарка КАК АвтомобильМарка,
        |    ТранспортнаяНакладная.Грузополучатель.ИНН КАК ГрузополучательИНН,
        |    ТранспортнаяНакладная.ЗаданиеНаПеревозку.Объем КАК ЗаданиеНаПеревозкуОбъем,
        |    ТранспортнаяНакладная.МассаБрутто КАК МассаБрутто,
        |    ТранспортнаяНакладная.ЗаданиеНаПеревозку.ДатаВремяРейсаФактС КАК ЗаданиеНаПеревозкуДатаВремяРейсаФактС,
        |    ТранспортнаяНакладная.ЗаданиеНаПеревозку.ДатаВремяРейсаПланПо КАК ЗаданиеНаПеревозкуДатаВремяРейсаПланПо,
        |    ТранспортнаяНакладная.ЗаданиеНаПеревозку.ДатаВремяРейсаФактПо КАК ЗаданиеНаПеревозкуДатаВремяРейсаФактПо,
        |    ТранспортнаяНакладная.Перевозчик КАК Перевозчик,
        |    ТранспортнаяНакладная.ЗаданиеНаПеревозку.Вес КАК ЗаданиеНаПеревозкуВес,
        |    ТранспортнаяНакладная.Отпустил КАК Отпустил,
        |    ТранспортнаяНакладная.ОтпустилДолжность КАК ОтпустилДолжность,
        |    ТранспортнаяНакладная.АдресДоставки КАК АдресДоставки,
        |    ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
        |    ЗаказКлиента.Номер КАК НомерУПД,
        |    ЗаказКлиента.Дата КАК ДатаУПД,
        |    ТранспортнаяНакладная.Перевозчик.ИНН КАК ПеревозчикИНН,
        |   ТранспортнаяНакладная.ЗаданиеНаПеревозку.КоличествоГрузовыхМест КАК ЗаданиеНаПеревозкуКоличествоГрузовыхМест
           |ИЗ
        |    Документ.ТранспортнаяНакладная КАК ТранспортнаяНакладная,
        |    Документ.ЗаказКлиента КАК ЗаказКлиента
        |ГДЕ
        |    ТранспортнаяНакладная.Ссылка = &Ссылка";
   
    Запрос.УстановитьПараметр("ссылка", Ссылка);
   
    РезультатЗапроса = Запрос.Выполнить();
   
   
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
       
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьШапкаТаблицы.Параметры.Дата = Ссылка.Дата;
    ОбластьШапкаТаблицы.Параметры.Водитель = Ссылка.Водитель;
    ОбластьШапкаТаблицы.Параметры.АвтомобильГосударственныйНомер = Ссылка.АвтомобильГосударственныйНомер;
    ОбластьШапкаТаблицы.Параметры.Грузополучатель = Ссылка.Грузополучатель;
    ОбластьШапкаТаблицы.Параметры.АвтомобильГрузоподъемностьВТоннах = Ссылка.АвтомобильГрузоподъемностьВТоннах;
    ОбластьШапкаТаблицы.Параметры.АвтомобильВместимостьВКубическихМетрах = Ссылка.АвтомобильВместимостьВКубическихМетрах;
    ОбластьШапкаТаблицы.Параметры.УдостоверениеСерия = Ссылка.УдостоверениеСерия;
    ОбластьШапкаТаблицы.Параметры.УдостоверениеНомер = Ссылка.УдостоверениеНомер;
    ОбластьШапкаТаблицы.Параметры.АвтомобильМарка = Ссылка.АвтомобильМарка;
    ОбластьШапкаТаблицы.Параметры.Номер = Ссылка.Номер;
    ОбластьШапкаТаблицы.Параметры.ГрузополучательИНН = Ссылка.Грузополучатель.ИНН;
    ОбластьШапкаТаблицы.Параметры.ЗаданиеНаПеревозкуОбъем = Ссылка.ЗаданиеНаПеревозку.Объем;
    ОбластьШапкаТаблицы.Параметры.ЗаданиеНаПеревозкуДатаВремяРейсаФактС = Ссылка.ЗаданиеНаПеревозку.ДатаВремяРейсаФактС;
    ОбластьШапкаТаблицы.Параметры.Перевозчик = Ссылка.Перевозчик;
    ОбластьШапкаТаблицы.Параметры.ЗаданиеНаПеревозкуВес = Ссылка.ЗаданиеНаПеревозку.Вес;
    ОбластьШапкаТаблицы.Параметры.АдресДоставки = Ссылка.АдресДоставки;
    ОбластьШапкаТаблицы.Параметры.ПеревозчикИНН = Ссылка.Перевозчик.ИНН;
    ОбластьШапкаТаблицы.Параметры.ЗаданиеНаПеревозкуКоличествоГрузовыхМест = Ссылка.ЗаданиеНаПеревозку.КоличествоГрузовыхМест;
       

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

   
     
   
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьПодвалТаблицы.Параметры.МассаБрутто = Ссылка.МассаБрутто;
    ОбластьПодвалТаблицы.Параметры.ЗаданиеНаПеревозкуДатаВремяРейсаФактС = Ссылка.ЗаданиеНаПеревозку.ДатаВремяРейсаФактС;
    ОбластьПодвалТаблицы.Параметры.ЗаданиеНаПеревозкуДатаВремяРейсаПланПо = Ссылка.ЗаданиеНаПеревозку.ДатаВремяРейсаПланПо;
    ОбластьПодвалТаблицы.Параметры.ЗаданиеНаПеревозкуДатаВремяРейсаФактПо = Ссылка.ЗаданиеНаПеревозку.ДатаВремяРейсаФактПо;
    ОбластьПодвалТаблицы.Параметры.Водитель = Ссылка.Водитель;
    ОбластьПодвалТаблицы.Параметры.АдресДоставки = Ссылка.АдресДоставки;
   
   

    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ДетальныхЗаписей");
    ОбластьДетальныхЗаписей.Параметры.Дата = Ссылка.Дата;
    ОбластьДетальныхЗаписей.Параметры.Грузополучатель = Ссылка.Грузополучатель;
    ОбластьДетальныхЗаписей.Параметры.Отпустил = Ссылка.Отпустил;
    ОбластьДетальныхЗаписей.Параметры.ОтпустилДолжность = Ссылка.ОтпустилДолжность;
    ОбластьДетальныхЗаписей.Параметры.АдресДоставки = Ссылка.АдресДоставки;
    ОбластьДетальныхЗаписей.Параметры.ПеревозчикИНН = Ссылка.Перевозчик.ИНН;
    ОбластьДетальныхЗаписей.Параметры.Перевозчик = Ссылка.Перевозчик;
   


   
   
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
   
   
   
   
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
     ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьДетальныхЗаписей);


LexaK

Герман, в 1С есть возможность выполнения кода под отладчиком и еще остановка по ошибке,
воспользуйтесь ими, сразу найдете на какой (и где) параметр возникает ошибка.
если помогло нажмите: Спасибо!

antoneus

Скорее всего, в ОбластьДетальныхЗаписей нет параметра Грузополучатель.
Что за ужас вообще творится в коде? Выполняете запрос, потом заполняете параметры шапки из переменной Ссылка (это еще стопицот запросов к базе), потом еще раз заполняете параметры шапки - уже из выборки, а потом еще раз, для верности, заполняете их же из той же выборки.
В запросе вы выбираете реквизиты переданной в параметре накладной и всех заказов клиента, так что цикл ВыборкаШапкаТаблицы.Следующий() будет заполнять параметры шапки столько раз, сколько в базе заказов клиента (а в вашем случае - дважды).
Ну то есть примерно в самом первом приближении код должен выглядеть так

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

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

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

Рейтинг@Mail.ru

Поиск