|
с сервера на клиент неправильно передается результат запроса | ☑ | ||
---|---|---|---|---|
0
Neznayka_5
17.08.12
✎
11:13
|
У меня запрос выполняется на сервере, и результатом функции передается на клиент. При передаче видимо что-то не то происходит, и, хотя сервер выполняет запрос правильно, на клиенте он принимается уже не таким, какой должен быть. Может кто знает, как избежать этого?
|
|||
1
Капитан О
17.08.12
✎
11:14
|
а что передаётся? тонкий с ТЗ не знаком
|
|||
2
Neznayka_5
17.08.12
✎
11:15
|
(1) на сервере пишу так:
Возврат Запрос.Выполнить(); |
|||
3
Капитан О
17.08.12
✎
11:18
|
(2) тоже на тонком недоступен... что ты хочешь от клиента? запрос - серверная вещь
|
|||
4
andrewks
17.08.12
✎
11:19
|
происки Нуралиева, инфа 146%.
давай больше инфы |
|||
5
Жан Пердежон
17.08.12
✎
11:21
|
РезультатЗапроса (QueryResult)
... Доступность: Сервер, толстый клиент, внешнее соединение. Возможен обмен с сервером. Сериализуется. |
|||
6
Neznayka_5
17.08.12
✎
11:21
|
наверное не так написала. я в общем модуле, привилегированном пишу функцию (2 параметра - структурой передаю параметры запроса, а вторым параметром, строкой - текст запроса) Там заполняю параметры, выполняю запрос.
Функция ВернутьРезультатЗапроса(СтруктураПараметров,ТекстЗапроса) Экспорт Запрос = Новый Запрос; Для каждого Параметр Из СтруктураПараметров Цикл Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение); КонецЦикла; Запрос.Текст = ТекстЗапроса; Возврат Запрос.Выполнить(); КонецФункции в потом во внешнем отчете ее использую. |
|||
7
Wobland
17.08.12
✎
11:22
|
(6) логику меняй. спросил же: чего ты хочешь от клиента?
|
|||
8
Neznayka_5
17.08.12
✎
11:23
|
(7)
ВыборкаДетали = ДополнительныйМодульПривилегированный.ВернутьРезультатЗапроса(СтруктураПараметров,Текст); Пока ВыборкаДетали.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень()); КонецЦикла; ТабДокумент.ЗакончитьАвтогруппировкуСтрок(); ТабДокумент.ПоказатьУровеньГруппировокСтрок(0); ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.Защита = Истина; ТабДокумент.ТолькоПросмотр = Истина; Возврат ТабДокумент; Хочу чтоб по группировкам выдавался результат запроса |
|||
9
Wobland
17.08.12
✎
11:25
|
(8) Выбрать() забыла, но это неважно
|
|||
10
UnAmerican
17.08.12
✎
11:26
|
Итоги делай, будут группировки.
|
|||
11
Wobland
17.08.12
✎
11:26
|
(8) заполняй свой ТабДок на сервере весь и отдавай уже готовый клиенту
|
|||
12
Neznayka_5
17.08.12
✎
11:29
|
(11) сейчас так и хочу сделать. получается следующее:
в функции на клиенте пишу: Возврат Запрос.Выполнить().Выгрузить(); в отчете: ВыборкаДетали = ДополнительныйМодульПривилегированный.ВернутьРезультатЗапроса(СтруктураПараметров,Текст); Для каждого Строка Из ВыборкаДетали Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока); КонецЦикла; ТабДокумент.ЗакончитьАвтогруппировкуСтрок(); ТабДокумент.ПоказатьУровеньГруппировокСтрок(0); ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.Защита = Истина; ТабДокумент.ТолькоПросмотр = Истина; Возврат ТабДокумент; Выводит пустую таблицу |
|||
13
Wobland
17.08.12
✎
11:32
|
(12) ещё раз: заполняй свой ТабДок на сервере весь и отдавай уже готовый клиенту
|
|||
14
Neznayka_5
17.08.12
✎
11:36
|
(13) это же не универсально? я нашла, почему таблица пустая. в цикле
Для каждого Строка Из ВыборкаДетали Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока); КонецЦикла; нужно написать ...Запролнить(Строка) Сейчас все выводит, но без возможности свернуть таблицу. Есть способы это реализовать? |
|||
15
Wobland
17.08.12
✎
11:36
|
начать автогруппировку, вывести на нужном уровне...
|
|||
16
Neznayka_5
17.08.12
✎
11:38
|
(15)
ТабДокумент.НачатьАвтогруппировкуСтрок(); ВыборкаДетали = ДополнительныйМодульПривилегированный.ВернутьРезультатЗапроса(СтруктураПараметров,Текст); Для каждого Строка Из ВыборкаДетали Цикл ОбластьСтрока.Параметры.Заполнить(Строка); ТабДокумент.Вывести(ОбластьСтрока), !!! а что здесь написать вместо: ВыборкаДетали.Уровень()); ??? КонецЦикла; ТабДокумент.ЗакончитьАвтогруппировкуСтрок(); ТабДокумент.ПоказатьУровеньГруппировокСтрок(0); |
|||
17
Wobland
17.08.12
✎
11:39
|
(16) некое число
|
|||
18
Wobland
17.08.12
✎
11:40
|
за умеренную плату могу даже подсказать, где это в СП написано, пока ДенисЧ не прибежал
|
|||
19
UnAmerican
17.08.12
✎
11:41
|
Или делай так:
ВыборкаДетали = ДополнительныйМодульПривилегированный.ВернутьРезультатЗапроса(СтруктураПараметров,Текст).выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДетали.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень()); Выборка...=выбрать(ОбходРезультатаЗапроса.ПоГруппировкам Пока Выборка...Следующий() Цикл КонецЦикла; КонецЦикла; |
|||
20
Neznayka_5
17.08.12
✎
11:43
|
(19) это мне не подходит, тк нужно на сервере выгружать запрос иначе он каверкается.
(18) , (17) это я ввожу число, но плюсиков слева не получается. |
|||
21
Wobland
17.08.12
✎
11:52
|
Уровень используется для автоматической группировки строк табличного документа. Соседние строки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
боюсь соврать, но, наверное, нужно шапку на одном уровне выводить, а строки на другом |
|||
22
Neznayka_5
17.08.12
✎
11:57
|
(21) не совсем поняла как это
|
|||
23
Wobland
17.08.12
✎
12:05
|
(22) смысла не вижу в ТабДоке, в котором вся таблица сворачивается в плюсик...
шапку выводишь на 1м уровне, строки - на 2м. как-то так |
|||
24
Neznayka_5
17.08.12
✎
12:06
|
все бы ничего, но у меня 4 уровня)
|
|||
25
Wobland
17.08.12
✎
12:08
|
(24) и плюсика нет? не верю
|
|||
26
Wobland
17.08.12
✎
12:09
|
код покажи. надо обходить результат запроса по группировкам
|
|||
27
Neznayka_5
17.08.12
✎
12:10
|
если я буду по группировкам, то это дерево значений, а оно не передается с сервера на клиент
(26) какой именно? |
|||
28
Wobland
17.08.12
✎
12:10
|
(27) я тебе что сказал? марш всё делать на сервер!
|
|||
29
Neznayka_5
17.08.12
✎
12:13
|
(28) эхх.. видимо придется(
|
|||
30
Wobland
17.08.12
✎
12:14
|
(29) 47 минут. неплохой результат
|
|||
31
Neznayka_5
17.08.12
✎
12:14
|
(30) я кстати сейчас еще столкнусь с одной проблемой..
|
|||
32
Neznayka_5
17.08.12
✎
12:16
|
(30) вот) теперь так на сервере выглядит.
Функция ВернутьРезультатЗапроса(СтруктураПараметров,ТекстЗапроса) Экспорт Запрос = Новый Запрос; Для каждого Параметр Из СтруктураПараметров Цикл Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение); КонецЦикла; Запрос.Текст = ТекстЗапроса; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.НачатьАвтогруппировкуСтрок(); ВыборкаДетали = Запрос.Выполнить().Выбрать(); Пока ВыборкаДетали.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень()); КонецЦикла; ТабДокумент.ЗакончитьАвтогруппировкуСтрок(); ТабДокумент.ПоказатьУровеньГруппировокСтрок(0); Возврат ТабДокумент; КонецФункции а что делать с : ОбластьСтрока?? Можно вместо нее написать ТабДокумент? |
|||
33
Wobland
17.08.12
✎
12:17
|
(32) ТабДокумент=Новый ТабличныйДокумент и всё прочее тоже на сервере сделай
|
|||
34
Wobland
17.08.12
✎
12:18
|
(33) тфу, не заметил. ОбластьСтрока=ТабДок.ПолучитьОбласть(). а ты что думала?
|
|||
35
sanja26
17.08.12
✎
12:19
|
(31) все на сервере делай, правильно тебе говорят. С клиента параметры передавай и ТабДок.Показать()
|
|||
36
Neznayka_5
17.08.12
✎
12:20
|
(34) ага, это сделала. на клиенте нужно это вывести в макет (в котором, помимо этого ТабДок-та есть еще данные)
|
|||
37
sanja26
17.08.12
✎
12:21
|
так ты ТабДок с предваиртельными данными тоже на сервер передавай вначале
|
|||
38
sanja26
17.08.12
✎
12:22
|
ТабДокумент придется таскать по всем процедурам как параметр, так как переменные модуля объекта засада та еще
|
|||
39
Neznayka_5
17.08.12
✎
12:25
|
ой ппц, как все сложно..
|
|||
40
Wobland
17.08.12
✎
12:25
|
(36) не нужно тебе на клиенте всё в макет выводить, у клиента простая задача: работать интерфейсом
|
|||
41
UnAmerican
17.08.12
✎
12:29
|
(40) На клиенте только вывести(). Обходить все группировки и вывод в макет на сервере.
|
|||
42
Neznayka_5
17.08.12
✎
12:29
|
(40) у меня все на Слава Богу..
{ВнешнийОтчет.ОтчетМатериалыВЭксплуатацию.МодульОбъекта(101)}: Ошибка при вызове метода контекста (ВернутьРезультатЗапроса) Результат = ДополнительныйМодульПривилегированный.ВернутьРезультатЗапроса(СтруктураПараметров,Текст,ТабДокумент); по причине: Попытка передачи с клиента на сервер мутабельного значения 3-го параметра метода ВернутьРезультатЗапроса (). |
|||
43
Neznayka_5
17.08.12
✎
12:29
|
такая функция:
Функция ВернутьРезультатЗапроса(СтруктураПараметров,ТекстЗапроса,ТабДокумент) Экспорт Запрос = Новый Запрос; Для каждого Параметр Из СтруктураПараметров Цикл Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение); КонецЦикла; Запрос.Текст = ТекстЗапроса; ТабДокумент.НачатьАвтогруппировкуСтрок(); ВыборкаДетали = Запрос.Выполнить().Выбрать(); ОбластьСтрока=ТабДокумент.ПолучитьОбласть(); Пока ВыборкаДетали.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень()); КонецЦикла; ТабДокумент.ЗакончитьАвтогруппировкуСтрок(); ТабДокумент.ПоказатьУровеньГруппировокСтрок(0); ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.Защита = Истина; ТабДокумент.ТолькоПросмотр = Истина; Возврат ТабДокумент; КонецФункции |
|||
44
Wobland
17.08.12
✎
12:31
|
(42) как вызываешь? сдаётся мне, какую-то ересь хочешь
|
|||
45
Wobland
17.08.12
✎
12:32
|
плюсики-то появились? а то .Выбрать(ОбходРезультата...) бы ещё
|
|||
46
UnAmerican
17.08.12
✎
12:32
|
ТабДокумент где создаешь? Он походу не типизирован.
|
|||
47
UnAmerican
17.08.12
✎
12:32
|
(45) Ошибка при передачи на клиент, какие плюсики :-)
|
|||
48
Neznayka_5
17.08.12
✎
12:32
|
ну я кажется поняла.
так вызываю: Результат = ДополнительныйМодульПривилегированный.ВернутьТабличныйДокумент(СтруктураПараметров, Текст, ТабДокумент); а на клиенте до этого: ТабДокумент = Новый ТабличныйДокумент; ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Отчет"; Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ТабДокумент.Вывести(ОбластьШапка); Видимо я область ОбластьСтрока дважды создаю, да? |
|||
49
Wobland
17.08.12
✎
12:33
|
(48) нет, это разные переменные.
на зачем ТабДок на клиенте? |
|||
50
UnAmerican
17.08.12
✎
12:34
|
(48) Не передавай ты табдок, а создавай на сервере и возвращай в клиент.
|
|||
51
UnAmerican
17.08.12
✎
12:35
|
А так понятно, пришла ересь на сервер, обрабатывается как табдок, а вот при возврате получаем мутабельный типзнч.
|
|||
52
Wobland
17.08.12
✎
12:36
|
(50) ничего, скоро она достигнет просветления, и следующие темы станут более серьёзными ;)
|
|||
53
sanja26
17.08.12
✎
12:37
|
Макет = ПолучитьМакет("Макет");
это работает на клиенте? |
|||
54
Neznayka_5
17.08.12
✎
12:38
|
(53) я хочу, чтоб это работало на клиенте
|
|||
55
UnAmerican
17.08.12
✎
12:38
|
(53)
Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
56
UnAmerican
17.08.12
✎
12:39
|
(53) Тонкого нет.
|
|||
57
sanja26
17.08.12
✎
12:40
|
(56) так и я о том же)
(54) хоти, но такого неттт |
|||
58
sanja26
17.08.12
✎
12:41
|
(54)это все на сервер
ТабДокумент = Новый ТабличныйДокумент; ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Отчет"; Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ТабДокумент.Вывести(ОбластьШапка); |
|||
59
Wobland
17.08.12
✎
12:42
|
(54) повторить?
|
|||
60
Neznayka_5
17.08.12
✎
12:42
|
{ОбщийМодуль.ДополнительныйМодульПривилегированный.Модуль(14,10)}: Процедура или функция с указанным именем не определена (ПолучитьМакет)
Макет = <<?>>ПолучитьМакет("Макет"); (Проверка: Толстый клиент (обычное приложение)) Макет параметром передать7?? |
|||
61
Лоботряс
17.08.12
✎
12:43
|
(54) Если человек чего-то действительно хочет, то он обязательно этого добьется. Вариант - написать Б.Н. 100 000 писем "Я хочу чтобы ПолучитьМакет("Макет") работало в тонком клиенте. Сделайте,пожалуйста".
|
|||
62
sanja26
17.08.12
✎
12:45
|
(60)так у тебя обычное приложение? и чего мозги тогда пудрить??
|
|||
63
Neznayka_5
17.08.12
✎
12:47
|
(62) а я это знала?)
|
|||
64
Neznayka_5
17.08.12
✎
12:47
|
(62) что тогда делать?
|
|||
65
sanja26
17.08.12
✎
12:48
|
(42) а это откуда тогда выплыло?
Попытка передачи с клиента на сервер мутабельного значения 3-го параметра метода ВернутьРезультатЗапроса (). |
|||
66
sanja26
17.08.12
✎
12:48
|
какая конфигурация?
|
|||
67
Wobland
17.08.12
✎
12:48
|
Клиент: о могучий сервер! молю тебя, дай мне ТабДок! /*ТабДок=СервернаяФункцияФормированияТабДока()*/
Сервер: возьми его! /*Возврат ТабДок*/ Клиент: благодарю тебя, великий сервер! сейчас я его покажу юзеру /*ТабДок.Показать()*/ |
|||
68
Neznayka_5
17.08.12
✎
12:48
|
упп 1.3. и сейчас тоже такое было
|
|||
69
sanja26
17.08.12
✎
12:50
|
тогда забей на такое слово как сервер))
старайся делать запросы и расчеты в модуле объекта и все |
|||
70
Wobland
17.08.12
✎
12:50
|
что, уже внезапно обычное приложение? вот коварная женщина!
|
|||
71
sanja26
17.08.12
✎
12:51
|
выкладывай код весь, без лишних расчетов
|
|||
72
Neznayka_5
17.08.12
✎
12:52
|
да нееет, вы не поняли. мне надо привилигерованном режиме обязательно
|
|||
73
Neznayka_5
17.08.12
✎
12:52
|
Функция ВернутьТабличныйДокумент(СтруктураПараметров,ТекстЗапроса) Экспорт
Запрос = Новый Запрос; Для каждого Параметр Из СтруктураПараметров Цикл Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение); КонецЦикла; Запрос.Текст = ТекстЗапроса; //Возврат Запрос.Выполнить().Выбрать(); ТабДокумент = Новый ТабличныйДокумент; ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Отчет"; Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ТабДокумент.Вывести(ОбластьШапка); ТабДокумент.НачатьАвтогруппировкуСтрок(); ВыборкаДетали = Запрос.Выполнить().Выбрать(); ОбластьСтрока=ТабДокумент.ПолучитьОбласть(); Пока ВыборкаДетали.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали); ТабДокумент.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень()); КонецЦикла; ТабДокумент.ЗакончитьАвтогруппировкуСтрок(); ТабДокумент.ПоказатьУровеньГруппировокСтрок(0); ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.Защита = Истина; ТабДокумент.ТолькоПросмотр = Истина; Возврат ТабДокумент; КонецФункции это на сервере |
|||
74
Wobland
17.08.12
✎
12:53
|
что такое привелигированный режим?
|
|||
75
Wobland
17.08.12
✎
12:53
|
(74) виле, конечно
|
|||
76
sanja26
17.08.12
✎
12:55
|
(73) каком нафик сервере?!!! не путай людей
какая ошибка? |
|||
77
Лоботряс
17.08.12
✎
12:55
|
(75) это когда на мерсе с мигалкой по встречке
|
|||
78
sanja26
17.08.12
✎
12:57
|
(73) это функция модуля объекта?
|
|||
79
Neznayka_5
17.08.12
✎
12:57
|
{ВнешнийОтчет.ОтчетМатериалыВЭксплуатацию.МодульОбъекта(101)}: Ошибка при вызове метода контекста (ВернутьТабличныйДокумент)
Результат = ДополнительныйМодульПривилегированный.ВернутьТабличныйДокумент(СтруктураПараметров, Текст); по причине: Попытка передачи мутабельного значения результата метода ВернутьТабличныйДокумент (). |
|||
80
Wobland
17.08.12
✎
12:57
|
(78) имхается мне, она сервером называет общий модуль
|
|||
81
Neznayka_5
17.08.12
✎
12:58
|
(80) да!)
|
|||
82
sanja26
17.08.12
✎
12:58
|
(78) + если вызываешь в каком общем модуле, то надо
ТвойДокИлиОтчет.ПолучитьМакет("Макет") |
|||
83
Wobland
17.08.12
✎
12:59
|
(81) отличная пятница получается!
|
|||
84
Neznayka_5
17.08.12
✎
13:00
|
(82) Он внешний мой отчет. это ничего?
|
|||
85
Wobland
17.08.12
✎
13:01
|
(79) плин, не вижу никакой мутабельности..
|
|||
86
Wobland
17.08.12
✎
13:01
|
(84) ну получи макет в "клиенте" и передай параметром...
|
|||
87
sanja26
17.08.12
✎
13:04
|
(84)у внешнего отчета есть модуль объекта, в нем и делай епт
(85) пятница!!!111 |
|||
88
Neznayka_5
17.08.12
✎
13:04
|
(86) {ВнешнийОтчет.ОтчетМатериалыВЭксплуатацию.МодульОбъекта(101)}: Ошибка при вызове метода контекста (ВернутьТабличныйДокумент)
Результат = ДополнительныйМодульПривилегированный.ВернутьТабличныйДокумент(СтруктураПараметров, Текст, Макет); по причине: Попытка передачи с клиента на сервер мутабельного значения 3-го параметра метода ВернутьТабличныйДокумент (). |
|||
89
sanja26
17.08.12
✎
13:06
|
(88) пистец...
Функция ВернутьТабличныйДокумент(СтруктураПараметров,ТекстЗапроса) Экспорт там 2 параметра зачем при вызове пихать три |
|||
90
Wobland
17.08.12
✎
13:06
|
плин, а на хрена общий модуль напрягать? ваще зачем эта функция там? вынеси всё в модуль объекта
|
|||
91
Neznayka_5
17.08.12
✎
13:06
|
(89) так макет же..
|
|||
92
Wobland
17.08.12
✎
13:07
|
понаделают кучу функций, потом сами разобраться не могут
|
|||
93
Neznayka_5
17.08.12
✎
13:07
|
(91) потому что у пользователя нет прав.
|
|||
94
UnAmerican
17.08.12
✎
13:10
|
А РЛС причем тут?
|
|||
95
sanja26
17.08.12
✎
13:10
|
(91) Функция ВернутьТабличныйДокумент(СтруктураПараметров,ТекстЗапроса, мойМакет) Экспорт
ТабДокумент = Новый ТабличныйДокумент; ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Отчет"; Макет = МойМакет; |
|||
96
UnAmerican
17.08.12
✎
13:11
|
Я вообще думал о теме отчета на веб-морде.
|
|||
97
Wobland
17.08.12
✎
13:12
|
(96) Незнайка нас всех налюбила ;)
|
|||
98
Neznayka_5
17.08.12
✎
13:13
|
что за вообще эти мутабельные значения?
|
|||
99
Wobland
17.08.12
✎
13:14
|
(98) могущие принимать значения разных типов
|
|||
100
sanja26
17.08.12
✎
13:14
|
для данного случая - парметр передаешь, которого не должно быть
|
|||
101
Neznayka_5
17.08.12
✎
13:15
|
странно. вроде таб. документ можно передавать..
|
|||
102
Wobland
17.08.12
✎
13:20
|
эх, сотню про..пустили
СТО ДВА! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |