Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выполнить процедуру на сервере

Выполнить процедуру на сервере
Я
   anikev
 
29.12.21 - 08:23
Здравствуйте! Есть поле выбора, при изменении которого должны подгружаться значения из другого справочника.
В модуле документа я сделал так:
&НаСервере
Функция ЗапроситьДанныеПоНоменклатуре(ВыбранноеЗначение)
     Запрос = Новый Запрос();
     Запрос.Текст =    "ВЫБРАТЬ
                       |    паУслугиИЦеныЗахарова.Ссылка КАК Ссылка,
                       |    паУслугиИЦеныЗахарова.ВерсияДанных КАК ВерсияДанных,
                       |    паУслугиИЦеныЗахарова.ПометкаУдаления КАК ПометкаУдаления,
                       |    паУслугиИЦеныЗахарова.Код КАК Код,
                       |    паУслугиИЦеныЗахарова.Наименование КАК Наименование,
                       |    паУслугиИЦеныЗахарова.Номенклатура КАК Номенклатура,
                       |    паУслугиИЦеныЗахарова.Количество КАК Количество,
                       |    паУслугиИЦеныЗахарова.Стоимость КАК Стоимость,
                       |    паУслугиИЦеныЗахарова.КодДохода КАК КодДохода,
                       |    паУслугиИЦеныЗахарова.Предопределенный КАК Предопределенный,
                       |    паУслугиИЦеныЗахарова.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
                       |ИЗ
                       |    Справочник.паУслугиИЦеныЗахарова КАК паУслугиИЦеныЗахарова
                       |ГДЕ
                       |    паУслугиИЦеныЗахарова.Номенклатура = &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура",ВыбранноеЗначение);
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
        Возврат РезультатЗапроса;

КонецФункции


&НаКлиенте
Процедура УслугиОЭПНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Результат = ЗапроситьДанныеПоНоменклатуре(ВыбранноеЗначение);
КонецПроцедуры

Но серверная функция не запускается, а возвращает ошибку:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(8757)}:    Результат = ЗапроситьДанныеПоНоменклатуре(ВыбранноеЗначение);

по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.

Скажите, пожалуйста, что я делаю не так?
   Amra
 
1 - 29.12.21 - 08:32
Продам СП, дорого. У тебя фкнкция возвращает ТЗ, а ТЗ на клиенте недоступны
   Smallrat
 
2 - 29.12.21 - 08:34
Хотел было придраться и написать, что РезультатЗапроса = Запрос.Выполнить().Выгрузить(); это плохой стиль, но потом увидел Справочник.паУслугиИЦеныЗахарова....
   anikev
 
3 - 29.12.21 - 08:36
(2) Я понимаю, что это плохо, имя справочника я поправлю. А как правильно Запрос().Выполнить()?
   Ryzeman
 
4 - 29.12.21 - 08:38
(3) если тебе всё равно какую коллекцию вернуть на клиент, то используй выборку:
 РезультатЗапроса = Запрос.Выполнить().Выбрать(); 

Если ты этой ТЗ что-то заполняешь потом, то делай это непосредственно на сервере, а не на клиенте.
   Smallrat
 
5 - 29.12.21 - 08:38
(3) да не, все правильно, просто результат запроса возвращается в Запрос.Выполнить(), а у результата запроса есть метод Выгрузить(), который возвращает таблицу значений. Так - придирки
   Smallrat
 
6 - 29.12.21 - 08:39
+(5) ну кроме того, что ТЗ на клиент не вернешь
   Мультук
 
7 - 29.12.21 - 08:42
(0) Зачем все это?

пСтруктура = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыбранноеЗначение, "Ссылка,Код,Наименование,Количество,Стоимость");
   Amra
 
8 - 29.12.21 - 08:45
(7) Садись, 2
   anikev
 
9 - 29.12.21 - 08:47
(6) Понял, верну структуру
   DEVIce
 
10 - 29.12.21 - 09:22
(9) У тебя в общем модуле есть даже специально метод превращающий таблицу значений в массив структур, как раз для таких случаев.
   Мультук
 
11 - 29.12.21 - 09:27
(0)

1) Сколько строк ожидается в результате запроса?
2) Зачем эти строки нужно возвращать на клиент и не проще ли их рассовать в нужные места еще на сервере ?
   anikev
 
12 - 29.12.21 - 09:30
(11) запрос будет возвращать одну строку со значениями, которые заполнятся в столбцы
   DEVIce
 
13 - 29.12.21 - 09:32
(12) Тем более, если строка всегда одна, то структуры хватит по уши.
   Pprog151713
 
14 - 29.12.21 - 09:50
Зачем возвращать ТЗ на клиента, верни ТЗ в обьект. Какие структуры это жесть какая-то.
   Pprog151713
 
15 - 29.12.21 - 09:51
Реквизит объекта ТЗформа создай и возвращай.
   Kassern
 
16 - 29.12.21 - 09:54
я так и не понял, зачем ТС возвращает что-то на клиент?
   anikev
 
17 - 29.12.21 - 10:04
(16) есть таблица. Первый столбец - это номенклатура. Если я меняю номенклатуру, то после выбора другой у меня должна поменяться информация в других колонках: Количество, цена
   Kassern
 
18 - 29.12.21 - 10:09
(17) ну так меняйте их на сервере, передайте текущую строку на сервер и заполните нужные колонки там
   anikev
 
19 - 29.12.21 - 10:32
Хорошо, спасибо!

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.