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

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

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

РеквизитФормыВЗначение() является методом управляемой формы, компилируется только &НаСервере.

Метод РеквизитФормыВЗначение() используется, если требуется из модуля формы вызвать стандартный метод объекта или метод из модуля объекта, из общего модуля, который будет отрабатывать с данными, взятыми из формы, т.е. еще не записанными в базу.

ЗначениеВРеквизитФормы() используется , чтобы измененные данные вернуть в форму.

Вторым параметром метода РеквизитФормыВЗначение является тип значения. Это необязательный параметр. Если обрабатываемый реквизит не является составным типом, то тип будет автоматически получен из реквизита формы. Иначе генерируется исключение времени выполнения.

Примеры:
1)

&НаСервере
Процедура ЗаполнитьТЧПоДаннымПоследнегоДокумента_(Контрагент)

ДокОбъект = РеквизитФормыВЗначение(«Объект»);
ДокОбъект.ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент);
ЗначениеВРеквизитФормы(ДокОбъект, «Объект»);
КонецПроцедуры

2)

3)

ДанныеФормыВзначение()

ДанныеФормыВЗначение() может работать без контекста формы, ей необходимо указывать тип конвертируемых данных, то есть выполняться &НаСервереБезКонтекста. Обычно процедуры РеквизитФормыВЗначение() и ДанныеФормыВЗначение() взаимозаменяемы, но только ДанныеФормыВЗначение() может выполняться без контекста формы

ЗначениеВДанныеФормы() — процедура, обратная по отношению к ДанныеФормыВЗначение().

&НаСервере

// Инициализация набора констант
НаборКонстантОбъект = ДанныеФормыВЗначение(НаборКонстант, Тип(«КонстантыНабор»));
НаборКонстантОбъект.Прочитать();
ЗначениеВДанныеФормы(НаборКонстантОбъект, НаборКонстант);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *