Имя: Пароль:
1C
1С v8
РеквизитФормыВЗначение ошибка параметр 1
0 margo_irkutsk
 
19.04.19
09:49
Доброго времени суток всем.

Обращаюсь к экспортной процедуре, находящейся в модуле объекта, из модуля формы списка документов через метод РеквизитФормыВЗначение.
Программа ругается: {Документ.ЛГ_ЖдНакладная.Форма.ФормаСпискаЛогистика.Форма(297)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    ДокОбъект = РеквизитФормыВЗначение("Объект");
по причине:
Недопустимое значение параметра (параметр номер '1')

В чем может быть ошибка?

Вот текст процедуры обращения:
&НаСервере
Процедура СпецификацияЗаполнитьПриложенияСервер()
    
    Объект = Элементы.Ссылка;

    ДокОбъект = ("Объект");
    Объект. ЗаполнитьИРасценитьПоВнутреннимЦенам();
        
    ДокОбъект.ЗначениеВРеквизитФормы("Объект");
    Объект.Обработано = Истина;
    
КонецПроцедуры
1 Mankubus
 
19.04.19
09:52
(0) в тексте процедуры нет той строки на которой происходит ошибка
2 margo_irkutsk
 
19.04.19
09:55
криво скрпировала))
&НаСервере
Процедура СпецификацияЗаполнитьПриложенияСервер()
    
    Объект = Элементы.Ссылка;

    ДокОбъект = РеквизитФормыВЗначение("Объект");
    Объект. ЗаполнитьИРасценитьПоВнутреннимЦенам();
        
    ДокОбъект.ЗначениеВРеквизитФормы("Объект");
    Объект.Обработано = Истина;
    
КонецПроцедуры
3 hhhh
 
19.04.19
09:56
(0) посмотрите на форме, справа, где список реквизитов, есть там такой реквизит "Объект"?
4 hhhh
 
19.04.19
09:57
(2) тут у вас получается, что Объект это вообще не реквизит, а какие-то Элементы.Ссылка
5 margo_irkutsk
 
19.04.19
09:58
на форме списка документов нужно обработать выделенные документы через процедуру вызываемую из модуля объекта:
&НаКлиенте
Процедура ЗаполнитьПриложениями(Команда)
    
    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);
    Если ВыделенныеСтроки.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;

    ТекстВопроса = НСтр("ru='К выделенным в списке документам будут заполнены приложения. Продолжить?'");
    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);
    
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    
    ОчиститьСообщения();
    Объект = Элементы.Ссылка;
    Для каждого Объект из ВыделенныеСтроки Цикл
     Если  НЕ Объект.СпецификацияКатВ.Количество()= 0    Тогда
        ТекстОшибки = НСтр("ru = 'Заполнена спецификация кат.В (необходимо предварительно очистить!'");
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
        Возврат;
    КонецЕсли;
    СпецификацияЗаполнитьПриложенияСервер();    
    
    КонецЦикла;
    
КонецПроцедуры
6 НЕА123
 
19.04.19
10:00
(4) похоже на попытку "редактировать в списке"
7 НЕА123
 
19.04.19
10:02
(0)
что оно должно сделать?
8 margo_irkutsk
 
19.04.19
10:03
перебирать выделенные документы и в каждом заполнять табличную часть
9 Eg0rkas
 
19.04.19
10:07
покажите теперь код процедуры "ЗаполнитьИРасценитьПоВнутреннимЦенам()"
10 Darych
 
19.04.19
10:13
в (2) в коде беда
11 margo_irkutsk
 
19.04.19
11:15
немного подправила код, но ошибка осталась та же:
&НаКлиенте
Процедура ЗаполнитьПриложениями(Команда)
    
    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);
    Если ВыделенныеСтроки.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;

    ТекстВопроса = НСтр("ru='К выделенным в списке документам будут заполнены приложения. Продолжить?'");
    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);
    
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    
    ОчиститьСообщения();
    Для каждого Объект из ВыделенныеСтроки Цикл
     Если  НЕ Объект.СпецификацияКатВ.Количество()= 0    Тогда
        ТекстОшибки = НСтр("ru = 'Заполнена спецификация кат.В (необходимо предварительно очистить!'");
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
        Возврат;
    КонецЕсли;
    СпецификацияЗаполнитьПриложенияСервер();    
    
    КонецЦикла;
    
КонецПроцедуры


Процедура СпецификацияЗаполнитьПриложенияСервер()
    
    
    ДокОбъект = РеквизитФормыВЗначение("Объект",Тип("ДокументОбъект.ЛГ_ЖдНакладная"));
    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();
        
    ДокОбъект.ЗначениеВРеквизитФормы("Объект");
    ДокОбъект.Обработано = Истина;
    
КонецПроцедуры
12 margo_irkutsk
 
19.04.19
11:17
Пробовала через ДанныеФормыВЗначение, но ошибка та же.
13 Darych
 
19.04.19
11:18
объект - это что?
14 Darych
 
19.04.19
11:18
если данные формы - то беда
15 margo_irkutsk
 
19.04.19
11:19
объект-это документ
16 Mankubus
 
19.04.19
11:19
(11) >>Для каждого Объект из ВыделенныеСтроки Цикл
нельзя использовать слово "объект" в качестве переменных!
17 margo_irkutsk
 
19.04.19
11:29
Хорошо,изменила код, ошибка та же(. В параметрах метода также пробовала менять. Ошибка не уходит.

Наименование п

&НаКлиенте
Процедура ЗаполнитьПриложениями(Команда)
    
    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);
    Если ВыделенныеСтроки.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;

    ТекстВопроса = НСтр("ru='К выделенным в списке документам будут заполнены приложения. Продолжить?'");
    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);
    
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    
    ОчиститьСообщения();
    Для каждого Элемент из ВыделенныеСтроки Цикл
     Если  НЕ Элемент.СпецификацияКатВ.Количество()= 0    Тогда
        ТекстОшибки = НСтр("ru = 'Заполнена спецификация кат.В (необходимо предварительно очистить!'");
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
        Возврат;
    КонецЕсли;
    СпецификацияЗаполнитьПриложенияСервер();    
    
    КонецЦикла;
    
КонецПроцедуры


Процедура СпецификацияЗаполнитьПриложенияСервер()
    
    
    ДокОбъект = РеквизитФормыВЗначение("Объект",Тип("ДокументОбъект.ЛГ_ЖдНакладная"));
    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();
        
    ДокОбъект.ЗначениеВРеквизитФормы("Объект");
    ДокОбъект.Обработано = Истина;
    
КонецПроцедуры
18 Darych
 
19.04.19
11:32
она не читает ответы
19 hhhh
 
19.04.19
11:41
(17) ДокОбъект = РеквизитФормыВЗначение("Объект",Тип("ДокументОбъект.ЛГ_ЖдНакладная")); - это для формы документа


для формы списка так писать - это полный дебилизм.

поэтому пробуйте



Процедура СпецификацияЗаполнитьПриложенияСервер(Элемент)
    
    
    ДокОбъект = Элемент.Ссылка.ПолучитьОбъект();
    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();
        
    ДокОбъект.Обработано = Истина;
ДокОбъект.Записать();
    
КонецПроцедуры
20 margo_irkutsk
 
19.04.19
11:57
Ответы читаю.

Задача стоит так: в списке документов накладных пользователь выделяет несколько документов для групповой обработки. цель обработки проставить стоимость товаров в табличных частях выделенных документов. в процедуре Заполнить приложениями (команда) получаю список выделенных и в цикле забираю каждый. И для каждого выбранного документа вызываю процедуру заполнения (ЗаполнитьИРасценитьПоВнутреннимЦенам). Процедура заполнения цен товаров прописана в модуле объекта документа, поэтому обращаюсь через метод РеквизитФормыВЗначение.


Мои извинения, если чего-то не понимаю.
21 SSSSS_AAAAA
 
19.04.19
11:59
(20) И Реквизит какой формы вы пытаетесь загнать в значение? Формы списка?
Программист всегда исправляет последнюю ошибку.