|
Выполнить процедуру на сервере | ☑ | ||
---|---|---|---|---|
0
anikev
29.12.21
✎
08:23
|
Здравствуйте! Есть поле выбора, при изменении которого должны подгружаться значения из другого справочника.
В модуле документа я сделал так: &НаСервере Функция ЗапроситьДанныеПоНоменклатуре(ВыбранноеЗначение) Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | паУслугиИЦеныЗахарова.Ссылка КАК Ссылка, | паУслугиИЦеныЗахарова.ВерсияДанных КАК ВерсияДанных, | паУслугиИЦеныЗахарова.ПометкаУдаления КАК ПометкаУдаления, | паУслугиИЦеныЗахарова.Код КАК Код, | паУслугиИЦеныЗахарова.Наименование КАК Наименование, | паУслугиИЦеныЗахарова.Номенклатура КАК Номенклатура, | паУслугиИЦеныЗахарова.Количество КАК Количество, | паУслугиИЦеныЗахарова.Стоимость КАК Стоимость, | паУслугиИЦеныЗахарова.КодДохода КАК КодДохода, | паУслугиИЦеныЗахарова.Предопределенный КАК Предопределенный, | паУслугиИЦеныЗахарова.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.паУслугиИЦеныЗахарова КАК паУслугиИЦеныЗахарова |ГДЕ | паУслугиИЦеныЗахарова.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура",ВыбранноеЗначение); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Возврат РезультатЗапроса; КонецФункции &НаКлиенте Процедура УслугиОЭПНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Результат = ЗапроситьДанныеПоНоменклатуре(ВыбранноеЗначение); КонецПроцедуры Но серверная функция не запускается, а возвращает ошибку: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable' {Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(8757)}: Результат = ЗапроситьДанныеПоНоменклатуре(ВыбранноеЗначение); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. Скажите, пожалуйста, что я делаю не так? |
|||
1
Amra
29.12.21
✎
08:32
|
Продам СП, дорого. У тебя фкнкция возвращает ТЗ, а ТЗ на клиенте недоступны
|
|||
2
Smallrat
29.12.21
✎
08:34
|
Хотел было придраться и написать, что РезультатЗапроса = Запрос.Выполнить().Выгрузить(); это плохой стиль, но потом увидел Справочник.паУслугиИЦеныЗахарова....
|
|||
3
anikev
29.12.21
✎
08:36
|
(2) Я понимаю, что это плохо, имя справочника я поправлю. А как правильно Запрос().Выполнить()?
|
|||
4
Ryzeman
29.12.21
✎
08:38
|
(3) если тебе всё равно какую коллекцию вернуть на клиент, то используй выборку:
РезультатЗапроса = Запрос.Выполнить().Выбрать(); Если ты этой ТЗ что-то заполняешь потом, то делай это непосредственно на сервере, а не на клиенте. |
|||
5
Smallrat
29.12.21
✎
08:38
|
(3) да не, все правильно, просто результат запроса возвращается в Запрос.Выполнить(), а у результата запроса есть метод Выгрузить(), который возвращает таблицу значений. Так - придирки
|
|||
6
Smallrat
29.12.21
✎
08:39
|
+(5) ну кроме того, что ТЗ на клиент не вернешь
|
|||
7
Мультук
гуру
29.12.21
✎
08:42
|
(0) Зачем все это?
пСтруктура = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыбранноеЗначение, "Ссылка,Код,Наименование,Количество,Стоимость"); |
|||
8
Amra
29.12.21
✎
08:45
|
(7) Садись, 2
|
|||
9
anikev
29.12.21
✎
08:47
|
(6) Понял, верну структуру
|
|||
10
DEVIce
29.12.21
✎
09:22
|
(9) У тебя в общем модуле есть даже специально метод превращающий таблицу значений в массив структур, как раз для таких случаев.
|
|||
11
Мультук
гуру
29.12.21
✎
09:27
|
(0)
1) Сколько строк ожидается в результате запроса? 2) Зачем эти строки нужно возвращать на клиент и не проще ли их рассовать в нужные места еще на сервере ? |
|||
12
anikev
29.12.21
✎
09:30
|
(11) запрос будет возвращать одну строку со значениями, которые заполнятся в столбцы
|
|||
13
DEVIce
29.12.21
✎
09:32
|
(12) Тем более, если строка всегда одна, то структуры хватит по уши.
|
|||
14
Pprog151713
29.12.21
✎
09:50
|
Зачем возвращать ТЗ на клиента, верни ТЗ в обьект. Какие структуры это жесть какая-то.
|
|||
15
Pprog151713
29.12.21
✎
09:51
|
Реквизит объекта ТЗформа создай и возвращай.
|
|||
16
Kassern
29.12.21
✎
09:54
|
я так и не понял, зачем ТС возвращает что-то на клиент?
|
|||
17
anikev
29.12.21
✎
10:04
|
(16) есть таблица. Первый столбец - это номенклатура. Если я меняю номенклатуру, то после выбора другой у меня должна поменяться информация в других колонках: Количество, цена
|
|||
18
Kassern
29.12.21
✎
10:09
|
(17) ну так меняйте их на сервере, передайте текущую строку на сервер и заполните нужные колонки там
|
|||
19
anikev
29.12.21
✎
10:32
|
Хорошо, спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |