Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
ДанныеФормыДерево вообще обделили, и поиск тоже хочется..
(1) хорошая идея, добавлю в заметки
На каком количестве элементов проверялась сортировка? 1С при этом не формирует неявных серверных вызовов?
(3) боялись серверных вызовов, ибо используется метод Сдвинуть(), но не обнаружили ни по счётчику вызовов, ни по замеру производительности.
Проверяли так — генерили примитивную таблицу формы из рандомных чисел, а потом сортировали. Перебирали разные алгоритмы. Этим добились того, что 1000 элементов таблицы с рандомными числами диапазоном до 1000 сортируются меньше секунды. 10 000 строк с рандомом до 10 000 тратит время на сортировку ≈ 3 секунды.
Этой скорости нам достаточно для реализации механизма, где не будет больших объемов строк. Если же дерево более большое, то тут есть много факторов. Скорость клиентской машины, объём других данных на форме (помимо дерева) и так далее.
+ заметили в некоторых ситуациях такую вещь, что перепрыгивание на сервер иногда занимает совершенно неразумное время. Доходило до абсурдного, что для редактирования таблицы данных на сервере, приходилось использовать бесконтекстный вызов сервера, а передавать туда массив со структурами, обрабатывать там в ТЗ, корректировать,обратно превращать в массив со структурами, возвращать как результат функции, а далее уже на клиенте содержимое помещать в таблицу формы. Костыль редкостный, но увеличивал скорость работы в несколько раз.
Попробуем проанализировать ситуацию, если что-то интересное — будет статья.
(4) то есть использовались только числа? Попробуйте такое же количество, но ссылочных элементов, очень интересно как отработает Обработка представления для этих элементов без серверных вызовов, и кэширует ли 1С все представления на клиенте для такого количества элементов
(4) при личной проверке довольно часто выходит, что безконтекстная передача таблицы формы может быть дольше, чем контекстный серверный вызов, все зависит от того, какой объем информации содержится в остальных элементах, если по сравнениню с таблицей их пренебрежительно мало, то лучше контекстный вызов.
(5)
Да, скорее всего не так классно будет.
Просто в разработке сортировок по ссылке стараемся максимально избегать. Даже уже привык сортировать по примитивным типам, которые заранее готовятся специально.
Однако, в данном алгоритме именно сортировка используется только один раз на уровень дерева — СортироватьПоЗначению(). Метод платформенный, никаких «ручных» сравнений нет. Но потестировать нужно, интересно
(7) это понятно, но ваш пример далек от реальности, так как вы используйте примитивные типы, то неявных серверных вызовов и не будет, но мне больше кажется, что такой вариант будет все равно вызывать метод сервера. Сам ранее пытался писать код, который максимально бы работал на клиенте, но все старания разбивались о работу самой 1С, которая фоном делала серверные вызовы для кода. которая в теории должен был исполняться только на клиенте.
(8) пока что в этом алгоритме не замечено было, но Вы правы — нужно проверить на ссылочных типах.
(9)
(8)
Проверил на ссылке. Добавил ссылочную колонку в таблицу формы. Заполнил таблицу ссылками на существующие документы (выбрал первые 10 000 документов и разбросал рандомно по таблице). Сортировка заняла 4 секунды и счётчик вызовов не показал.
Скорее всего СписокЗначений.СортироватьПоЗначению() использует ГУИДы, а не представления, поэтому обращений на сервер и не требовалось
(0) Сталкивался с подобной проблемой, чуток анализировал вопрос понял что для большого количества строк на сервере быстрее
Описанный вариант кажется не оптимальным создает массив сдвигает, быструю сортировку пробовали?
(10) пробовали с десяток разных алгоритмов, уже и не вспомню. Но остановились на этом. И заполнение списка значений здесь привело хороший прирост. Этот объект быстро сортирует.
Если у вас есть процедура быстрее, то выкладывайте. Хочется найти «самую-самую» и закрепить в статье.
Когда появится время, сделаю специальный инструмент для удобного тестирования методов сортировки. Чтобы можно было свою процедуру легко вставить и гонять по скорости
(11) проблема не в самом методе сортировки, а в выводе дерева на экран, так как в ссылочном поле происходит северная обработка представления, потому и было интересно как поведет себя 1с. Спасибо, будет желание еще сам проверю работу этого метода
Есть стандартные команды сортировки для элементов форм. Чаще всего проще обратить на них внимание пользователей и как-то закрепить на командных панелях. Если же сортировать нужно, но без участия пользователей скорее всего этот объект использован не в тему.
А не пробовали сортировать «нативно»? Тем же квиксортом?
Что-то не выкладывают альтернативные варианты)
Вообще, какой-нибудь конкурс устроить. Пусть и символический.
И обработку общую сделать. Для теста с генерацией данных.
В общем, самая «нативная» сортировка (не без участия jQuery) у меня получилась следующим образом:
Все данные в ячейках я вношу в data-attribute, которые легализованы в HTML5. Чтобы метод sort() работал так, как мне надо — данные привожу в к нижнему регистру и заменяю кавычки на апострофы, чтобы не возникла конфликта на уровне HTML.