1с ошибка при вызове метода контекста реквизитформывзначение

   margo_irkutsk

19.04.19 — 09:49

Доброго времени суток всем.

Обращаюсь к экспортной процедуре, находящейся в модуле объекта, из модуля формы списка документов через метод РеквизитФормыВЗначение.

Программа ругается: {Документ.ЛГ_ЖдНакладная.Форма.ФормаСпискаЛогистика.Форма(297)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)

    ДокОбъект = РеквизитФормыВЗначение(«Объект»);

по причине:

Недопустимое значение параметра (параметр номер ‘1’)

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

Вот текст процедуры обращения:

&НаСервере

Процедура СпецификацияЗаполнитьПриложенияСервер()

    
    Объект = Элементы.Ссылка;

    ДокОбъект = («Объект»);

    Объект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        
    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    Объект.Обработано = Истина;

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

   Mankubus

1 — 19.04.19 — 09:52

(0) в тексте процедуры нет той строки на которой происходит ошибка

   margo_irkutsk

2 — 19.04.19 — 09:55

криво скрпировала))

&НаСервере

Процедура СпецификацияЗаполнитьПриложенияСервер()

    
    Объект = Элементы.Ссылка;

    ДокОбъект = РеквизитФормыВЗначение(«Объект»);

    Объект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        
    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    Объект.Обработано = Истина;

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

   hhhh

3 — 19.04.19 — 09:56

(0) посмотрите на форме, справа, где список реквизитов, есть там такой реквизит «Объект»?

   hhhh

4 — 19.04.19 — 09:57

(2) тут у вас получается, что Объект это вообще не реквизит, а какие-то Элементы.Ссылка

   margo_irkutsk

5 — 19.04.19 — 09:58

на форме списка документов нужно обработать выделенные документы через процедуру вызываемую из модуля объекта:

&НаКлиенте

Процедура ЗаполнитьПриложениями(Команда)

    
    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);

    Если ВыделенныеСтроки.Количество() = 0 Тогда

        Возврат;

    КонецЕсли;

    ТекстВопроса = НСтр(«ru=’К выделенным в списке документам будут заполнены приложения. Продолжить?'»);

    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);

    
    Если Ответ = КодВозвратаДиалога.Нет Тогда

        Возврат;

    КонецЕсли;

    
    ОчиститьСообщения();

    Объект = Элементы.Ссылка;

    Для каждого Объект из ВыделенныеСтроки Цикл

     Если  НЕ Объект.СпецификацияКатВ.Количество()= 0    Тогда

        ТекстОшибки = НСтр(«ru = ‘Заполнена спецификация кат.В (необходимо предварительно очистить!'»);

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);

        Возврат;

    КонецЕсли;

    СпецификацияЗаполнитьПриложенияСервер();    

    
    КонецЦикла;

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

   НЕА123

6 — 19.04.19 — 10:00

(4) похоже на попытку «редактировать в списке»

   НЕА123

7 — 19.04.19 — 10:02

(0)

что оно должно сделать?

   margo_irkutsk

8 — 19.04.19 — 10:03

перебирать выделенные документы и в каждом заполнять табличную часть

   Eg0rkas

9 — 19.04.19 — 10:07

покажите теперь код процедуры «ЗаполнитьИРасценитьПоВнутреннимЦенам()»

   Darych

10 — 19.04.19 — 10:13

в (2) в коде беда

   margo_irkutsk

11 — 19.04.19 — 11:15

немного подправила код, но ошибка осталась та же:

&НаКлиенте

Процедура ЗаполнитьПриложениями(Команда)

    
    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);

    Если ВыделенныеСтроки.Количество() = 0 Тогда

        Возврат;

    КонецЕсли;

    ТекстВопроса = НСтр(«ru=’К выделенным в списке документам будут заполнены приложения. Продолжить?'»);

    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);

    
    Если Ответ = КодВозвратаДиалога.Нет Тогда

        Возврат;

    КонецЕсли;

    
    ОчиститьСообщения();

    Для каждого Объект из ВыделенныеСтроки Цикл

     Если  НЕ Объект.СпецификацияКатВ.Количество()= 0    Тогда

        ТекстОшибки = НСтр(«ru = ‘Заполнена спецификация кат.В (необходимо предварительно очистить!'»);

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);

        Возврат;

    КонецЕсли;

    СпецификацияЗаполнитьПриложенияСервер();    

    
    КонецЦикла;

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

Процедура СпецификацияЗаполнитьПриложенияСервер()

    
    
    ДокОбъект = РеквизитФормыВЗначение(«Объект»,Тип(«ДокументОбъект.ЛГ_ЖдНакладная»));

    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        
    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    ДокОбъект.Обработано = Истина;

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

   margo_irkutsk

12 — 19.04.19 — 11:17

Пробовала через ДанныеФормыВЗначение, но ошибка та же.

   Darych

13 — 19.04.19 — 11:18

объект — это что?

   Darych

14 — 19.04.19 — 11:18

если данные формы — то беда

   margo_irkutsk

15 — 19.04.19 — 11:19

объект-это документ

   Mankubus

16 — 19.04.19 — 11:19

(11) >>Для каждого Объект из ВыделенныеСтроки Цикл

нельзя использовать слово «объект» в качестве переменных!

   margo_irkutsk

17 — 19.04.19 — 11:29

Хорошо,изменила код, ошибка та же(. В параметрах метода также пробовала менять. Ошибка не уходит.

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

&НаКлиенте

Процедура ЗаполнитьПриложениями(Команда)

    
    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);

    Если ВыделенныеСтроки.Количество() = 0 Тогда

        Возврат;

    КонецЕсли;

    ТекстВопроса = НСтр(«ru=’К выделенным в списке документам будут заполнены приложения. Продолжить?'»);

    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);

    
    Если Ответ = КодВозвратаДиалога.Нет Тогда

        Возврат;

    КонецЕсли;

    
    ОчиститьСообщения();

    Для каждого Элемент из ВыделенныеСтроки Цикл

     Если  НЕ Элемент.СпецификацияКатВ.Количество()= 0    Тогда

        ТекстОшибки = НСтр(«ru = ‘Заполнена спецификация кат.В (необходимо предварительно очистить!'»);

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);

        Возврат;

    КонецЕсли;

    СпецификацияЗаполнитьПриложенияСервер();    

    
    КонецЦикла;

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

Процедура СпецификацияЗаполнитьПриложенияСервер()

    
    
    ДокОбъект = РеквизитФормыВЗначение(«Объект»,Тип(«ДокументОбъект.ЛГ_ЖдНакладная»));

    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        
    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    ДокОбъект.Обработано = Истина;

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

   Darych

18 — 19.04.19 — 11:32

она не читает ответы

   hhhh

19 — 19.04.19 — 11:41

(17) ДокОбъект = РеквизитФормыВЗначение(«Объект»,Тип(«ДокументОбъект.ЛГ_ЖдНакладная»)); — это для формы документа

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

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

Процедура СпецификацияЗаполнитьПриложенияСервер(Элемент)

    
    
    ДокОбъект = Элемент.Ссылка.ПолучитьОбъект();

    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        
    ДокОбъект.Обработано = Истина;

ДокОбъект.Записать();

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

   margo_irkutsk

20 — 19.04.19 — 11:57

Ответы читаю.

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

Мои извинения, если чего-то не понимаю.

  

SSSSS_AAAAA

21 — 19.04.19 — 11:59

(20) И Реквизит какой формы вы пытаетесь загнать в значение? Формы списка?

Я сделал форму, добавил реквизит пользователей из справочника пользователей и создал поле выбора с типом справочника пользователей. Мне нужно получить значение этого реквизита в модуле формы, но в строке, где я его получаю, выходит ошибка:

Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(201)}:РеквизитПользователя = РеквизитФормыВЗначение("Пользователь"); //
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(230)}:ТабДокумент                          = СформироватьМакетНаСервере();

по причине:
Недопустимое значение параметра (параметр номер '1')

Как это можно исправить?

Вот сам код:

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

&НаКлиенте
Процедура СформироватьМакет(Команда)
    
    ТабДокумент                         = СформироватьМакетНаСервере();    
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "Макет";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДокумент;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
    
    ОбластиОбъектов = Новый СписокЗначений;
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
    
КонецПроцедуры

Вот форма со свойствами поля:

И свойства реквизита:

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2823)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)     Объект  = РеквизитФормыВЗначение(«Обработка»); по причине: Недопустимое значение параметра (параметр номер ‘1’) Вот функция &НаСервере КонецФункции Почему может валить ошибку?

есть реквизит формы «Обработка»?

ОбъектОбработки = РеквизитФормыВЗначение(«Объект»);

Преобразовывать в значение существующий реквизит

если я в обработку добавлю макет, как его получить?

А если добавляю кнопку, то отображается окно с «» и больше ничего, кто нибудь сталкивался?

из серверной процедуры(функции) модуля формы:

А зачем вообще его в форме получать? Я бы заполнил в модуле объекта и вернул уже готовый табличный документ

На РМК Кнопку  нужно прикрутить, а тут такие подвохи блин, второй час долблюсь

я уже и другую кнопку отредактировал,  теперь вот эта фигня выскакивает

Дык, чтобы вызвать метод из модуля объекта — его (объект) все-равно получить придется ;-)

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2823)}: Ошибка при установке значения атрибута контекста (Объект)     Объект  = РеквизитФормыВЗначение(«Объект»); по причине: Нельзя изменять поле, содержащее объект данных формы Нельзя изменять поле, содержащее объект данных формы

Объект в реквизиты добавить?

Таки да, но удобнее заполнять в модуле, а не в форме — если что можно будет вызвать без открытия формы … да и вообще в форме должен быть только код, связанный с работой самой формы

Что не понятно в функции РеквизитФормыВЗначение?

Посмотри внимательно на форму. Там уже есть реквизит «Объект». Только не верь глазам своим, он не фига не объект :-). Это данные формы (можешь пока представлять себе как структуру с полями). А чтобы вызвать методы этого объекта — его надо преобразовать в»настоящий» при помощи РеквизитФормыВЗначение

+ Объект = … — так нельзя!!!

Неправильно:  Объект  = …. Правильно ОбъектНастоящий = …. :-)

+ в том случае, если у тебя реквизит формы назван по умолчанию, т.е. «Объект» (назван платформой)

Что тут не так по мимо того что нет значения для макета

Реквизит на форме нужно разместить?

Что отладчик говорит про полученный объект? Тип значения у него какой?

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2823)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)     Объект  = РеквизитФормыВЗначение(«Отчет»); по причине: Недопустимое значение параметра (параметр номер ‘1’) Недопустимое значение параметра (параметр номер ‘1’)

ТС, ответь на вопрос: как называется основной реквизит твоей обработки?

так у тебя есть реквизит формы с именем «Отчет»?

А не проще к самому отчету обратится сразу Отчеты.ВидыОплатККМ.ПолучитьМакет?

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2875)}: Ошибка при вызове метода контекста (Показать)     ТабДок.Показать; по причине: Метод недоступен на сервере Метод недоступен на сервере а тут то что не так?

Метод показать не работает на сервере?

А кому и на чем показывать ее на сервере? Предлагаю немного углубиться в понимание концепции управляемых форм

а как тогда его на клиенте показать? если он в другой функции?

Параметр передай, заполни его на сервере, а когда вернешься на клиент — покажи. Я повторюсь

ну серверу он хочет показать…сервер что, не живой, ему что, прекрасное увидеть не хочется… а то гоняют и в хвост и в гриву, а ничего и не показывают, вот потом и появляются ошибки формата потока)

Переменная не определена ТабДок)))

Спасибо за помощи идиоту!!

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Я сделал форму, добавил реквизит пользователей из справочника пользователей и создал поле выбора с типом справочника пользователей. Мне нужно получить значение этого реквизита в модуле формы, но в строке, где я его получаю, выходит ошибка:

Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(201)}:РеквизитПользователя = РеквизитФормыВЗначение("Пользователь"); //
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(230)}:ТабДокумент                          = СформироватьМакетНаСервере();

по причине:
Недопустимое значение параметра (параметр номер '1')

Как это можно исправить?

Вот сам код:

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

&НаКлиенте
Процедура СформироватьМакет(Команда)
    
    ТабДокумент                         = СформироватьМакетНаСервере();    
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "Макет";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДокумент;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
    
    ОбластиОбъектов = Новый СписокЗначений;
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
    
КонецПроцедуры

Вот форма со свойствами поля:

И свойства реквизита:

  

margo_irkutsk

19.04.19 — 09:49

Доброго времени суток всем.

Обращаюсь к экспортной процедуре, находящейся в модуле объекта, из модуля формы списка документов через метод РеквизитФормыВЗначение.

Программа ругается: {Документ.ЛГ_ЖдНакладная.Форма.ФормаСпискаЛогистика.Форма(297)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)

    ДокОбъект = РеквизитФормыВЗначение(«Объект»);

по причине:

Недопустимое значение параметра (параметр номер ‘1’)

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

Вот текст процедуры обращения:

&НаСервере

Процедура СпецификацияЗаполнитьПриложенияСервер()

    
    Объект = Элементы.Ссылка;

    ДокОбъект = («Объект»);

    Объект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        

    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    Объект.Обработано = Истина;

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

  

Mankubus

1 — 19.04.19 — 09:52

(0) в тексте процедуры нет той строки на которой происходит ошибка

  

margo_irkutsk

2 — 19.04.19 — 09:55

криво скрпировала))

&НаСервере

Процедура СпецификацияЗаполнитьПриложенияСервер()

    
    Объект = Элементы.Ссылка;

    ДокОбъект = РеквизитФормыВЗначение(«Объект»);

    Объект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        

    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    Объект.Обработано = Истина;

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

  

hhhh

3 — 19.04.19 — 09:56

(0) посмотрите на форме, справа, где список реквизитов, есть там такой реквизит «Объект»?

  

hhhh

4 — 19.04.19 — 09:57

(2) тут у вас получается, что Объект это вообще не реквизит, а какие-то Элементы.Ссылка

  

margo_irkutsk

5 — 19.04.19 — 09:58

на форме списка документов нужно обработать выделенные документы через процедуру вызываемую из модуля объекта:

&НаКлиенте

Процедура ЗаполнитьПриложениями(Команда)

    

    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);

    Если ВыделенныеСтроки.Количество() = 0 Тогда

        Возврат;

    КонецЕсли;

    ТекстВопроса = НСтр(«ru=’К выделенным в списке документам будут заполнены приложения. Продолжить?’»);

    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);

    

    Если Ответ = КодВозвратаДиалога.Нет Тогда

        Возврат;

    КонецЕсли;

    

    ОчиститьСообщения();

    Объект = Элементы.Ссылка;

    Для каждого Объект из ВыделенныеСтроки Цикл

     Если  НЕ Объект.СпецификацияКатВ.Количество()= 0    Тогда

        ТекстОшибки = НСтр(«ru = ‘Заполнена спецификация кат.В (необходимо предварительно очистить!’»);

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);

        Возврат;

    КонецЕсли;

    СпецификацияЗаполнитьПриложенияСервер();    

    
    КонецЦикла;

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

  

НЕА123

6 — 19.04.19 — 10:00

(4) похоже на попытку «редактировать в списке»

  

НЕА123

7 — 19.04.19 — 10:02

(0)

что оно должно сделать?

  

margo_irkutsk

8 — 19.04.19 — 10:03

перебирать выделенные документы и в каждом заполнять табличную часть

  

Eg0rkas

9 — 19.04.19 — 10:07

покажите теперь код процедуры «ЗаполнитьИРасценитьПоВнутреннимЦенам()»

  

Darych

10 — 19.04.19 — 10:13

в (2) в коде беда

  

margo_irkutsk

11 — 19.04.19 — 11:15

немного подправила код, но ошибка осталась та же:

&НаКлиенте

Процедура ЗаполнитьПриложениями(Команда)

    

    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);

    Если ВыделенныеСтроки.Количество() = 0 Тогда

        Возврат;

    КонецЕсли;

    ТекстВопроса = НСтр(«ru=’К выделенным в списке документам будут заполнены приложения. Продолжить?’»);

    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);

    

    Если Ответ = КодВозвратаДиалога.Нет Тогда

        Возврат;

    КонецЕсли;

    

    ОчиститьСообщения();

    Для каждого Объект из ВыделенныеСтроки Цикл

     Если  НЕ Объект.СпецификацияКатВ.Количество()= 0    Тогда

        ТекстОшибки = НСтр(«ru = ‘Заполнена спецификация кат.В (необходимо предварительно очистить!’»);

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);

        Возврат;

    КонецЕсли;

    СпецификацияЗаполнитьПриложенияСервер();    

    
    КонецЦикла;

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

Процедура СпецификацияЗаполнитьПриложенияСервер()

    

    
    ДокОбъект = РеквизитФормыВЗначение(«Объект»,Тип(«ДокументОбъект.ЛГ_ЖдНакладная»));

    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        

    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    ДокОбъект.Обработано = Истина;

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

  

margo_irkutsk

12 — 19.04.19 — 11:17

Пробовала через ДанныеФормыВЗначение, но ошибка та же.

  

Darych

13 — 19.04.19 — 11:18

объект — это что?

  

Darych

14 — 19.04.19 — 11:18

если данные формы — то беда

  

margo_irkutsk

15 — 19.04.19 — 11:19

объект-это документ

  

Mankubus

16 — 19.04.19 — 11:19

(11) >>Для каждого Объект из ВыделенныеСтроки Цикл

нельзя использовать слово «объект» в качестве переменных!

  

margo_irkutsk

17 — 19.04.19 — 11:29

Хорошо,изменила код, ошибка та же(. В параметрах метода также пробовала менять. Ошибка не уходит.

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

&НаКлиенте

Процедура ЗаполнитьПриложениями(Команда)

    

    ВыделенныеСтроки = ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.СписокПиломат);

    Если ВыделенныеСтроки.Количество() = 0 Тогда

        Возврат;

    КонецЕсли;

    ТекстВопроса = НСтр(«ru=’К выделенным в списке документам будут заполнены приложения. Продолжить?’»);

    Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет);

    

    Если Ответ = КодВозвратаДиалога.Нет Тогда

        Возврат;

    КонецЕсли;

    

    ОчиститьСообщения();

    Для каждого Элемент из ВыделенныеСтроки Цикл

     Если  НЕ Элемент.СпецификацияКатВ.Количество()= 0    Тогда

        ТекстОшибки = НСтр(«ru = ‘Заполнена спецификация кат.В (необходимо предварительно очистить!’»);

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);

        Возврат;

    КонецЕсли;

    СпецификацияЗаполнитьПриложенияСервер();    

    
    КонецЦикла;

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

Процедура СпецификацияЗаполнитьПриложенияСервер()

    

    
    ДокОбъект = РеквизитФормыВЗначение(«Объект»,Тип(«ДокументОбъект.ЛГ_ЖдНакладная»));

    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        

    ДокОбъект.ЗначениеВРеквизитФормы(«Объект»);

    ДокОбъект.Обработано = Истина;

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

  

Darych

18 — 19.04.19 — 11:32

она не читает ответы

  

hhhh

19 — 19.04.19 — 11:41

(17) ДокОбъект = РеквизитФормыВЗначение(«Объект»,Тип(«ДокументОбъект.ЛГ_ЖдНакладная»)); — это для формы документа

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

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

Процедура СпецификацияЗаполнитьПриложенияСервер(Элемент)

    

    
    ДокОбъект = Элемент.Ссылка.ПолучитьОбъект();

    ДокОбъект. ЗаполнитьИРасценитьПоВнутреннимЦенам();

        

    ДокОбъект.Обработано = Истина;

ДокОбъект.Записать();

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

  

margo_irkutsk

20 — 19.04.19 — 11:57

Ответы читаю.

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

Мои извинения, если чего-то не понимаю.

  

SSSSS_AAAAA

21 — 19.04.19 — 11:59

(20) И Реквизит какой формы вы пытаетесь загнать в значение? Формы списка?

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2823)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)     Объект  = РеквизитФормыВЗначение(«Обработка»); по причине: Недопустимое значение параметра (параметр номер ‘1’) Вот функция &НаСервере КонецФункции Почему может валить ошибку?

есть реквизит формы «Обработка»?

ОбъектОбработки = РеквизитФормыВЗначение(«Объект»);

Преобразовывать в значение существующий реквизит

если я в обработку добавлю макет, как его получить?

А если добавляю кнопку, то отображается окно с «» и больше ничего, кто нибудь сталкивался?

из серверной процедуры(функции) модуля формы:

А зачем вообще его в форме получать? Я бы заполнил в модуле объекта и вернул уже готовый табличный документ

На РМК Кнопку  нужно прикрутить, а тут такие подвохи блин, второй час долблюсь

я уже и другую кнопку отредактировал,  теперь вот эта фигня выскакивает

Дык, чтобы вызвать метод из модуля объекта — его (объект) все-равно получить придется ;-)

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2823)}: Ошибка при установке значения атрибута контекста (Объект)     Объект  = РеквизитФормыВЗначение(«Объект»); по причине: Нельзя изменять поле, содержащее объект данных формы Нельзя изменять поле, содержащее объект данных формы

Объект в реквизиты добавить?

Таки да, но удобнее заполнять в модуле, а не в форме — если что можно будет вызвать без открытия формы … да и вообще в форме должен быть только код, связанный с работой самой формы

Что не понятно в функции РеквизитФормыВЗначение?

Посмотри внимательно на форму. Там уже есть реквизит «Объект». Только не верь глазам своим, он не фига не объект :-). Это данные формы (можешь пока представлять себе как структуру с полями). А чтобы вызвать методы этого объекта — его надо преобразовать в»настоящий» при помощи РеквизитФормыВЗначение

+ Объект = … — так нельзя!!!

Неправильно:  Объект  = …. Правильно ОбъектНастоящий = …. :-)

+ в том случае, если у тебя реквизит формы назван по умолчанию, т.е. «Объект» (назван платформой)

Что тут не так по мимо того что нет значения для макета

Реквизит на форме нужно разместить?

Что отладчик говорит про полученный объект? Тип значения у него какой?

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2823)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)     Объект  = РеквизитФормыВЗначение(«Отчет»); по причине: Недопустимое значение параметра (параметр номер ‘1’) Недопустимое значение параметра (параметр номер ‘1’)

ТС, ответь на вопрос: как называется основной реквизит твоей обработки?

так у тебя есть реквизит формы с именем «Отчет»?

А не проще к самому отчету обратится сразу Отчеты.ВидыОплатККМ.ПолучитьМакет?

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(2875)}: Ошибка при вызове метода контекста (Показать)     ТабДок.Показать; по причине: Метод недоступен на сервере Метод недоступен на сервере а тут то что не так?

Метод показать не работает на сервере?

А кому и на чем показывать ее на сервере? Предлагаю немного углубиться в понимание концепции управляемых форм

а как тогда его на клиенте показать? если он в другой функции?

Параметр передай, заполни его на сервере, а когда вернешься на клиент — покажи. Я повторюсь

ну серверу он хочет показать…сервер что, не живой, ему что, прекрасное увидеть не хочется… а то гоняют и в хвост и в гриву, а ничего и не показывают, вот потом и появляются ошибки формата потока)

Переменная не определена ТабДок)))

Спасибо за помощи идиоту!!

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Я сделал форму, добавил реквизит пользователей из справочника пользователей и создал поле выбора с типом справочника пользователей. Мне нужно получить значение этого реквизита в модуле формы, но в строке, где я его получаю, выходит ошибка:

Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(201)}:РеквизитПользователя = РеквизитФормыВЗначение("Пользователь"); //
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(230)}:ТабДокумент                          = СформироватьМакетНаСервере();

по причине:
Недопустимое значение параметра (параметр номер '1')

Как это можно исправить?

Вот сам код:

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

&НаКлиенте
Процедура СформироватьМакет(Команда)
    
    ТабДокумент                         = СформироватьМакетНаСервере();    
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "Макет";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДокумент;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
    
    ОбластиОбъектов = Новый СписокЗначений;
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
    
КонецПроцедуры

Вот форма со свойствами поля:

И свойства реквизита:

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Ukubaeva

Дата регистрации: 26.05.2010
Сообщений: 111

Добрый день!
1С:Предприятие 8.2 (8.2.17.169)
У меня возникла такая проблема!
В модуле управляемой формы клиент обращается к серверу, сервер через com соединение подключается к другой базе, получает результаты запроса из этой базы и передает их через реквизит формы клиенту.
Код:
&НаСервере
Процедура ПолучениеСотрудника()
ПодключениеКБазе(DataSource);
ЗапросСотруд = DataSource.NewObject(«Запрос» ;) ;
ЗапросСотруд.Текст = «ВЫБРАТЬ
|      СотрудникиОрганизаций.Ссылка
|ИЗ
|      Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
|      СотрудникиОрганизаций.Физлицо = &Физлицо
|      И СотрудникиОрганизаций.Организация = &Организация»;
ЗапросСотруд.УстановитьПараметр(«Физлицо»,ТекФизЛи цо);
ЗапросСотруд.УстановитьПараметр(«Организация»,Data Source.Справочники.Организации.НайтиПоКоду(«000000 002» ;) );
//      ТЗВыгрСотр = РеквизитФормыВЗначение(«ВыгрСотр» ;) ;
ТЗВыгрСотр = Новый ТаблицаЗначений;
ТЗВыгрСотр = ЗапросСотруд.Выполнить().Выгрузить();
сообщить(ТипЗнч(ТЗВыгрСотр));
ЗначениеВРеквизитФормы(ТЗВыгрСотр,»ВыгрСотр» ;) ;
КонецПроцедуры

Но, при выполнении кода происходит ошибка Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
ЗначениеВРеквизитФормы(ТЗВыгрСотр,»ВыгрСотр» ;) ;
по причине:
Недопустимое значение параметра (параметр номер ‘2’)

Получаю тип значения результата запроса — тип comобъект!
Как же мне получить в качестве результата запроса ТаблицуЗначений?
Спасибо!!!

Ukubaeva

Дата регистрации: 26.05.2010
Сообщений: 111

а, все, нашла, нужно передать в строку, а потом назад

Показывать по
10
20
40
сообщений

Понравилась статья? Поделить с друзьями:
  • 1с корректировка реализации исправление ошибок
  • 136 ошибка змз 406
  • 1с во время установки произошла неисправимая ошибка
  • 135 ошибка пежо 308
  • 1df021 ошибка блок aps