Получить Из Временного Хранилища #733170


#0 by Zmitrok62
Приветствую! Создаю обработку, хочу передать данные с сервера на клиент, но говорит следующее: {Обработка.ЗаписьФайла.Форма.Форма.Форма}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)          Выборка = ПолучитьИзВременногоХранилища(ВыборкаВХ); по причине: Ошибка получения значения из временного хранилища по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {    Форма: Элемент    Тип: { по причине: Ошибка отображения типов: Отсутствует отображение для типа '{' &НаСервере
#1 by H A D G E H O G s
Таблицу значений нельзя передавать на клиент
#2 by eklmn
охрень, чуть мозг не вывехнул от кода
#3 by GROOVY
А чего бы на сервере все не сделать?
#4 by Zmitrok62
Да можно и на сервере, это просто эксперимент и больше всего интересно почему не удается получить из ВХ.
#5 by GROOVY
Потому-что . ТЗ не модет существовать на клиенте, ТЗ на клиенте - это сконвертированные в данные формы записи.
#6 by Zmitrok62
Вот чувак предлагает решение:
#7 by GROOVY
Вот это полная бредятина. Еще можно массив многомерный сделать. А зачем? Зачем передавать на клиент данные, которые там нафиг ненужны?
#8 by H A D G E H O G s
Прекрасное решение.
#9 by H A D G E H O G s
Программист должен сам решать, какие данные нужны на клиенте, а какие- на сервере. Без всяких контекстных вызовов по каждому чиху - которые шарашаться в большинстве методичек от "именнитых авторов" УФ.
#10 by Гёдза
Мы сами знаем что вам нужно, а что нет (с) 1С
#11 by GROOVY
Ну давайте на старенький планшет ТЗ передадим с овер 9000 строк и колонок. Ну-ну... Это нам так надо.
#12 by H A D G E H O G s
Хреновый пример. Точно также на планшет можно передать 9000 строк и колонок в составе ДанныеФормыКоллекция
#13 by GROOVY
ДанныеФормы целиком на клиент не передаются.
#14 by GROOVY
Тут срабатывает правило
#15 by H A D G E H O G s
Причем где-то на 10-12 пользователе, работающем с такой таблицей, сервер 1С двинет кони.
#16 by H A D G E H O G s
Это не помешает пользователю отскроллить таблицу, поимев ее полностью на клиенте + нехилые тормоза сервера 1С
#17 by H A D G E H O G s
Точно также можно зашарашить в ДанныеФормы 100000 строк и  дождаться 1-ого скролла около минуты.
#18 by Demetres
Типа такого на клиенте нет
#19 by Zmitrok62
м?
#20 by H A D G E H O G s
Это я к чему, , говорю. Это я говорю к тому, что не всегда правило работает, и иногда надо мыслить головой, а не наборами правил и идеи типа - отлично работают, когда данных мало и большое количество не предвидется. Вот и в своей методичке ты отработал по шаблонам, не умудрившись подумать. Рекомендую поправить:
#21 by Demetres
у!
#22 by Zmitrok62
д
#23 by ам794123
Вместо временного хранилища используй ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр
#24 by Zmitrok62
Спасибо, попробую!
#25 by H A D G E H O G s
Класс!
#26 by Гёдза
И что на клиенте появится ТЗ?
#27 by ShoGUN
Голь на выдумку хитра...
#28 by Гёдза
На кллиенте нет такого метода (((
#29 by ам794123
Не все клиенты одинаково полезны. Клиент должен быть толстым)
#30 by GROOVY
Вот тебе методика по шаблонам с объяснениями: специально еще раз написал.
#31 by H A D G E H O G s
Хехе, шутник.
#32 by H A D G E H O G s
В первой статье первый запрос говорит о том, что вы не понимаете механизьма регистра остатков. Правильный запрос выглядит примерно так:     Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары     Товары.Номенклатура,
#33 by H A D G E H O G s
Конечно, на экзамене по Спецу любой получит двойку.
#34 by Гёдза
несущественное улучшение.
#35 by H A D G E H O G s
Пфф. Улучшение, которое убирает 1- внешний цикл. Улучшение, которое позволяет сократить на порядок обращение к таблице остатков. По шаблону количество обращений будет n^2, где n-число строк ТЧ товары. По варианту - всего n обращений.
#36 by GROOVY
Ну если это где-то документировано, то я признаю что полный даун в запросах.
#37 by Гёдза
какой внешний цикл?
#38 by Гёдза
Ты какой метод соединения предполагешь?
#39 by GROOVY
Это он про план запроса на sql-сервере в который мутирует запрос 1С.
#40 by H A D G E H O G s
nestep loops
#41 by Гёдза
Единственное что на вложенной выборке нет индекса, но если меньше 100 записей то ваще не влияет
#42 by GROOVY
Только вот перед соединением, не на оперативный момент, нужно еще остатки как бы рассчитать.
#43 by Гёдза
А где неоперативный то момент? в этом то и суть хоть и несущественная
#44 by H A D G E H O G s
Шта? У тебя - на оперативный. Счаст вся типовота считает остатки на оперативный, насколько я помню (могу и ошибаться)
#45 by H A D G E H O G s
Счаст ради "Высшей справедливости" найду док с 1000 строк
#46 by GROOVY
И чего, мне в методической статье описывать все варианты с точки зрения оптимальности на сервере sql? Тема - не эксперт по технологическим вопросам.
#47 by Гёдза
сделай замер. эти выигрышные микросекунды не суть
#48 by GROOVY
Это как разбирать механизм сцепления у автомобиля и доказывать всем, что припаять намертво было бы быстрее, надежнее и дешевле!
#49 by H A D G E H O G s
По твоим стопам пойдут тысячи юнных программистов, которые будут мыслить щаблонами и не пытаться "подергать".
#50 by ДенисЧ
Казалось бы,, элементарный вопрос... Но нет... Пришёл Ёжик и всё свёл к нестед лупам и прочей нечисти...
#51 by ShoGUN
Нестед луп - это вложенный цикл. Что в нём такого нечестивого?
#52 by GROOVY
Я был бы рад, если тысячи мыслили по рекомендациям 1С, а де делали запросы в циклах, получение представления отдельно и предупреждений при проведении.
#53 by H A D G E H O G s
На 1021 строке nestep loops превращается в mergejoin По шаблону - 2 mergejoin-а, у меня - один. Да, вот теперь выигрыш не такой критичный.
#54 by GROOVY
Ты мне лучше скажи, почему условие (А,Б) в (ВЫБРАТЬ А,Б Из Х) выполняется медленнее чем А = Х.А и Б = Х.Б? Я понимаю что медленнее, но почему?!
#55 by К_Дач
это особенности самой СУБД. Оператор in - вообще довольно медленная штука. К тому же, по сути, оптимизатор запросов превращает in в join. А по поводу холивара с тов. Ежовым - я не гуру, но у вас, имхо, у обоих неоптимально. Надо бы сначала поместить выборку из виртуальной таблицы во временную и потом по соединяться с ней. Полностью согласен с книжкой "эксперт по технологическим вопросам, цитирую "виртуальные таблицы.... могут разворачиваться в подзапросы при трансляции в язык СУБД...."
#56 by Serginio1
На опыте во многих сценариях Left Join  предочтительнее EXISTS и In
#57 by К_Дач
это потому что при джойне вместо нестед лупс может и мердж использоваться, а для В (...) наверняка всегда только циклы, хотя могу ошибаться
#58 by Wern
Сделай текстовый документ на сервере, а не на клиенте и передавай на клиент его.
#59 by Serginio1
Весьма вероятно и оптимизатор берет неправильный план. Вот один из примеров которых огромное множество
#60 by Serginio1
59+
#61 by К_Дач
Когда 1С наконец-таки прикрутит в язык запросов инструкцию для того КАК соединять (аналог ключевых слов sql) - это будет радость и веселье
#62 by GROOVY
Ну это будет в версии 10.3.12.5987375.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С