Как быстро выгрузить ТЧ в УФ? #733822


#0 by MaxisUssr
Вроде бы простой вопрос - но что-то не получается решить. Достаточно большая УФ, много реквизитов, но данных немного. Если делаем так: то пока попадаем в серверную процедуру - теряем 2-3 секунды, что неприемлимо. Если делать так &НаКлиенте - получаем ошибку.
#1 by SUA
Возвращаемое значение: Тип: ТаблицаЗначений. Описание: Создает таблицу значений и копирует в нее табличную часть. Имена колонок таблицы значений совпадают с именами колонок табличного поля. Колонка, содержащая номер строки, выгружается в колонку с именем НомерСтроки. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). ошибка гарантирована в обоих случаях
#2 by SUA
потомучто на клиенте ТЗ не нужна
#3 by H A D G E H O G s
Странно, что ощибки в первом случае нет. КТото врет!
#4 by H A D G E H O G s
Нужна.
#5 by H A D G E H O G s
Но ее нет.
#6 by MaxisUssr
Почему ошибка? Работает. Вот полный код: &НаКлиенте          ...      КонецФункции
#7 by H A D G E H O G s
Код нерабочий.
#8 by H A D G E H O G s
Хотя может УФ под Толстым. Фиг знает.
#9 by MaxisUssr
Именно УФ под толстым клиентом.
#10 by H A D G E H O G s
Нельзя так делать :-)
#11 by MaxisUssr
Ну хорошо, суть вопроса это не меняет, давай будет такой код:          ... КонецФункции между ф-ей ПредупредитьОНаличииДругихДокументов и ЕстьДругиеДокументсСервер теряю большое время - 2-3 секунды, т.к. тянется тот же самый контекст формы с клиента на сервер.
#12 by H A D G E H O G s
Циклом обойди ДанныеФормыКоллекция, сформируй массив ссылок и отправь в безконтекстную серверную процедуру.
#13 by H A D G E H O G s
Если надо несколько колонок - формируй массив структур.
#14 by Aleksandr N
Передать объект на "НаСервереБезКонтекста" пробовали?
#15 by MaxisUssr
, Этот вариант я и оставил как единственно возможный. И для моей задачи кое-как годится. Но это же как-то криво - если данных будет >10000, то это неоптимально.
#16 by Адский плющ
УФ под толстым клиентом это хороший способ искалечить свои знания об УФ.
#17 by MaxisUssr
{Документ......Форма.ФормаДокумента.Форма(1347)}: Ошибка при установке значения атрибута контекста (Объект)         Рез = ВыгрузитьБезКонтекста(Объект, "ГруппыДоговоров"); по причине: Нельзя изменять поле, содержащее объект данных формы
#18 by MaxisUssr
(это если вызывать прямо из клиента - что и нужно мне чтобы экономить время)
#19 by Aleksandr N
Сначала скопируйте объект, а передавайте его копию. Тогда ругаться не будет.
#20 by Aleksandr N
+ Например:
#21 by MaxisUssr
Александр, спасибо огромное, помогло!
#22 by Aleksandr N
Действительно стало быстрее?
#23 by MaxisUssr
Да, стало, опустим сейчас передачу ТЗ на клиента (исправлю это - перепишу так, чтобы нужная мне процедура проходила полностью без контекста и чтобы ТЗ не попадало на клиента), но данная конструкция как ни странно работает быстрее (0.29 сек), чем переход в &НаСервере (там теряю около 2-3 секунд)
#24 by Aleksandr N
Видать, действительно большая форма.
#25 by MaxisUssr
Вроде не особо - 3 закладки с ТЧ , в каждой из которых не более 10 колонок, плюс некоторые реквизиты.
#26 by mikeA
а на.. т.е. зачем её вообще выгружать?
#27 by hhhh
создайте табличное поле на форме и у него данные - эта ТЧ. Тогда не нужно будет никуда гонять таблицы значений.
#28 by MaxisUssr
Там смысл в том, что есть процедуры, когда ТЧ выгружается и в запросе (или в СКД) в ней вычисляются некие расчетные поля.
#29 by hhhh
ну сделать реквизит типа ТЗ и привязать его к табличному полю на форме. Зачем гонять мегабайты туда сюда?
#30 by MaxisUssr
При переходе с клиентской процедуры на серверую с контекстом - этот самый контекст гоняется туда-сюда, отнимая время много большее, чем если я гоняю отдельно коллекцию значений (см выше).
#31 by hhhh
нет вы то и другое делаете. И контекст и коллекцию гоняете.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям