8.х Передача параметра в функции ФоновыеЗадания.Выполнить(...)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем shds, 24 апр 2014.

  1. TopicStarter Overlay
    shds
    Offline

    shds

    Регистрация:
    13 ноя 2013
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    платформа 8.3 (8.3.4.389) УФ.
    не передается параметр в функцию запускаемую через ФоновыеЗадания.Выполнить

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

    если запускать не в фоне, все работает.
    Код:
    &НаСервере
    Процедура ВыполнитьКомандуНаСервере()
       МойОбщийМодуль.ВыполнитьИзФормыВнОбработки(ЭтаФорма);
    КонецПроцедуры
    

    т.е. тип "УправляемаяФорма" невозможно передать?
    пробовал и параметр типа "ВнешняяОбработкаОбъект.***" тоже не работает...


    кстати, в БП КОРП (3.0.31.13) похожим образом реализовано, но не работает(!!) по той же причине.
    общий модуль ДополнительныеОтчетыИОбработки строка 370.
    Код:
    Функция ВыполнитьКомандуИзФормыВнешнегоОбъекта(ИдентификаторКоманды, ПараметрыКоманды, Форма) Экспорт
       ВнешнийОбъект = Форма.РеквизитФормыВЗначение("Объект");
       РезультатВыполнения = ВыполнитьКомандуВнешнегоОбъекта(ВнешнийОбъект, ИдентификаторКоманды, ПараметрыКоманды, Неопределено);
       Возврат РезультатВыполнения;
    КонецФункции
    
  2. d_control
    Offline

    d_control Опытный в 1С

    Регистрация:
    21 дек 2011
    Сообщения:
    511
    Симпатии:
    0
    Баллы:
    26
    Попробуй передать какой-нибудь понятный тип данных (Булево, Строка).
    Так хоть узнаешь передаются параметры в метод или нет.
  3. TopicStarter Overlay
    shds
    Offline

    shds

    Регистрация:
    13 ноя 2013
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    передаются.
    кстати, передавая тип "справочникссылка" он передается, а передавая "справочникобъект," он приводится к типу справочникссылка.
    в общем, я думаю, это корявость платформы какая то., т.к. в справке нет никаких ограничений на передаваемые типы.

    цель была запустить в фоне процедуру внешней обработки находящуюся в модуле объекта. а туда достучаться можно только получив объект обработки (например через РеквизитФормыВЗначение("Объект")),
    Последнее редактирование: 28 апр 2014

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