Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 03:35
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: 1С 8.2, СписокВыбора и его быстродействие  (Прочитано 5286 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Olgir

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-02-08
  • Сайт: 
  • Профессия: Программист 8.1
Здравствуйте, я, можно сказать, новичок в программировании на 1С. Не так давно столкнулся с такой штукой, как КЛАДР. Вобщем, суть такова - я создал форму с полями для ввода адреса (регион, район, город и т.п.). Данные для этой формы берутся с помощью запроса из регистра сведений (который был скопирован из другой конфигурации). Так вот, при выборе города из списка загружается список улиц в соответствующий СписокВыбора текстового поля на форме, и в случае с некоторыми городами (например, Москва), количество улиц весьма велико. В итоге, загрузка списка улиц по Москве занимает 16 секунд, что неприемлимо.
Процесс происходит так: сначала функция возвращает мне с сервера массив структур, в которых содержится все что мне необходимо, включая названия улиц, после этого циклом загружаются названия из массива в СписокВыбора. Выглядит это вот так:

гМассивУлиц = ВыбратьУлицыНаСервере(КодРегиона,0,0,0);
КоличествоУлиц = гМассивУлиц.Количество();

Для Счетчик=0 По КоличествоУлиц-1 Цикл
    Элементы.Улица.СписокВыбора.Добавить(СокрЛП(гМассивУлиц[Счетчик].Наименование+" "+гМассивУлиц[Счетчик].Сокращение));
КонецЦикла;

Запрос выполняется очень быстро, но вот цикл с загрузкой данных в список занимает очень много времени.
Я пробовал формировать СписокЗначений на сервере, потом передавать его на клиент, время загрузки осталось прежним, выходит метод ЗагрузитьЗначения так же использует цикл. Убирание СокрЛП из кода тоже не дает никакого результата, значит, дело не в ней.
Как можно оптимизировать загрузку данных в СписокВыбора? Что я делаю не так?


Оффлайн Olgir

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-02-08
  • Сайт: 
  • Профессия: Программист 8.1
Прошу прощения, плохо выделил код в первом посте и теперь не знаю, как отредактировать его, поэтому повторю свое сообщение еще раз.


Здравствуйте, я, можно сказать, новичок в программировании на 1С. Не так давно столкнулся с такой штукой, как КЛАДР. Вобщем, суть такова - я создал форму с полями для ввода адреса (регион, район, город и т.п.). Данные для этой формы берутся с помощью запроса из регистра сведений (который был скопирован из другой конфигурации). Так вот, при выборе города из списка загружается список улиц в соответствующий СписокВыбора текстового поля на форме, и в случае с некоторыми городами (например, Москва), количество улиц весьма велико. В итоге, загрузка списка улиц по Москве занимает 16 секунд, что неприемлимо.
Процесс происходит так: сначала функция возвращает мне с сервера массив структур, в которых содержится все что мне необходимо, включая названия улиц, после этого циклом загружаются названия из массива в СписокВыбора. Выглядит это вот так:

гМассивУлиц = ВыбратьУлицыНаСервере(КодРегиона,0,0,0);
КоличествоУлиц = гМассивУлиц.Количество();

Для Счетчик=0 По КоличествоУлиц-1 Цикл
    Элементы.Улица.СписокВыбора.Добавить(СокрЛП(гМассивУлиц[Счетчик].Наименование+" "+гМассивУлиц[Счетчик].Сокращение));
КонецЦикла;

Запрос выполняется очень быстро, но вот цикл с загрузкой данных в список занимает очень много времени.
Я пробовал формировать СписокЗначений на сервере, потом передавать его на клиент, время загрузки осталось прежним, выходит метод ЗагрузитьЗначения так же использует цикл. Убирание СокрЛП из кода тоже не дает никакого результата, значит, дело не в ней.
Как можно оптимизировать загрузку данных в СписокВыбора? Что я делаю не так?

Оффлайн Olgir

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-02-08
  • Сайт: 
  • Профессия: Программист 8.1
И снова накосячил с тегом CODE, причем понятия не имею, как. Господа модераторы, отредактируйте, пожалуйста, чтобы нормально было. Или подскажите где кнопка -  в упор не вижу!

Оффлайн minakov.dmitry

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-13
  • Сайт: 
  • Профессия: Ученик 1С
Элементы.Улица.СписокВыбора.ЗагрузитьЗначения(гМассивУлиц); ?

Оффлайн Olgir

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-02-08
  • Сайт: 
  • Профессия: Программист 8.1
Элементы.Улица.СписокВыбора.ЗагрузитьЗначения(гМассивУлиц); ?
гМассивУлиц содержит структуры, если вы не заметили. С ним этот метод не проходит, но я пробовал формировать список значений на сервере и применять к нему этот метод. Не помогло, время выполнения метода ЗагрузитьЗначения - 16 секунд.

Оффлайн minakov.dmitry

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-13
  • Сайт: 
  • Профессия: Ученик 1С
Если структура применяется только для получения названия и сокращения и Вы их потом все равно складываете, не проще ли сложить эти два поля в запросе и получить массив строк, а не структур?
И если уж метод ЗагрузитьЗначения тормозит, то перебор в цикле уж точно быстрее не будет.

Оффлайн Slaid

  • *
  • Сообщений: 15
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-23
  • Сайт: 
  • Профессия: Ученик 1С
а на компьютере где именно находится база данных, тоже также долго прогружает данные улиц? (делает подборку)

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
а на компьютере где именно находится база данных, тоже также долго прогружает данные улиц? (делает подборку)

выборки данных и т.п. затратные операции лучше делать на стороне сервера, потому что обычно он мощнее и производительней.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Olgir

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-02-08
  • Сайт: 
  • Профессия: Программист 8.1
Если структура применяется только для получения названия и сокращения и Вы их потом все равно складываете, не проще ли сложить эти два поля в запросе и получить массив строк, а не структур?
И если уж метод ЗагрузитьЗначения тормозит, то перебор в цикле уж точно быстрее не будет.
Названия и сокращения мне нужны по отдельности для последующего формирования настраиваемого строкового представления адреса. Дело в том, что гМассивУлиц - глобальный массив, использующийся и в других процедурах.
Я уже пробовал сократить передачу данных с сервера на клиент до минимума - тоесть, до простого массива со строками, но результат остался абсолютно тем же - цикл тормозит, ЗагрузитьЗначения тоже :(.

а на компьютере где именно находится база данных, тоже также долго прогружает данные улиц? (делает подборку)
Выборка происходит мгновенно. Тормозит цикл, добавляющий данные из массива в СписокВыбора.


Похоже, что сам элемнет формы тормозной.. :( Вообще, есть в 1С способ написать низкоуровневую процедуру? Мне бы ссылку СписокВыбора подменить и дело с концом! СписокЗначений на сервере формируется весьма быстро.

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Как вариант:
А если использовать не СписокВыбора, а форму для выбора значения???
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
175 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 182
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal