Имя: Пароль:
1C
1С v8
Выполнить процедуру на сервере
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
Хорошо, спасибо!
AdBlock убивает бесплатный контент. 1Сергей