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

О нюансах работы в 1С с ЗначениеВРеквизитФормы и ошибке Недопустимое значение параметра (параметр номер ‘2’).

ЗначениеВРеквизитФормы выполняется на сервере. Разработчики платформы автоматизировали процесс передачи данных на клиент – вручную на клиенте присваивать значение полю не нужно.

Проще всего выгрузить результат выполнения запроса с вариантом обхода по группировкам. Тогда на выходе будет ДеревоЗначений и тип данных совпадет с тем, что установлен в табличном поле по-умолчанию. Однако, если табличное поле базируется на ТаблицаЗначений – обход по группировкам в выгрузке не нужен.

Если что-то не так – получите ошибку Недопустимое значение параметра (параметр номер ‘2’).

Чтобы исправить ошибку “Недопустимое значение параметра (параметр номер ‘2’)” нужно проверить:

1. Тип данных реквизита на форме должен совпадать с типом данных который хотите присвоить реквизиту (ДеревоЗначений, ТаблицаЗначений).

Формирование ДеревоЗначений:

Запрос.Выполнить.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам)

Формирование ТаблицаЗначений:

Запрос.Выполнить.Выгрузить()

2. Количество и имена колонок в результате запроса должны совпадать с количеством и именами в табличном поле на форме.

3. Имя реквизита на форме должно совпадать с именем указанном в методе ЗначениеВРеквизитФормы и иметь тип Строка. Рекомендую копировать текст и вставлять в места где он должен совпадать.

Если ошибка сохраняется – перепроверьте все пункты в отладчике.

Чтобы научиться работать с методом ЗначениеВРеквизитФормы нужен определенный опыт. Со временем вы обязательно научитесь пользоваться им без ошибок.

Подскажите пожалуйста в чем проблема:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    
    ЗаполнитьТаблицуЗначений();

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

Процедура ЗаполнитьТаблицуЗначений()

    
    Запрос = Новый Запрос;

    Запрос.Текст =

    «ВЫБРАТЬ

    |    ДоговорыКонтрагентов.Контрагент КАК Контрагент,

    |    ДоговорыКонтрагентов.Партнер,

    |    СоглашенияСКлиентами.Ссылка КАК Соглашение,

    |    СоглашенияСКлиентами.ГрафикОплаты,

    |    ДоговорыКонтрагентов.Ссылка КАК Договор,

    |    ДоговорыКонтрагентов.ОграничиватьСуммуЗадолженности,

    |    ДоговорыКонтрагентов.ДопустимаяСуммаЗадолженности,

    |    ДоговорыКонтрагентов.ЗапрещаетсяПросроченнаяЗадолженность

    |ИЗ

    |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

    |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами

    |        ПО ДоговорыКонтрагентов.Контрагент = СоглашенияСКлиентами.Контрагент

    |            И ДоговорыКонтрагентов.Партнер = СоглашенияСКлиентами.Партнер

    |ГДЕ

    |    ВЫБОР

    |            КОГДА ДоговорыКонтрагентов.Ссылка ЕСТЬ NULL

    |                ТОГДА ИСТИНА

    |            ИНАЧЕ ДоговорыКонтрагентов.ПометкаУдаления <> ИСТИНА

    |                    И ДоговорыКонтрагентов.ТипДоговора = ЗНАЧЕНИЕ(Перечисление.ТипыДоговоров.СПокупателем)

    |        КОНЕЦ

    |    И ВЫБОР

    |            КОГДА СоглашенияСКлиентами.Ссылка ЕСТЬ NULL

    |                ТОГДА ИСТИНА

    |            ИНАЧЕ СоглашенияСКлиентами.ПометкаУдаления <> ИСТИНА

    |                    И СоглашенияСКлиентами.Типовое = ЛОЖЬ

    |        КОНЕЦ

    |ИТОГИ ПО

    |    Контрагент»;

    
    ЗначениеВРеквизитФормы(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам), «СписокДоговоров»);

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

Ругается на строку:

ЗначениеВРеквизитФормы(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам), «СписокДоговоров»);  

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

ЗначениеВРеквизитФормы. Ошибка «Недопустимое значение параметра (параметр номер ‘2’)»

Ошибка возникла при преобразовании дерева значений в соответствующий реквизит формы. ДеревоЗначений создавалось запросом и его методом 

Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)

Реквизит формы также имеет тип (ДеревоЗначений) — соответственно Типы совпадают. Причиной оказалось несоответствие колонок ДереваЗначений и реквизита на форме. Их количество и имена должны совпадать.

Недостаточно прав для комментирования

Всем привет. Не могу понять почему не работает простой код: //Модуль формы &НаСервере Ошибка: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)     ЗначениеВРеквизитФормы(Справочники.ТехнологииПеределов.Маршруты,»Маршрут»); по причине: Недопустимое значение параметра (параметр номер ‘2’) При этом реквизиты формы «Маршрут» и «Нестандарт» являются действительно реквизитами формы а не объекта. Что не так? Спасибо!

И тип реквизитов «СправочникСсылка.ТехнологииПеределов»

Маршрут и Нестандарт — предопределенные.

ЗначениеВРеквизитФормы(Справочники.ТехнологииПеределов.Маршруты.ПолучитьОбъект,»Маршрут»);

Не, ошибка. Причем с параметром №1 вроде всё нормально, что то с параметром 2.

а почему не просто равно?

«ПРИМЕЧАНИЕ. В качестве первого параметра методов РеквизитФормыВЗначение и ДанныеФормыВЗначение могут выступать только реквизиты формы следующих типов: ДанныеФормыСтруктура, ДанныеФормыКоллекция, ДанныеФормыСтруктураСКоллекцией, ДанныеФормыДерево.» Как я понимаю, верно и обратное.

Равно прокатило. Спасибо. Сам себе придумал проблему.

Тэги:

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

Перейти к контенту

О нюансах работы в 1С с ЗначениеВРеквизитФормы и ошибке Недопустимое значение параметра (параметр номер ‘2’).

ЗначениеВРеквизитФормы выполняется на сервере. Разработчики платформы автоматизировали процесс передачи данных на клиент — вручную на клиенте присваивать значение полю не нужно.

Проще всего выгрузить результат выполнения запроса с вариантом обхода по группировкам. Тогда на выходе будет ДеревоЗначений и тип данных совпадет с тем, что установлен в табличном поле по-умолчанию. Однако, если табличное поле базируется на ТаблицаЗначений — обход по группировкам в выгрузке не нужен.

Если что-то не так — получите ошибку Недопустимое значение параметра (параметр номер ‘2’).

Чтобы исправить ошибку «Недопустимое значение параметра (параметр номер ‘2’)» нужно проверить:

1. Тип данных реквизита на форме должен совпадать с типом данных который хотите присвоить реквизиту (ДеревоЗначений, ТаблицаЗначений).

Формирование ДеревоЗначений:

Запрос.Выполнить.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам)

Формирование ТаблицаЗначений:

Запрос.Выполнить.Выгрузить()

2. Количество и имена колонок в результате запроса должны совпадать с количеством и именами в табличном поле на форме.

3. Имя реквизита на форме должно совпадать с именем указанном в методе ЗначениеВРеквизитФормы и иметь тип Строка. Рекомендую копировать текст и вставлять в места где он должен совпадать.

Если ошибка сохраняется — перепроверьте все пункты в отладчике.

Чтобы научиться работать с методом ЗначениеВРеквизитФормы нужен определенный опыт. Со временем вы обязательно научитесь пользоваться им без ошибок.

Реквизиты управляемых форм

Автор mindruk, 08 авг 2013, 11:49

0 Пользователей и 1 гость просматривают эту тему.

День добрый.

При создании внешнего отчета возник вопрос о выводе результата на форму.

На форме есть реквизит ТабДок типа Табличный документ.

Я его передаю как параметр  в функцию выполняемую на Сервере и заполняю данными.

Если в конце функции возвращаю ТабДок тогда могу вывести в отдельном окне — а нужно вывести на форме.

Пытался использовать ЗначениеВДанныеФормы(ТабДок,Объект.ТабДок);  :dfbsdfbsdf:

Типы совпадают — Табличный документ, но выскакивает ошибка несоответствие параметра №1  :dfbsdfbsdf:

Подскажите где я ошибаюсь — и вообще Табличный документ можно преобразовывать в реквизит?


Используйте ЗначениеВРеквизитФормы() и уберите ТабДок из объекта, не место ему там.


Убрать ТабДок из объекта — значит убрать реквизит?
И не могу нигде найти как мне правильно вывести ТабличныйДокумент созданный программно на форму.
В отдельном окне получается а на форму не очень…
Помогите разобраться пожалуйста…
Листинг примерно такой
& На Сервере \кусок
        ТаблДок = Новый ТабличныйДокумент;
   ТаблДок.Очистить();
   Макет = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«Макет»);
   Шп = Макет.ПолучитьОбласть(«Шапка»);
   Шп.параметры.ДатаОтчета = Формат(ДатаОтчета,»ДЛФ=DD»);
   ТаблДок.Вывести(Шп);
   Заг = Макет.ПолучитьОбласть(«Заголовок|Начало»);
   Кол =  Макет.ПолучитьОбласть(«Заголовок|Колонка1»);
   СтрокаВыводаНачало = Макет.ПолучитьОбласть(«Строка|Начало»);
   СтрокаВыводаКол =  Макет.ПолучитьОбласть(«Строка|Колонка1»);
   ПТР = Макет.ПолучитьОбласть(«ПустаяСтрока|Начало»);
   ПТРК = Макет.ПолучитьОбласть(«ПустаяСтрока|Колонка1»);
   \выполняю кучу действий и в итоге получаю свой документ

если я делаю Возврат(ТаблДок) — тогда на &Клиенте я могу его вывести — но в отдельном окне,а мне надо на форму

я понимаю что надо использовать ЗначениеВРеквизитФормы() но если пишу
ЗначениеВРеквизитФормы(ТаблДок,ТабДок) получается плохо — несоответствие параметра1
ТаблДок — тип Табличный документ — создаю и заполняю сам
ТабДок — тип табличный документ — реквизит на форме

:dfbbdrfb::dfbbdrfb::dfbbdrfb:


вместо ЗначениеВРеквизитФормы(ТаблДок,ТабДок)

нужно писать

ЗначениеВРеквизитФормы(ТаблДок,»ТабДок»)


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

Час от часу не легче?!


Но вообще то все нужно делать не так.
Ничего конвертировать никуда не нужно. Нужно просто использовать тот объект, который находится на форме. Для примера прикладываю обработку.


Вай, шайтаномо насальнико…:o

ОГРОМНОЕ СПАСИБО :zebzdr:


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Реквизиты управляемых форм

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Ошибка возникла при преобразовании дерева значений в соответствующий реквизит формы. ДеревоЗначений создавалось запросом и его методом 

Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)

Реквизит формы также имеет тип (ДеревоЗначений) — соответственно Типы совпадают. Причиной оказалось несоответствие колонок ДереваЗначений и реквизита на форме. Их количество и имена должны совпадать.

Недостаточно прав для комментирования

Всем привет. Не могу понять почему не работает простой код: //Модуль формы &НаСервере Ошибка: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)     ЗначениеВРеквизитФормы(Справочники.ТехнологииПеределов.Маршруты,»Маршрут»); по причине: Недопустимое значение параметра (параметр номер ‘2’) При этом реквизиты формы «Маршрут» и «Нестандарт» являются действительно реквизитами формы а не объекта. Что не так? Спасибо!

И тип реквизитов «СправочникСсылка.ТехнологииПеределов»

Маршрут и Нестандарт — предопределенные.

ЗначениеВРеквизитФормы(Справочники.ТехнологииПеределов.Маршруты.ПолучитьОбъект,»Маршрут»);

Не, ошибка. Причем с параметром №1 вроде всё нормально, что то с параметром 2.

а почему не просто равно?

«ПРИМЕЧАНИЕ. В качестве первого параметра методов РеквизитФормыВЗначение и ДанныеФормыВЗначение могут выступать только реквизиты формы следующих типов: ДанныеФормыСтруктура, ДанныеФормыКоллекция, ДанныеФормыСтруктураСКоллекцией, ДанныеФормыДерево.» Как я понимаю, верно и обратное.

Равно прокатило. Спасибо. Сам себе придумал проблему.

Тэги:

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

Показывать по
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с отчетность
  • Ошибка при вызове метода контекста записать вывод запрещен
  • Ошибка при вызове метода контекста занять сканер