|
Зависает при поиске документа по номеру | ☑ | ||
---|---|---|---|---|
0
evorle145
25.05.12
✎
17:26
|
1с 8.2 Комплексная автоматизация
Добавил раскраску документов и теперь не всегда, но случается зависание при поиске документа по номеру Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) ЦветЗеленый = Новый Цвет(195,251,197); ЦветСеребристый = Новый Цвет (220,220,220); ЦветАнтикБелый = Новый Цвет (255,210,129); Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл Если ДанныеСтроки.Ссылка.СтатусЗаказНаряда = Справочники.бит_ус_СтатусыЗаказНарядов.Закрыт И ДанныеСтроки.Проведен Тогда ОформлениеСтроки.ЦветФона = ЦветЗеленый; ИначеЕсли ДанныеСтроки.Ссылка.СтатусЗаказНаряда = Справочники.СтатусыЗаказНарядов.ВРемзоне Тогда ОформлениеСтроки.ЦветФона = ЦветАнтикБелый; ИначеЕсли ДанныеСтроки.Ссылка.Запчасти.Количество() > 0 Тогда ОформлениеСтроки.ЦветФона = ЦветСеребристый; КонецЕсли; КонецЦикла; КонецПроцедуры Подскажите, с чем может быть связано периодически появляющееся зависание? |
|||
1
H A D G E H O G s
25.05.12
✎
17:28
|
ДанныеСтроки.Ссылка.СтатусЗаказНаряда
Зло |
|||
2
DmitriyNG
25.05.12
✎
17:28
|
Возможно долго обрабатывает эту строку "ИначеЕсли ДанныеСтроки.Ссылка.Запчасти.Количество() > 0 Тогда"
|
|||
3
H A D G E H O G s
25.05.12
✎
17:29
|
||||
4
Fragster
гуру
25.05.12
✎
17:29
|
сделать таблицу с индексами и ссылками, заполнить её из данных строки, сделать запрос, в котором присоединить огтовые статусы заказов, в обходе оформлений - по индексу получать статус. если всё равно медленно - то можно кэшировать
|
|||
5
H A D G E H O G s
25.05.12
✎
17:29
|
(2) Слона то я и не приметил
|
|||
6
Fragster
гуру
25.05.12
✎
17:30
|
присоединить готовые статусы заказов и количества, да
|
|||
7
evorle145
25.05.12
✎
17:37
|
(4), не совсем понял, про запрос. Какие таблицы в запросе обрабатывать?
|
|||
8
Fragster
гуру
25.05.12
✎
17:48
|
типа так:
Таб = Новый ТаблицаЗначений; Таб.Колонки.Добавить("Индекс", ПолучитьОписаниеТиповЧисло(10,0)); Таб.Колонки.Добавить("Ссылка", ПолучитьОписаниеТиповЧисло(10,0)); Сч = 0; Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки; Стр = Таб.Добавить() Стр.Индекс = Сч; Сч = Сч + 1; Стр.Ссылка = ДанныеСтроки.Ссылка; КонецЦикла; Запрос = Новый Запрос;// ...... в котором мы заполняем данные и получаем данные, отсортированные по индексу ТабРезультат = Запрос.Выполнить().Выгрузить(); Сч = 0; Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки; Стр = ТабРезультат[Сч]; Сч = Сч + 1; Если Стр.СтатусЗаказНаряда = Справочники.бит_ус_СтатусыЗаказНарядов.Закрыт И ДанныеСтроки.Проведен Тогда ОформлениеСтроки.ЦветФона = ЦветЗеленый; ИначеЕсли Стр.СтатусЗаказНаряда = Справочники.СтатусыЗаказНарядов.ВРемзоне Тогда ОформлениеСтроки.ЦветФона = ЦветАнтикБелый; ИначеЕсли Стр.КоличествоЗапчастей > 0 Тогда ОформлениеСтроки.ЦветФона = ЦветСеребристый; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
9
evorle145
25.05.12
✎
17:53
|
Ого, спасибо! Теперь все понял, что имелось ввиду по индексами и запросом, буду пробовать сейчас, только не пойму, в чем здесь выигрыш в плане скорости?
|
|||
10
х86
25.05.12
✎
17:54
|
(9)в чем здесь выигрыш в плане скорости - один запрос к БД
|
|||
11
Fragster
гуру
25.05.12
✎
17:57
|
если и так медленно - то можно дальше усовершенствовать через кэширование результатов
|
|||
12
evorle145
25.05.12
✎
18:01
|
(9), то есть у меня для каждой строки идет обращение к базе "Если ДанныеСтроки.Ссылка.Запчасти.Количество() > 0 Тогда", а здесь для каждой строки только "ДанныеСтроки.Ссылка", а все остальное определяется в запросе, верно я понял?
(11), спасибо, сначала потестирую ваш способ, может и кеширование не потребуется если уберу ДанныеСтроки.Ссылка.Запчасти.Количество() |
|||
13
evorle145
25.05.12
✎
18:03
|
*ошибся, ссылка не на (9), а на (10)
|
|||
14
Fragster
гуру
25.05.12
✎
18:03
|
(12) для каждой строки ДанныеСтроки.Ссылка.СтатусЗаказНаряда читает шапку целиком из базы, а ДанныеСтроки.Ссылка.Запчасти.Количество() - еще и таб часть. ДанныеСтроки.Ссылка ничего не читает, потому что она у тебя уже есть
|
|||
15
evorle145
25.05.12
✎
18:04
|
(12),Все понял, очень доходчиво говорите, дайте время потестировать
|
|||
16
evorle145
25.05.12
✎
18:05
|
*снова ошибся, хотел написать так:
(14),Все понял, очень доходчиво говорите, дайте время потестировать |
|||
17
evorle145
28.05.12
✎
11:48
|
Спасибо, время поиска сильно уменьшилось, и зависаний вроде больше нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |