[РЕШЕНО] Вызов функции из модуля объекта в модуле формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем A|_E><Ey, 27 мар 2014.

  1. TopicStarter Overlay
    A|_E><Ey
    Offline

    A|_E><Ey Опытный в 1С

    Регистрация:
    13 дек 2012
    Сообщения:
    356
    Симпатии:
    2
    Баллы:
    29
    Доброго времени суток уважаемые форумчане! )

    Столкнулся с проблеммой, никак не соображу что не так, создал внешнюю обработку внешней печатной формы, в модуле объекта прописал следующий код:

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

    Непойму что не так?!
    Последнее редактирование: 27 мар 2014
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Потому что ВПФ работает немного по-другому.
    --- Объединение сообщений, 27 мар 2014 ---
    Обращаться нужно через ЭтотОбъект.ВашаФункция()
    A|_E><Ey нравится это.
  3. TopicStarter Overlay
    A|_E><Ey
    Offline

    A|_E><Ey Опытный в 1С

    Регистрация:
    13 дек 2012
    Сообщения:
    356
    Симпатии:
    2
    Баллы:
    29
    Дописал :
    Код:
    &НаКлиенте
    Процедура ПоказатьДокумент(Команда)
              
        Макет = Объект.ДокументРасчет.Печать();
        Макет.Показать();
      
    КонецПроцедуры
    
    Выскочила ошибка "Метод объекта не обнаружен "Печать" "

    Вложения:

  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    пардон, может не в тему. Но у вас там метод в модуле ОБЪЕКТА, а в реквизите явно ССЫЛКа... может в этом суть?
    A|_E><Ey нравится это.
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Стойте-стойте, вы откуда вызываете функцию печать ???? Из обработки или из документа ??????
    --- Объединение сообщений, 27 мар 2014 ---
    Функции печати по идее располагаются в менеджере объекта, так что его нужно сначала получить, а потом только обращаться к его процедурам и функциям.
    A|_E><Ey нравится это.
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну вот я примерно о том же... что метод не у ссылки, а у объекта есть
    A|_E><Ey нравится это.
  7. Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    to A|_E><Ey:
    1. Если вызываете Печать() из формы обработки, надо
    Код:
    &НаКлиенте
    Процедура ПоказатьДокумент(Команда)
    
    Макет = СформироватьМакетНаСервере();
    
    КонецПроцедуры
    
    &НаСервере
    Функция СформироватьМакетНаСервере()
    ОбъектОбработка = РеквизитФормыВЗначение();
    Макет = ОбъектОбработка.Печать();
    Возврат Макет;
    КонецФункции
    
    2. Если вызываете из формы документа, смотрите, как это реализовано в типовых конфигурациях.
    A|_E><Ey нравится это.
  8. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    1) Внешние печатные формы в управляемом приложении делаются по такой технологии.
    2) Если речь идет в целом о том, как из модуля управляемой формы вызвать процедуру модуля объекта, то делается это так: сначала из основного реквизита формы "Объект" (его тип "ДанныеФормыСтруктура") получаете "настоящий объект" (тип в данном случае "ОбработкаОбъект"); теперь можете обращаться к экспортным процедурам модуля этого объекта.
    Код:
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ОбработкаОбъект.Печать();
    A|_E><Ey нравится это.
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Смею предположить, что ТС требуется из своей обработки распечатывать другие документы.
    A|_E><Ey нравится это.
  10. TopicStarter Overlay
    A|_E><Ey
    Offline

    A|_E><Ey Опытный в 1С

    Регистрация:
    13 дек 2012
    Сообщения:
    356
    Симпатии:
    2
    Баллы:
    29
    Все огромное спасибо, вопрос решен как в сообщении #7 :)
  11. ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    &НаКлиенте
    Процедура Печать(Команда)

    Макет = ПолучитьМакетНаСервере();

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

    &НаСервере
    функция СформироватьМакетНаСервере()
    ЭтотОбъект1 = РеквизитФормыВЗначение("Объект");
    Макет = ЭтотОбъект1.Печать();
    Возврат Макет;
    КонецФункции
    Ругается на Печать();
    --- Объединение сообщений, 30 сен 2016 ---
    Недостаточно фактических параметров
    Макет = ОбъектОбработка.Печать();
    Последнее редактирование: 30 сен 2016

Поделиться этой страницей