|
передача результат запроса на клиент | ☑ | ||
---|---|---|---|---|
0
Kurbash
06.05.14
✎
14:38
|
ситуация такая: создаю документ, командой посылаю на сервер ссылку на него. На сервере выполняется запрос, который возвращает нужные мне данные, которые должны потом занестись в ТЧ документа. хочу сделать выполнение запроса функцией на сервере, которая вернет на клиент результат запроса типа Выполнить().Выгрузить(), т.е. на клиенте у меня будет т=запроснасервере(); не канает пишет ошибку. что не так делаю?
|
|||
1
ДенисЧ
06.05.14
✎
14:39
|
На клиенте не существует ТЗ...
|
|||
2
Ненавижу 1С
гуру
06.05.14
✎
14:39
|
заполняй ТЧ непосредственно на сервере
|
|||
3
Kurbash
06.05.14
✎
14:39
|
блин..че делать тогда...
|
|||
4
Kurbash
06.05.14
✎
14:39
|
через получитьОбъект()?
|
|||
5
H A D G E H O G s
06.05.14
✎
14:40
|
Верни Массив Структур
|
|||
6
H A D G E H O G s
06.05.14
✎
14:40
|
Выборка=Запрос.Выполнить().Выбрать();
МассивВозврата=Новый Массив; Пока Выборка.Следующий() Цикл СтруктураВозврата=Новый Структура; СтруктураВозврата.Вставить("Ссылка",Выборка.Ссылка); СтруктураВозврата.Вставить("Представление",Выборка.Представление); СтруктураВозврата.Вставить("КПП",Выборка.КПП); МассивВозврата.Добавить(СтруктураВозврата); КонецЦикла; Возврат МассивВозврата; |
|||
7
VikingKosmo
06.05.14
✎
14:41
|
(3) внимательно читать (2)
|
|||
8
Kurbash
06.05.14
✎
14:51
|
Попробовал-пишет что Нельзя изменять поле, содержащее объект данных формы
|
|||
9
Рэйв
06.05.14
✎
14:54
|
(8)Получи из объекта формы просто нормальный объект, измени и положит где взял.
|
|||
10
Kurbash
06.05.14
✎
14:58
|
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент) НоменклатураПриИзмененииНаСервере(Объект); прочитать(); КонецПроцедуры &НаСервереБезКонтекста Процедура НоменклатураПриИзмененииНаСервере(док) Запрос=новый запрос; ...текст запроса результат=запрос.Выполнить().Выбрать(); пока результат.Следующий() цикл тч=док.ТЧ.добавить(); ...тра та та конеццикла; КонецПроцедуры |
|||
11
Kurbash
06.05.14
✎
14:58
|
где ошибка?
|
|||
12
DmitrO
06.05.14
✎
15:00
|
контектсный метод вам поможет )
|
|||
13
Рэйв
06.05.14
✎
15:01
|
(10)>>НаСервереБезКонтекста - Это на кой? Формы же в этом случае нет
|
|||
14
DmitrO
06.05.14
✎
15:01
|
&НаСервере
Процедура НоменклатураПриИзмененииНаСервере() Запрос=новый запрос; ...текст запроса Объект.ТЧ.Загрузить(запрос.Выполнить().Выгрузить()); КонецПроцедуры |
|||
15
Рэйв
06.05.14
✎
15:02
|
(14)Вот щас помоему как раз и ругнется как сабже:-)
|
|||
16
DexterMorgan
06.05.14
✎
15:03
|
(8) ЗначениеВРеквизитФормы
|
|||
17
Kurbash
06.05.14
✎
15:03
|
(16)-чего туда пихнуть?
|
|||
18
DexterMorgan
06.05.14
✎
15:04
|
(6) извращенец
|
|||
19
Kurbash
06.05.14
✎
15:06
|
(14) не канает
|
|||
20
Рэйв
06.05.14
✎
15:06
|
(17)
Об=РеквизитФормыВЗначение("Объект"); //меняем об как объект ЗначениеВРеквизитФормы(Об,"Объект"); |
|||
21
Kurbash
06.05.14
✎
15:07
|
(20)-я просмто не понимаю как это использовать можно
|
|||
22
Рэйв
06.05.14
✎
15:07
|
(21)Объект на форме - это просто определенная структура с полями объекта.Напрямую ее на сервере менять нельзя, поэтому надо создавать нормальный человеческий объект
|
|||
23
DexterMorgan
06.05.14
✎
15:08
|
(19) гонишь, так тоже можно
|
|||
24
Рэйв
06.05.14
✎
15:08
|
в потом пихать его в форму обратно
|
|||
25
DmitrO
06.05.14
✎
15:08
|
(19)что не канает-то? исходя из (10) все должно канать.
|
|||
26
H A D G E H O G s
06.05.14
✎
15:09
|
(18) Это в 100500 раз лучше в 80%
|
|||
27
Рэйв
06.05.14
✎
15:11
|
(18)Очень удобно у меня даже функция написана на это дело
Функция РазложитьТЗ(ТЗ) Экспорт мТЗ=Новый Массив; Для каждого Стр Из ТЗ Цикл струкСтрока=Новый Структура; Для каждого Кол Из ТЗ.Колонки Цикл СтрукСтрока.Вставить(Кол.Имя,Стр[Кол.Имя]); КонецЦикла; мТЗ.Добавить(струкСтрока); КонецЦикла; Возврат мТЗ КонецФункции |
|||
28
Рэйв
06.05.14
✎
15:11
|
+удобно еще тем, что потом перебирается это дело как обычная ТЗ
|
|||
29
Kurbash
06.05.14
✎
15:13
|
(25)-что интересно работает, но опять же пишет что Нельзя изменять поле, содержащее объект данных формы, но строки добавляются
|
|||
30
DmitrO
06.05.14
✎
15:17
|
(29) чета ты темнишь.. на какую именно строку так пишет?
|
|||
31
Kurbash
06.05.14
✎
15:18
|
(30)-сейчас отловлю
|
|||
32
Господин ПЖ
06.05.14
✎
15:18
|
массив можно, тз нельзя - в чем сила?
|
|||
33
Kurbash
06.05.14
✎
15:19
|
НоменклатураПриИзмененииНаСервере(Объект);
|
|||
34
Kurbash
06.05.14
✎
15:19
|
нажимаю на закрыть при ошибке-все нормально
|
|||
35
DmitrO
06.05.14
✎
15:24
|
(32) подозреваю что сила только в лени. ТЗ объект сложный, добавление/удаление колонок, индексы опять же.. Свернуть()..
сравнение значений.. не охота им его делать чтобы еще и в веб-клиенте это все работало.. |
|||
36
DmitrO
06.05.14
✎
15:25
|
(33) да штожтакоета!.. А у меня как написано? Есть в моем коде этот формальный параметр (Объект)?
|
|||
37
Господин ПЖ
06.05.14
✎
15:27
|
(35) ну тз можно представить как набор массивов... есть система DocVision там "табличных частей" нет официально, а то что есть как раз массив массивов
|
|||
38
Рэйв
06.05.14
✎
15:30
|
(37)Да это все на массивах построено. Просто классы написаны по разному и методы в классах для приватных массивов разнае.
|
|||
39
DexterMorgan
06.05.14
✎
15:48
|
(28) зачем это делать на клиенте?
|
|||
40
DexterMorgan
06.05.14
✎
15:50
|
(26) гы, чем лучше то
|
|||
41
H A D G E H O G s
06.05.14
✎
17:04
|
(35) Ты не поверишь :-)
|
|||
42
Zhuravlik
06.05.14
✎
17:32
|
(41) А так быстрее? У 1С в методических рекомендациях на ИТС сказано, что так делать не рекомендуется, а почему - не сказано (из-за производительности или читаемости).
|
|||
43
H A D G E H O G s
06.05.14
✎
17:33
|
(42) Это я к тому, что ТЗ вполне себе реализовано на Клиенте, даже формочка выбора элемента есть :-)
|
|||
44
Zhuravlik
06.05.14
✎
17:54
|
(43) Ну да, как ДанныеФормыКоллекция, она позволяет те же самые операции сделать что и тз.
Я имел в виду про массив структур (к (26)) - не нашел сейчас статью на итс, но точно помню слова "Не рекомендуется") Уже давно привык что 1С - это сплошной костыль, очень много "нюансов". Интересно просто, чем именно это по-вашему лучше? по производительности, или по другим соображениям? |
|||
45
hhhh
06.05.14
✎
18:01
|
(44) сделайте реквизит на форме типа таблица значений, с ним и работайте. Оно прекрасно работает. Вот на фига вам голову себе забивать всякими коллекциями.
|
|||
46
Zhuravlik
06.05.14
✎
18:47
|
(45) "реквизит на форме типа таблица значений" - оно и есть "ДанныеФормыКоллекция" =)
Я понять хочу, почему утверждается опытным специалистом, что массив структур - "Это в 100500 раз лучше в 80%" чем "ЗначениеВРеквизитФормы" (26). |
|||
47
Serginio1
06.05.14
✎
18:57
|
(27) ОбщегоНазначения
Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт Массив = Новый Массив(); СтруктураСтрокой = ""; НужнаЗапятая = Ложь; Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл Если НужнаЗапятая Тогда СтруктураСтрокой = СтруктураСтрокой + ","; КонецЕсли; СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя; НужнаЗапятая = Истина; КонецЦикла; Для Каждого Строка Из ТаблицаЗначений Цикл НоваяСтрока = Новый Структура(СтруктураСтрокой); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); Массив.Добавить(НоваяСтрока); КонецЦикла; Возврат Массив; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |