Имя: Пароль:
1C
1С v8
УТ11 Вызов процедуры из модуля объекта внешней обработки
0 ildary
 
17.08.17
15:12
Уважаемые специалисты, подскажите пожалуйста, почему ранее работавший метод стал ругаться:

В модуле объекта внешней обработки есть процедура. Я ее вызываю из формы этой же обработки вот так:

    РеквизитФормыВЗначение( "Объект" ).СнятьРезервНаСервере( ДатаНачала, ДатаКонца, ВыполнитьФактически, СкладОтбор, ТабДокПоказ );

Если обработку открыть через Файл-Открыть, то все работает. Но после того, как я эту обработку добавлю в Доп. отчеты и запущу оттуда - выходит ошибка:

{ВнешняяОбработка.РезервыСнятие.Форма.Форма.Форма(4)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    РеквизитФормыВЗначение( "Объект" ).СнятьРезервНаСервере( ДатаНачала, ДатаКонца, ВыполнитьФактически, СкладОтбор, ТабДокПоказ );
по причине:
Недопустимое значение параметра (параметр номер '1')

Вот код СведенияОВнешнейОбработке() на всякий случай:

Функция   СведенияОВнешнейОбработке() Экспорт
    
    Наим = "Резервы снятие";
    
    тзКоманд = Новый ТаблицаЗначений;
    тзКоманд.Колонки.Добавить("Идентификатор");
    тзКоманд.Колонки.Добавить("Представление");
    тзКоманд.Колонки.Добавить("Модификатор");
    тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
    тзКоманд.Колонки.Добавить("Использование");
    
    строкаКоманды = тзКоманд.Добавить();
    строкаКоманды.Идентификатор = "РезервыСнятьВручную";
    строкаКоманды.Представление = "Резервы снять вручную";
    строкаКоманды.ПоказыватьОповещение = Истина;
    строкаКоманды.Использование = "ОткрытиеФормы";
    
    строкаКоманды = тзКоманд.Добавить();
    строкаКоманды.Идентификатор = "РезервыСнятьНочью";
    строкаКоманды.Представление = "Резервы снять ночью";
    строкаКоманды.ПоказыватьОповещение = Ложь;
    строкаКоманды.Использование = "ВызовСерверногоМетода";        
    
    РегистрационныеДанные = Новый Структура;
    РегистрационныеДанные.Вставить("Наименование", Наим );
    РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
    РегистрационныеДанные.Вставить("Версия", "1.0");
    
    РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка" );
    РегистрационныеДанные.Вставить( "Информация", Наим );
    
    РегистрационныеДанные.Вставить("Команды"   , тзКоманд);
    
    Возврат РегистрационныеДанные;
    
КонецФункции
1 azernot
 
17.08.17
15:41
Перенеси процедуру
СнятьРезервНаСервере
в форму, да и всё.

Зачем она нужна именно в модуле обработки?
2 ildary
 
17.08.17
15:53
(1) хочу вызывать эту процедуру по ночам через рег. задания.
3 DrShad
 
17.08.17
15:59
Посмотри отладчиком, там имя основного реквизита не такое скорее всего
4 ildary
 
17.08.17
16:00
(3) разобрался - эту форму я копировал через буфер из отчета - поэтому там была ссылка на Отчет, а мне нужна форма со ссылкой на Объект. Ручное создание формы с копированием команд, полей и элементов - решило проблему.
Основная теорема систематики: Новые системы плодят новые проблемы.