|   |   | 
| 
 | Передать ТЗ с сервера на клиент | ☑ | ||
|---|---|---|---|---|
| 0
    
        bebibo 23.10.20✎ 08:06 | 
        Всем здравствуйте!
 Как будет правильнее передать ТЗ на клиент? Мне нужно заполнить табличную часть документа по кнопке на форме. Нажимаю кнопку, выполняется запрос, загружаются данные в ТЧ. Вот запрос выполняется на сервере, как ПРАВИЛЬНЕЕ мне результат этого запроса передать обратно на клиент и заполнить им мою табличную часть?) | |||
| 1
    
        BalBess 23.10.20✎ 08:11 | 
        (0) передавать не нужно, нужно сразу заполнять табличную часть, на сервере     | |||
| 2
    
        bebibo 23.10.20✎ 08:16 | 
        (1) Так ТЧ же на форме - значит это клиент. Как заполнить её на сервере?     | |||
| 3
    
        BalBess 23.10.20✎ 08:23 | 
        (2) ТЧ на форме просто отображает данные, которые хранятся на сервере
 примерно так МояФорма=РеквизитФормыВЗначение("Объект"); МояФорма.МояТЧ.Загрузить(Запрос.Выполнить().Выгрузить()); ЗначениеВРеквизитФормы(МояФорма, "Объект"); | |||
| 4
    
        bebibo 23.10.20✎ 08:31 | 
        (3) Спасибо, я попробую.     | |||
| 5
    
        bebibo 23.10.20✎ 08:55 | 
        А отбор можно как то в ней сделать перед загрузкой?     | |||
| 6
    
        bebibo 23.10.20✎ 08:56 | 
        Думаю использовать НайтиСтроки() - но возвратит массив..А не ТЗ     | |||
| 7
    
        BalBess 23.10.20✎ 09:00 | 
        (5) отбор лучше делать сразу в запросе
 а вообще мояТЗ = Запрос.Выполнить().Выгрузить(); мояТЗ.Отобрать(); МояФорма.МояТЧ.Загрузить(мояТЗ); | |||
| 8
    
        Мимохожий Однако 23.10.20✎ 09:02 | 
        (7) Метод Отобрать() мне нравится     | |||
| 9
    
        fisher 23.10.20✎ 09:02 | 
        (6) У метода Скопировать() есть вариант вызова со структурой отбора - вернет копию таблицы со строками отвечающими фильтру. Или еще в запросе фильтровать.
 Судя по теме, ты новичок в УФ. Рекомендую к прочтению: http://catalog.mista.ru/1c/articles/198766/ Только читать лучше на инфостарте - там оформление более читабельное. | |||
| 10
    
        bebibo 23.10.20✎ 09:19 | 
        А теперь я передаю "ВладелецФормы.Объект" с клиента в серверную процедуру, ругается:
 Ошибка при установке значения атрибута контекста по причине: Нельзя изменять поле, содержащее объект данных формы - это из-за того, что надо ссылку передавать? Если да, то как мне её получить? | |||
| 11
    
        BalBess 23.10.20✎ 09:30 | 
        (9) >> есть вариант вызова со структурой отбора
 как отобрать, если не точное значение, а например "количество > 100" ? (10) - зачем ? попробуй ВладелецФормы.Ссылка )) или по Значению (ЗНАЧ) | |||
| 12
    
        ГдеСобака Зарыта 23.10.20✎ 09:31 | 
        Нужно просто в форме документа вызвать процедуру с дерективой &НаСервере. В ней выполнить запрос и заполнить свою ТЧ
 Объект.МояТЧ.Загрузить(Запрос.Выполнить.Выгрузить()); | |||
| 13
    
        hhhh 23.10.20✎ 09:35 | 
        (12) нету у него Объект. Это внешняя обработка заполнения ТЧ, наверно. Тут похоже через массив структур надо.     | |||
| 14
    
        bebibo 23.10.20✎ 09:35 | 
        (12) Да, но как обратиться к моей ТЧ?
 Объект.МояТЧ.Загрузить(Запрос.Выполнить.Выгрузить()); - не работает Например на клиенте я так меняю ТЧ: ВладелецФормы.Объект.Товары.Очистить(); | |||
| 15
    
        bebibo 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) "заполнить табличную часть документа по кнопке на форме". Про внешнюю обработку или чего еще ни слова     | |||
| 19
    
        bebibo 23.10.20✎ 09:37 | 
        Получается, как говорил изначально:
 Нажимаю кнопку - с клиента идем на сервер - выполняем запрос - выгружаем в ТЗ - Через массив структур передаем на клиент и заполняем? ТАк надо что ли? | |||
| 20
    
        bebibo 23.10.20✎ 09:37 | 
        (18) Да, извините, моя ошибка.     | |||
| 21
    
        ГдеСобака Зарыта 23.10.20✎ 09:40 | 
        (19) Вот в итерации "с клиента идем на сервер" можно перейти как с контекстом формы так и без. Непонятно что ты делаешь там.     | |||
| 22
    
        bebibo 23.10.20✎ 09:42 | 
        (21) Просто с процедуры &НаКлиенте иду в функцию &НаСервере     | |||
| 23
    
        ГдеСобака Зарыта 23.10.20✎ 09:42 | 
        Ты какую то другую форму открываешь для подбора или что?     | |||
| 24
    
        ГдеСобака Зарыта 23.10.20✎ 09:44 | 
        (22) Ну (12) в ней работает. Сто раз так делал.     | |||
| 25
    
        bebibo 23.10.20✎ 09:46 | 
        (24) Объект.Товары.Загрузить(ТаблицаТовары);
 Поле объекта не обнаружено (Товары) | |||
| 26
    
        ГдеСобака Зарыта 23.10.20✎ 09:49 | 
        А что отладчик говорит про Объект?     | |||
| 27
    
        bebibo 23.10.20✎ 09:52 | 
        (26) Отладки то нет) Внешняя обработка то, подключена через Администрирование..     | |||
| 28
    
        bebibo 23.10.20✎ 09:53 | 
        (26) Через сообщить - сказал что ДанныеФормыСтруктура     | |||
| 29
    
        ГдеСобака Зарыта 23.10.20✎ 09:55 | 
        Голову мне тут морочит.
 Как обратиться к реквизитам формы документа из внешней обработки | |||
| 30
    
        bebibo 23.10.20✎ 09:58 | 
        (29) Я знаю как обратиться к ним на клиенте. НО как НА СЕРВЕРЕ - нет(     | |||
| 31
    
        bebibo 23.10.20✎ 10:01 | 
        стоп     | |||
| 32
    
        fisher 23.10.20✎ 10:03 | 
        (11) > как отобрать, если не точное значение, а например "количество > 100"
 Через Скопировать() - никак. Но если ТС устроили возможности отбора в НайтиСтроки(), то устроят и в Скопировать() | |||
| 33
    
        bebibo 23.10.20✎ 10:04 | 
        Я нашел там ответ!!
 В общем если кому пригодится: ОбъектДокумента = ВладелецФормы.Объект; ЗафигачитьНаСервере(ОбъектДокумента); - тут заполняем ТЧ из ТЗ КопироватьДанныеФормы(ОбъектДокумента, ВладелецФормы.Объект); ВладелецФормы.Модифицированность = Истина РЕШЕНИЕ НАЙДЕНО! СПАСИБО ДОРОГИЕ ЛЮДИ)) | |||
| 34
    
        fisher 23.10.20✎ 10:07 | 
        (33) Не, спасибо. Такого не надо.     | |||
| 35
    
        bebibo 23.10.20✎ 10:32 | 
        (34) Почему?     | |||
| 36
    
        bebibo 23.10.20✎ 10:33 | 
        (35) По другому никак!     | |||
| 37
    
        fisher 23.10.20✎ 10:42 | 
        (35) Не люблю такие фокусы с полной перегрузкой контекста. Обосновать не могу, но каким-то запашком от этого тянет.
 С другой стороны, твой случай действительно "неудобный". Альтернатива - переливать ТЧ на клиенте, что тоже выглядит так себе решением для больших ТЗ. Так что, пожалуй, готов взять свои слова назад. | |||
| 38
    
        VladZ 23.10.20✎ 10:46 | 
        (33) Зачем так сложно?
 РезультатЗапросаТЗ = запрос.Выполнить().Выгрузить(); объект.<моя табличная часть>.Загрузить(РезультатЗапросаТЗ); И всё. | |||
| 39
    
        fisher 23.10.20✎ 10:50 | 
        (38) ТС потом ниже раскололся, что ему нужно из формы своей обработки загружать ТЗ в ТЧ формы-владельца.     | |||
| 40
    
        fisher 23.10.20✎ 10:54 | 
        И проблема в том, что ты не можешь выполнить код в серверном контексте другой формы.     | |||
| 41
    
        lodger 23.10.20✎ 10:56 | 
        (40) в смысле код формы владельца нельзя ковырять?     | |||
| 42
    
        fisher 23.10.20✎ 10:57 | 
        (41) Я так понял что да. Иначе к чему весь сыр-бор :)     | |||
| 43
    
        fisher 23.10.20✎ 11:09 | 
        Если ковырять владельца можно, тогда самое простое что приходит в голову - передать ТЗ через временное хранилище и на стороне владельца штатно из него загрузиться.     | |||
| 44
    
        Индиго 23.10.20✎ 11:16 | 
        (0)
 1.Можно сделать ТЗ реквизитом формы и заполнять на сервере с контекстом. Но не забывать, что форма со всеми кишками будет ходить туда-сюда на сервер с клиента и обратно. 2.Можно сделать из ТЗ массив структур и нормально вернуть на клиенте, его обход ничем не будет отличасться от обхода ТЗ примерно так //------------- мТЗ=Новый Массив; Для каждого Стр Из ТЗ Цикл струкСтрока=Новый Структура; Для каждого Кол Из ТЗ.Колонки Цикл СтрукСтрока.Вставить(Кол.Имя,Стр[Кол.Имя]); КонецЦикла; мТЗ.Добавить(струкСтрока); КонецЦикла; Возврат мТЗ | |||
| 45
    
        Said_We 23.10.20✎ 11:17 | 
        До чего дошел прогресс.....
 Раньше обсуждали какие данные верные для заполнения ТЧ. Где их лучше взять. Как правильне взять. А сейчас прогресс! Сами данные уже никого не интересуют. Главное запихать что-то в ТЧ. А самое главное как технически эту ТЧ заполнить. Что там куда передать и через что. Потрясающе! | |||
| 46
    
        Сергиус 23.10.20✎ 11:31 | 
        (0)Можно передавать не ТЗ, а массив структур. На клиенте уже обрабатывать.     | |||
| 47
    
        fisher 23.10.20✎ 11:33 | 
        (45) А чего ты ждал? Старые мрут, молодые приходят. Все по спирали.     | |||
| 48
    
        Said_We 23.10.20✎ 11:43 | 
        (47) Да не... Это же просто поразительно. Что не ветка, то никого не интересует правильность данных и т.д. Вопрос содержащейся информации в данных вообще никого не интересует.
 Всех интересует как с клиента на сервер и обратно данные пихнуть, и форму перерисовать. Потрясающе.... | |||
| 49
    
        Kesim 23.10.20✎ 11:45 | 
        (0) Передай на сервер ссылку на документ, там получи его тч и заполни. 
 по поводу отборов и количество <100 и тд - а случаем не для этого ты запрос делал? | |||
| 50
    
        Индиго 23.10.20✎ 11:53 | 
        (48)Так вопрос правильности данных должен автора волновать. Мы ему подсказываем методы,а утирать нос и проверять насколько верны данные- это уже извините за отдельные деньги     | |||
| 51
    
        Web00001 23.10.20✎ 12:08 | 
        (45)Что за бред. Отвечают на поставленный вопрос. Что раньше, что сейчас. Просто появились технические нюансы которых не было раньше(если у тебя файловая база, то не было проблемы передать тз с сервера на клиента) поэтому и вопросов таких не было тоже.     | |||
| 52
    
        fisher 23.10.20✎ 12:21 | 
        (48) И что не так? У тебя разве было иначе? Технические проблемы - внеочередные. С ними разбираешься в первую очередь.     | |||
| 53
    
        Web00001 23.10.20✎ 12:31 | 
        (48)Представил диалог
 - Мне нужно передать данные - Нет нет нет давай сначала разберемся где ты их взял. - Да пользователь ввел. - А где пользователь их взял? А правильно ли он их ввел? Что это уже никого не интересует? Потрясающе... | |||
| 54
    
        Индиго 23.10.20✎ 12:34 | 
        (53) +1     | |||
| 55
    
        Said_We 23.10.20✎ 13:09 | 
        (53), (54) Да уж....
 Вы меня абсолютно, т.е. совсем не поняли. Вопрос же в другом совсем. Посмотришь ветки десятилетней давности - народ на форуме решает проблемы ближе к постановке задачи и реализации какой-то функции. 20 лет назад примерно так же было. Сейчас больше половины веток, это решения вопроса с какими-то "рюшечками". Или как куда, что передать с сервера на клиент и обратно. Вот сижу и гадаю, как нас до такого Прогресс довел? | |||
| 56
    
        lodger 23.10.20✎ 13:12 | 
        "реализации какой-то функции" = "как куда, что передать с сервера на клиент и обратно".     | |||
| 57
    
        Garykom гуру 23.10.20✎ 13:13 | 
        (55) Типовые (или отраслевые) покрывают 90% функционала     | |||
| 58
    
        Garykom гуру 23.10.20✎ 13:14 | 
        (57)+ Сча новыми разработками обычно "проектные офисы" занимаются - там задачу низзя на левый сайт     | |||
| 59
    
        Said_We 23.10.20✎ 13:20 | 
        Лет 20 назад была у всех мысль: "В то время как программисты всего мира пишут программы для отправке ракет в космос, мы на 1С бухгалтерский баланс сводим".
 А теперь даже баланс не сводим :-) Чем вообще мы заняты? | |||
| 60
    
        fisher 23.10.20✎ 15:02 | 
        (59) Дядько... Походу у тебя трава зазеленела :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |