Имя: Пароль:
1C
 
УФ: Как передать результаты запроса из сервера на клиент?
0 worker-good
 
28.10.14
14:14
Как передать результаты запроса из сервера на клиент в управляемых формах, без создания дополнительных табличных частей и реквизитов?

1) Пробовал через список значений не получилось, ругается.
2) Через хранилище вроде нельзя передать именно таблицу значений
1 Looser-1c
 
28.10.14
14:14
Раскрой тему
2 worker-good
 
28.10.14
14:16
(1) Есть запрос который выполняется в функции &НаСервере и надо результаты запроса открыть в процедуре &НаКлиенте
3 Drac0
 
28.10.14
14:16
(0) Передавай массив структур
4 Looser-1c
 
28.10.14
14:16
(2) В табличную часть. В табличный документ.
Или вообще - в сад, листья подметать.
5 worker-good
 
28.10.14
14:18
(3) А как обычно передается на клиент результат запроса?
6 Krolik Bezobraznik
 
28.10.14
14:19
(5) Смотря для каких целей...
7 Krolik Bezobraznik
 
28.10.14
14:20
(5) Важно задаться вопросом, а надо ли ТЗ передавать на клиент?
8 worker-good
 
28.10.14
14:21
(6) Я рассматриваю не исключительные случаи, а как эта проблема решается в большинстве случаев? Т.е. наиболее универсальное решение...
9 Drac0
 
28.10.14
14:22
(8) Обычно запрос заполняет реквизит формы ТаблицаЗначений (ДанныеФормыКоллекция).
10 эс-образник
 
28.10.14
14:24
На клиенте существуют только некоторые типы - можно передать только их (например Таблицу Значений - нельзя)
11 Krolik Bezobraznik
 
28.10.14
14:24
(8) Можно как (9)  гововрит, а можно и так (3)
12 worker-good
 
28.10.14
14:38
(9) Сделал реквизит внешней обработки типа "ТаблицаЗначений" выдает ошибку что недоступен такой метод на клиенте, что делаю не так?

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

&НаСервере
Процедура ПолучитьЗапрос()
    ОбъектОбработки=РеквизитФормыВЗначение("Объект");
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |    РеализацияТоваровУслугТовары.Номенклатура,
    |    РеализацияТоваровУслугТовары.Количество,
    |    РеализацияТоваровУслугТовары.Сумма
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |    РеализацияТоваровУслугТовары.Ссылка.Дата >= &Дата";
    
    Запрос.УстановитьПараметр("Дата", ОбъектОбработки.Дата);
    ВыборкаРеализация= Запрос.Выполнить().Выбрать();
    
    Объект.Запрос.Загрузить(ВыборкаРеализация);
    ЗначениеВРеквизитФормы(Объект, "Запрос");
КонецПроцедуры
13 worker-good
 
28.10.14
14:41
(12) + Сделал реквизит внешней обработки под названием "Запрос" типа "ТаблицаЗначений"
14 Enders
 
28.10.14
14:42
(13) а ничего что ВыборкаРеализация= Запрос.Выполнить().Выбрать(); нифига не ТЗ?
15 hhhh
 
28.10.14
14:43
ну вот же

ОбъектОбработки.Запрос.Загрузить(ВыборкаРеализация);
ЗначениеВРеквизитФормы(ОбъектОбработки, "ОБъект");
16 DCKiller
 
28.10.14
14:43
(13) М-да-а...
17 Krolik Bezobraznik
 
28.10.14
14:44
(13) Сделай реквизит формы а не внешней обработки типа ТЗ
18 antotti
 
28.10.14
14:47
Верни структуру, а в структуру тз запхни.
19 worker-good
 
28.10.14
14:49
(17) я делаю все во внешней обработке, и реквизит внешней обработки автоматически стал реквизитом формы http://hkar.ru/w0gR
20 hhhh
 
28.10.14
15:04
(19) тогда вдумчиво читайте (14) и (15). А то что-то в конце процедуры вы откровенно бредите.
21 Drac0
 
28.10.14
15:14
(12) Вот ты сам можешь словами объяснить, что ты делаешь?

1. Тут: " Объект.Запрос.Загрузить(ВыборкаРеализация);"
2. Тут: "ЗначениеВРеквизитФормы(Объект, "Запрос");"
3. и тут: "ТаблицаЗапроса=Объект.Запрос.Выгрузить();"
22 18_plus
 
28.10.14
15:15
(21) кодинг угадыванием
23 worker-good
 
28.10.14
16:34
(20) А как будет выглядеть правильный код?
24 worker-good
 
28.10.14
16:34
(21) Я пытаюсь на клиенте прочитать данные с сервера
25 Drac0
 
28.10.14
16:35
(24) Конкретно скажи, что ты делаешь в указанных строках.
26 worker-good
 
28.10.14
16:37
(25) Пытаюсь передать таблицу значений на клиента и кролик безобразник сказал что так можно если сделать через реквизит формы.
27 Fish
 
28.10.14
16:37
(26) Пост (14) читал? Что можешь сказать по этому поводу?
28 worker-good
 
28.10.14
16:38
(27) Понял)) надо Выгрузить()
29 worker-good
 
28.10.14
16:42
(27) Исправил, все равно ругается "Метод не доступен на клиенте"
30 GreatOne
 
28.10.14
16:46
this (7)
31 worker-good
 
28.10.14
16:48
(30) так (9) сказал что это так обычно и делают!
32 worker-good
 
28.10.14
16:50
Может кто-нибудь код в качестве примера приведет как передать результаты запроса на клиент...
33 Looser-1c
 
28.10.14
16:51
(32) Результатов запроса на клиенте нет. Используй ТЧ обработки
34 worker-good
 
28.10.14
16:52
(33) Так это под каждый запрос на сервере, на клиенте нужно будет создавать свою табличную часть?!
35 Fish
 
28.10.14
16:54
(34) Обрабатывай результат на сервере. Зачем тебе вообще на клиент передавать?
36 GreatOne
 
28.10.14
16:54
(35) ему так сказали.
http://www.ljplus.ru/img4/n/e/nell0/zabor.jpg
37 hhhh
 
28.10.14
16:55
(34) процедура Печать() спокойно на сервере работает.
38 18_plus
 
28.10.14
16:55
(34) facepalm.jpg
зачем? ответь, зачем тебе пихать результаты запросов на клиента?
39 worker-good
 
28.10.14
16:57
(35) А если мне нужно отобразить данные запроса на клиенте, например отчет сделать?
40 hhhh
 
28.10.14
16:58
(39) в типовой 150 отчетов, ни одного на клиенте.
41 МаякНаКазачке
 
28.10.14
17:01
(12) этот запрос, это вообще список, дИнамчскЫй
42 scanduta
 
28.10.14
17:02
(39) Формируй на сервере ТабДок и его передавай на клиент а там выводи
43 Fish
 
28.10.14
17:05
(39) Отчёты ДЕЛАЮТ на сервере, на клиенте их только отображают.
44 worker-good
 
28.10.14
17:08
(43) Ну отобразить можно только на клиенте, а для этого надо их передать с сервера на клиент, как отобразить того чего нет?
45 Looser-1c
 
28.10.14
17:09
(44) "отобразить можно только на клиенте"
Зато на сервере можно софрмировать печатную форму, которую можно вернуть клиенту, который потом ей покажет. В доме, что построил Джек.
46 Fish
 
28.10.14
17:11
(44) Ну так и передавай то, что тебе надо отобразить, т.е. табличный документ. А результат запроса передавать ни к чему.
47 Мыш
 
28.10.14
17:15
(45) (46) Не указывайте творцу, что ему делать! Он так видит! )
48 worker-good
 
28.10.14
17:17
(47) Действительно смешно, палюсь на работе со своим смехом)
49 Zhuravlik
 
28.10.14
17:32
(0) На клиенте не существует типа "ТаблицаЗначений". Но на клиенте существует тип "ДанныеФормыКоллекция". Удобнее делать реквизит формы, типа "ТаблицаЗначений", и видеть его "&НаКлиенте" как "ДанныеФормыКоллекция". По методам он практически не уступает ТЗ. Различия только в методе "Найти", почему-то на клиенте его нет, но есть "НайтиЗначения". Реквизит формы удобнее тем, что не приходится писать Объект.<ИмяМоейТЗ>.
Хранилище нужно (только?) для того, чтобы &НаСервере видеть глоб. переменные. Так как между серверными вызвами они очищаются.
Ну а результаты запроса - на клиенте попросту недоступны, и ответ на (0) - никак) Только &НаСервере выгрузить в таблицу значений, которая (повторюсь) будет на клиенте  иметь тип "ДанныеФормыКоллекция".
50 worker-good
 
28.10.14
17:39
(49) Спасибо за развернутый ответ, все понятно стало)
51 worker-good
 
31.10.14
12:09
(49) А как &НаСервере выгрузить в таблицу значений, которая (повторюсь) будет на клиенте  иметь тип "ДанныеФормыКоллекция", можно привести небольшой пример в виде, у меня что-то не получается передать
52 Krolik Bezobraznik
 
31.10.14
12:25
(51) А для чего? Расскажите как вы планируете ее использовать на стороне колента?
53 Krolik Bezobraznik
 
31.10.14
12:25
(51) *клиента
54 worker-good
 
31.10.14
12:54
(52) Ну просто выводить в виде отчета например
55 Krolik Bezobraznik
 
31.10.14
13:36
(54) ну так сделай ТЧ, заполняй ее и выводи в виде отчета
56 worker-good
 
31.10.14
16:56
(55) Получиться-то получилось, но если надо будет 10 запросов передать на клиента надо заводить 10 ТЧ?
57 Локи-13
 
31.10.14
17:05
что за сатанизм в топике?

(45) правильный ответ. тему можно закрывать.
58 Mankubus
 
31.10.14
17:05
(56) надо придумать алгоритм без необходимости такой передачи
59 worker-good
 
31.10.14
17:21
(57) >> Зато на сервере можно софрмировать печатную форму, которую можно вернуть клиенту, который потом ей покажет.
Можно посмотреть как это в коде будет выглядеть
60 worker-good
 
31.10.14
17:22
(59) +?
61 worker-good
 
31.10.14
17:22
(58) Я вот ищу по интернету и никто кроме ТЧ ничего предложить не может
62 ДенисЧ
 
31.10.14
17:24
(59)
&НаСервере
Функция ВернутьТабДок()
  табДок = Новый ТабличныйДокумент;
  макет = ПолучиьтОбщийМакет("МойМакет");
  табДок.Вывести(макет);
  Возврат ТабДок;
КонецФункции

&НаКлиенте
Процедура ПоКнопке()
  табДок = ВернутьТабДок();
  табДок.Показать();
КОнецПРоцедуры
63 DexterMorgan
 
31.10.14
17:27
Да это просто пипец таащи, а еще обижаются что 1сников тупыми считают..
64 worker-good
 
31.10.14
17:29
(62) Спасибо за код)
65 Drac0
 
31.10.14
17:29
(61) Варианта три: ТЧ, Табличный документ и их вариации ,например, СКД. Все это здесь прозвучало. Что ты еще хочешь получить?
66 Drac0
 
31.10.14
17:29
(62) Он же сейчас будет жаловаться, что проверка выдает синтаксические ошибки...
67 ДенисЧ
 
31.10.14
17:30
(66) Где??
68 Euguln
 
31.10.14
17:31
(67) Ошибка при получении макета "МойМакет" ))
69 ДенисЧ
 
31.10.14
17:32
(68) А у меня такой есть. Так что это не ошибка ))
70 GreatOne
 
31.10.14
17:36
(69) Метод объекта не обнаружен "ПолучиьтОбщийМакет"
71 GreatOne
 
31.10.14
17:37
(70) ой не, функция не определена, во.
72 ДенисЧ
 
31.10.14
17:41
(70) А, ну это да, сложно без контекстной подсказки набивать )))
73 worker-good
 
31.10.14
17:57
Шутники)