Помогите передать параметр в запрос из значения реквизита формы
Добрый день.
Делаю внешнюю обработку на котором есть табличная часть "Место" с 2 колонками "Номер" и "Значение".
В запросе делаю выборку поиска "Значение" по параметру "Номер". Запрос работает в консоле, когда в ручную передаю параметр.
Но когда делаю в конфигураторе так "Запрос. УстановитьПараметр("Номер", Объект.Место.Номер)" программа пишет Поле объекта не обнаружено. Что я делаю не так? как передать параметр из данных табличной части?
Делаю внешнюю обработку на котором есть табличная часть "Место" с 2 колонками "Номер" и "Значение".
В запросе делаю выборку поиска "Значение" по параметру "Номер". Запрос работает в консоле, когда в ручную передаю параметр.
Но когда делаю в конфигураторе так "Запрос. УстановитьПараметр("Номер", Объект.Место.Номер)" программа пишет Поле объекта не обнаружено. Что я делаю не так? как передать параметр из данных табличной части?
По теме из базы знаний
- Под капотом управляемых форм
- Размещение PDF в Поле HTML управляемой формы для просмотра веб-клиентом
- Подсистема прав доступа (анализ ролей, отладка RLS, английский код, обычные и управляемые формы)
- Управление сборкой. Расширение для конфигурации СППР
- Как использовать конвертер для переноса данных из 1С:ITIL в 1С:ITILIUM
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) А из какой строки ТЧ значение номера берется не задумывался?
На клиенте нужно из ТекущиеДанные получить значение Номер и передать на сервер для подстановки в запрос.
На клиенте нужно из ТекущиеДанные получить значение Номер и передать на сервер для подстановки в запрос.
ТекущиеДанные = Элементы.Место.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
РезультатЗапроса = ПолучитьРезультатЗапросаНаСервере(ТекущиеДанные.Номер);
КонецЕсли;
(14)Да.
Смотрите как все происходит
Есть табличная часть Место, на которой есть 2 колонки Номер и Значение. ("Значение" я беру выборкой из регистра сведений по параметру "Номер". Выходит так, что я ввожу Номер в табличной части и нажимаю кнопку "Показать" и у меня по параметру "Номер" должно заполниться "Значение"
Вот код команды "Показать"
Смотрите как все происходит
Есть табличная часть Место, на которой есть 2 колонки Номер и Значение. ("Значение" я беру выборкой из регистра сведений по параметру "Номер". Выходит так, что я ввожу Номер в табличной части и нажимаю кнопку "Показать" и у меня по параметру "Номер" должно заполниться "Значение"
Вот код команды "Показать"
&НаСервере
Процедура ПоказатьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МестоЗначений.Номер КАК Номер,
|
| ЕСТЬNULL(МестоЗначений.Значение, ""Для данного номера не задано значение"") КАК Значение
|ИЗ
| РегистрСведений.МестоЗначений КАК МестоЗначений
|ГДЕ
| МестоЗначений.Номер = &Номер";
Запрос.УстановитьПараметр("Номер ", Объект.Место.Номер); \\Вот тут ошибка не знаю как в этот параметр передать то значение которое я ввел в табличной части перед нажатием кнопки "Показать".
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
Объект.Место.Значение = РезультатЗапроса.Значение ;
КонецЦикла
КонецПроцедуры
&НаКлиенте
Процедура Показать(Команда)
ПоказатьНаСервере();
КонецПроцедуры
Показать
В заголовке - реквизиты формы
в тексте - реквизит объекта
в вопросе уже реквизит табличной части
может для начала определиться как-нибудь однозначно?
из значения реквизита формы
в тексте - реквизит объекта
Объект.Место.Номер
в вопросе уже реквизит табличной части
как передать параметр из данных табличной части
может для начала определиться как-нибудь однозначно?
в ТЧ, на поле Номер, сделайте обработку события ПриИзмененииНомера()
НаКлиенте
в процедуре ПриИзменении...
текСтрока = Элементы.Место.ТекущиеДанные;
текСтрока.Значение = ПолучитьЗначениеЗапросом(текСтрока.Номер);
КонецПроцедуры
НаСервере
Функция ПолучитьЗначениеЗапросом(прНомер)
//здесь ваш запрос
КонецФункции
НаКлиенте
в процедуре ПриИзменении...
текСтрока = Элементы.Место.ТекущиеДанные;
текСтрока.Значение = ПолучитьЗначениеЗапросом(текСтрока.Номер);
КонецПроцедуры
НаСервере
Функция ПолучитьЗначениеЗапросом(прНомер)
//здесь ваш запрос
КонецФункции
(37) Как тут можно перебрать все строки табличной части
А то если у меня несколько строк, то заполняется та на которой стоит курсор
&НаКлиенте
Процедура Получить(Команда)
текСтрока = Элементы.Место.ТекущиеДанные;
текСтрока.Значение = ПолучитьЗначениеЗапросом(текСтрока.Номер);
КонецПроцедуры
А то если у меня несколько строк, то заполняется та на которой стоит курсор
вот пример обработки по кнопке, сразу ВСЕЙ таблицы без циклов!
Прикрепленные файлы:
ВнешняяОбработкаТестФ.epf
(47) Где то слышал, что такой код
не совсем кошерный, и им можно пользоваться, только если количество строк в таблице небольшое, иначе сильно память кушать может.
По этому совсем без цикла - не всегда хорошо, лучше выборку из результата запроса обойти.
Объект.Место.Загрузить(Запрос.Выполнить().Выгрузить());
не совсем кошерный, и им можно пользоваться, только если количество строк в таблице небольшое, иначе сильно память кушать может.
По этому совсем без цикла - не всегда хорошо, лучше выборку из результата запроса обойти.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот