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

Передать ТЗ с сервера на клиент

Передать ТЗ с сервера на клиент
Я
   bebibo
 
23.10.20 - 08:06
Всем здравствуйте!
Как будет правильнее передать ТЗ на клиент?
Мне нужно заполнить табличную часть документа по кнопке на форме.
Нажимаю кнопку, выполняется запрос, загружаются данные в ТЧ.
Вот запрос выполняется на сервере, как ПРАВИЛЬНЕЕ мне результат этого запроса передать обратно на клиент и заполнить им мою табличную часть?)
   BalBess
 
1 - 23.10.20 - 08:11
(0) передавать не нужно, нужно сразу заполнять табличную часть, на сервере
   bebibo
 
2 - 23.10.20 - 08:16
(1) Так ТЧ же на форме - значит это клиент. Как заполнить её на сервере?
   BalBess
 
3 - 23.10.20 - 08:23
(2) ТЧ на форме просто отображает данные, которые хранятся на сервере
примерно так    
МояФорма=РеквизитФормыВЗначение("Объект");
МояФорма.МояТЧ.Загрузить(Запрос.Выполнить().Выгрузить());
ЗначениеВРеквизитФормы(МояФорма, "Объект");
   bebibo
 
4 - 23.10.20 - 08:31
(3) Спасибо, я попробую.
   bebibo
 
5 - 23.10.20 - 08:55
А отбор можно как то в ней сделать перед загрузкой?
   bebibo
 
6 - 23.10.20 - 08:56
Думаю использовать НайтиСтроки() - но возвратит массив..А не ТЗ
   BalBess
 
7 - 23.10.20 - 09:00
(5) отбор лучше делать сразу в запросе
а вообще
мояТЗ = Запрос.Выполнить().Выгрузить();
мояТЗ.Отобрать();
МояФорма.МояТЧ.Загрузить(мояТЗ);
   МимохожийОднако
 
8 - 23.10.20 - 09:02
(7) Метод Отобрать() мне нравится
   fisher
 
9 - 23.10.20 - 09:02
(6) У метода Скопировать() есть вариант вызова со структурой отбора - вернет копию таблицы со строками отвечающими фильтру. Или еще в запросе фильтровать.
Судя по теме, ты новичок в УФ. Рекомендую к прочтению: http://catalog.mista.ru/1c/articles/198766/
Только читать лучше на инфостарте - там оформление более читабельное.
   bebibo
 
10 - 23.10.20 - 09:19
А теперь я передаю "ВладелецФормы.Объект" с клиента в серверную процедуру, ругается:
Ошибка при установке значения атрибута контекста
по причине:
Нельзя изменять поле, содержащее объект данных формы
- это из-за того, что надо ссылку передавать? Если да, то как мне её получить?
   BalBess
 
11 - 23.10.20 - 09:30
(9) >> есть вариант вызова со структурой отбора
как отобрать, если не точное значение, а например "количество > 100" ?
(10)  - зачем ? попробуй ВладелецФормы.Ссылка )) или по Значению (ЗНАЧ)
   ГдеСобакаЗарыта
 
12 - 23.10.20 - 09:31
Нужно просто в форме документа вызвать процедуру с дерективой &НаСервере. В ней выполнить запрос и заполнить свою ТЧ
Объект.МояТЧ.Загрузить(Запрос.Выполнить.Выгрузить());
   hhhh
 
13 - 23.10.20 - 09:35
(12) нету у него Объект. Это внешняя обработка заполнения ТЧ, наверно. Тут похоже через массив структур надо.
   bebibo
 
14 - 23.10.20 - 09:35
(12) Да, но как обратиться к моей ТЧ?
Объект.МояТЧ.Загрузить(Запрос.Выполнить.Выгрузить()); - не работает

Например на клиенте я так меняю ТЧ:
ВладелецФормы.Объект.Товары.Очистить();
   bebibo
 
15 - 23.10.20 - 09:35
(13) Вы правы, у меня нет объекта..
   ДенисЧ
 
16 - 23.10.20 - 09:36
А куда объект ВнешняяОбработка дели?
   ДенисЧ
 
17 - 23.10.20 - 09:36
Как полимеры?
   ГдеСобакаЗарыта
 
18 - 23.10.20 - 09:37
(13) В (0) "заполнить табличную часть документа по кнопке на форме". Про внешнюю обработку или чего еще ни слова
   bebibo
 
19 - 23.10.20 - 09:37
Получается, как говорил изначально:
Нажимаю кнопку - с клиента идем на сервер - выполняем запрос - выгружаем в ТЗ - Через массив структур передаем на клиент и заполняем? ТАк надо что ли?
   bebibo
 
20 - 23.10.20 - 09:37
(18) Да, извините, моя ошибка.
   ГдеСобакаЗарыта
 
21 - 23.10.20 - 09:40
(19) Вот в итерации "с клиента идем на сервер" можно перейти как с контекстом формы так и без. Непонятно что ты делаешь там.
   bebibo
 
22 - 23.10.20 - 09:42
(21) Просто с процедуры &НаКлиенте иду в функцию &НаСервере
   ГдеСобакаЗарыта
 
23 - 23.10.20 - 09:42
Ты какую то другую форму открываешь для подбора или что?
   ГдеСобакаЗарыта
 
24 - 23.10.20 - 09:44
(22) Ну (12) в ней работает. Сто раз так делал.
   bebibo
 
25 - 23.10.20 - 09:46
(24) Объект.Товары.Загрузить(ТаблицаТовары);
Поле объекта не обнаружено (Товары)
   ГдеСобакаЗарыта
 
26 - 23.10.20 - 09:49
А что отладчик говорит про Объект?
   bebibo
 
27 - 23.10.20 - 09:52
(26) Отладки то нет) Внешняя обработка то, подключена через Администрирование..
   bebibo
 
28 - 23.10.20 - 09:53
(26) Через сообщить - сказал что ДанныеФормыСтруктура
   ГдеСобакаЗарыта
 
29 - 23.10.20 - 09:55
   bebibo
 
30 - 23.10.20 - 09:58
(29) Я знаю как обратиться к ним на клиенте. НО как НА СЕРВЕРЕ - нет(
 
 Рекламное место пустует
   bebibo
 
31 - 23.10.20 - 10:01
стоп
   fisher
 
32 - 23.10.20 - 10:03
(11) > как отобрать, если не точное значение, а например "количество > 100"
Через Скопировать() - никак. Но если ТС устроили возможности отбора в НайтиСтроки(), то устроят и в Скопировать()
   bebibo
 
33 - 23.10.20 - 10:04
Я нашел там ответ!!
В общем если кому пригодится:

ОбъектДокумента = ВладелецФормы.Объект;
    
ЗафигачитьНаСервере(ОбъектДокумента); - тут заполняем ТЧ из ТЗ
    
КопироватьДанныеФормы(ОбъектДокумента, ВладелецФормы.Объект);
ВладелецФормы.Модифицированность = Истина

РЕШЕНИЕ НАЙДЕНО! СПАСИБО ДОРОГИЕ ЛЮДИ))
   fisher
 
34 - 23.10.20 - 10:07
(33) Не, спасибо. Такого не надо.
   bebibo
 
35 - 23.10.20 - 10:32
(34) Почему?
   bebibo
 
36 - 23.10.20 - 10:33
(35) По другому никак!
   fisher
 
37 - 23.10.20 - 10:42
(35) Не люблю такие фокусы с полной перегрузкой контекста. Обосновать не могу, но каким-то запашком от этого тянет.
С другой стороны, твой случай действительно "неудобный". Альтернатива - переливать ТЧ на клиенте, что тоже выглядит так себе решением для больших ТЗ.
Так что, пожалуй, готов взять свои слова назад.
   VladZ
 
38 - 23.10.20 - 10:46
(33) Зачем так сложно?

РезультатЗапросаТЗ = запрос.Выполнить().Выгрузить();
объект.<моя табличная часть>.Загрузить(РезультатЗапросаТЗ);

И всё.
   fisher
 
39 - 23.10.20 - 10:50
(38) ТС потом ниже раскололся, что ему нужно из формы своей обработки загружать ТЗ в ТЧ формы-владельца.
   fisher
 
40 - 23.10.20 - 10:54
И проблема в том, что ты не можешь выполнить код в серверном контексте другой формы.
   lodger
 
41 - 23.10.20 - 10:56
(40) в смысле код формы владельца нельзя ковырять?
   fisher
 
42 - 23.10.20 - 10:57
(41) Я так понял что да. Иначе к чему весь сыр-бор :)
   fisher
 
43 - 23.10.20 - 11:09
Если ковырять владельца можно, тогда самое простое что приходит в голову - передать ТЗ через временное хранилище и на стороне владельца штатно из него загрузиться.
   Индиго
 
44 - 23.10.20 - 11:16
(0)
1.Можно сделать ТЗ реквизитом формы и заполнять на сервере с контекстом. Но не забывать, что форма со всеми кишками будет ходить туда-сюда на сервер с клиента и обратно.
2.Можно сделать из ТЗ массив структур и нормально вернуть на клиенте, его обход ничем не будет отличасться от обхода ТЗ
примерно так
//-------------

    мТЗ=Новый Массив;
    
    Для каждого Стр Из ТЗ Цикл
        струкСтрока=Новый Структура;
        Для каждого Кол Из ТЗ.Колонки Цикл
            СтрукСтрока.Вставить(Кол.Имя,Стр[Кол.Имя]);
        КонецЦикла;    
        мТЗ.Добавить(струкСтрока);
    КонецЦикла;
    
    Возврат мТЗ
   Said_We
 
45 - 23.10.20 - 11:17
До чего дошел прогресс.....
Раньше обсуждали какие данные верные для заполнения ТЧ. Где их лучше взять. Как правильне взять.

А сейчас прогресс!
Сами данные уже никого не интересуют. Главное запихать что-то в ТЧ. А самое главное как технически эту ТЧ заполнить. Что там куда передать и через что. Потрясающе!
   Сергиус
 
46 - 23.10.20 - 11:31
(0)Можно передавать не ТЗ, а массив структур. На клиенте уже обрабатывать.
   fisher
 
47 - 23.10.20 - 11:33
(45) А чего ты ждал? Старые мрут, молодые приходят. Все по спирали.
   Said_We
 
48 - 23.10.20 - 11:43
(47) Да не... Это же просто поразительно. Что не ветка, то никого не интересует правильность данных и т.д. Вопрос содержащейся информации в данных вообще никого не интересует.
Всех интересует как с клиента на сервер и обратно данные пихнуть, и форму перерисовать.
Потрясающе....
   Kesim
 
49 - 23.10.20 - 11:45
(0) Передай на сервер ссылку на документ, там получи его тч и заполни.
по поводу отборов и количество <100 и тд  -  а случаем не для этого ты запрос делал?
   Индиго
 
50 - 23.10.20 - 11:53
(48)Так вопрос правильности данных должен автора волновать. Мы ему подсказываем методы,а утирать нос и проверять насколько верны данные- это уже извините за отдельные деньги
   Web00001
 
51 - 23.10.20 - 12:08
(45)Что за бред. Отвечают на поставленный вопрос. Что раньше, что сейчас. Просто появились технические нюансы которых не было раньше(если у тебя файловая база, то не было проблемы передать тз с сервера на клиента) поэтому и вопросов таких не было тоже.
   fisher
 
52 - 23.10.20 - 12:21
(48) И что не так? У тебя разве было иначе? Технические проблемы - внеочередные. С ними разбираешься в первую очередь.
   Web00001
 
53 - 23.10.20 - 12:31
(48)Представил диалог
- Мне нужно передать данные
- Нет нет нет давай сначала разберемся где ты их взял.
- Да пользователь ввел.
- А где пользователь их взял? А правильно ли он их ввел? Что это уже никого не интересует? Потрясающе...
   Индиго
 
54 - 23.10.20 - 12:34
(53) +1
   Said_We
 
55 - 23.10.20 - 13:09
(53), (54) Да уж....
Вы меня абсолютно, т.е. совсем не поняли. Вопрос же в другом совсем.

Посмотришь ветки десятилетней давности - народ на форуме решает проблемы ближе к постановке задачи и реализации какой-то функции. 20 лет назад примерно так же было.
Сейчас больше половины веток, это решения вопроса с какими-то "рюшечками". Или как куда, что передать с сервера на клиент и обратно.
Вот сижу и гадаю, как нас до такого Прогресс довел?
   lodger
 
56 - 23.10.20 - 13:12
"реализации какой-то функции" = "как куда, что передать с сервера на клиент и обратно".
   Garykom
 
57 - 23.10.20 - 13:13
(55) Типовые (или отраслевые) покрывают 90% функционала
   Garykom
 
58 - 23.10.20 - 13:14
(57)+ Сча новыми разработками обычно "проектные офисы" занимаются - там задачу низзя на левый сайт
   Said_We
 
59 - 23.10.20 - 13:20
Лет 20 назад была у всех мысль: "В то время как программисты всего мира пишут программы для отправке ракет в космос, мы на 1С бухгалтерский баланс сводим".
А теперь даже баланс не сводим  :-)
Чем вообще мы заняты?
   fisher
 
60 - 23.10.20 - 15:02
(59) Дядько... Походу у тебя трава зазеленела :)
 
 Рекламное место пустует


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