|
Слишком много ПриВыводеСтроки | ☑ | ||
---|---|---|---|---|
0
FiftyStars
26.12.11
✎
12:31
|
Вобщем жесткий трабл у меня =(
Есть ТП с ТЗ внутри Сначала запросом туда заносятся заказы(Ссылки на них, номера и т.д) Затем в событии ПриВыводеСтроки вызывается процедура, которая составляет запросики для вывода связанной с заказами информации(счета,реализации,закрытия и т.п.)ну и все это заносится в ту строку заказа,которая выводится в данный момент. НО почему то при тестовых 11 заказах событие ПриВыводеСтроки вызывается несколько тысяч раз... Пробовал комментировать код заполнения - все нормально...11 вызовов ИТАК ВОПРОС: какие команды могут спровоцировать это событие? |
|||
1
mikecool
26.12.11
✎
12:32
|
обновление формы?
|
|||
2
aleks-id
26.12.11
✎
12:32
|
потому что шарканье мышкой вызывает перерисовку
|
|||
3
mikecool
26.12.11
✎
12:34
|
не выполнять запросики в при выводе строки
использовать при получении данных - в начале обработчика получить данные для всего набора, нарисовать куда нужно |
|||
4
aleks-id
26.12.11
✎
12:35
|
а мне вот интересно, нельзя разве в первом запросе получить все данные? или мусье джойнить не умеет?
|
|||
5
Fish
26.12.11
✎
12:37
|
(4) Видимо можно, но запросы в ПриВыводеСтроки гораздо интереснее :)))
|
|||
6
mikecool
26.12.11
✎
12:37
|
(5) +1 их же так много - таких классных запросиков...
|
|||
7
hhhh
26.12.11
✎
12:39
|
(0) может вы при выводе строки данные меняете? И строка опять выводится.
|
|||
8
Fish
26.12.11
✎
12:41
|
(7) Естественно меняет: "Затем в событии ПриВыводеСтроки вызывается процедура, которая составляет запросики для вывода связанной с заказами информации(счета,реализации,закрытия и т.п.)ну и все это заносится в ту строку заказа,которая выводится в данный момент. " :)))
|
|||
9
hhhh
26.12.11
✎
12:45
|
(8) ну тогда это нормально. Непонятно почему ТС переживает.
|
|||
10
FiftyStars
26.12.11
✎
12:47
|
(1) нет
(2) нет (3) как узнать что все 10...15...20...и тд строк вывелось? (4) Заказы в списке должны быть все, а чтобы лишнюю инфу не хранить(ее на каждый заказ около 20 колонок), инфу эту я получать должен при выводе строк на экран... (5) это нормально если база большая, и чтобы показывать пользователю информацию только по тем заказам которые он видит а не по всем что есть(их же могут быть тысячи) допустим у меня 1000 заказов....25 параметров у каждого...25 000 ячеек заполнять нужно чтоли? |
|||
11
FiftyStars
26.12.11
✎
12:49
|
(7) вобще то в этом событии параметр есть ДанныеСтроки...он и служит для того чтобы менять ДанныеСтроки...так что бред
|
|||
12
Inform
26.12.11
✎
12:52
|
(0) ПриВыводеСтроки() оставлен для совместимости с 8.0, везде для таких случаев в 8.1 необходимо использовать обработчик ПриПолученииДанных():
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки; ... КонецЦикла; |
|||
13
FiftyStars
26.12.11
✎
12:53
|
(7)кстати если так, то вызов события не должен никогда прекращаться...так как изменение данных текущей строки по этой логике должно вызывать Еще один вызов события ПриВыводеСтроки, и снова это повторяется и снова и снова и по идее должно зациклиться...но ведь через несколько тысяч итераций все таки это сумашествие прекращается
|
|||
14
FiftyStars
26.12.11
✎
12:54
|
(12)спасибо =) хоть что то дельное)
Щас попробую, отпишусь)) |
|||
15
Inform
26.12.11
✎
12:58
|
(14) ну обрабатываем данные естественно скопом как тут и сказали, а не для каждой строки делаем запрос, не забывай
|
|||
16
FiftyStars
26.12.11
✎
13:07
|
(15)да я сам хотел это сделать....но че то не знал как получить только те строки которые вывелись
то есть из 1000 заказов пользователь видит только 15 с 15 по 29ую и вот как отловить момент когда вывелась 29строка я даже не предполагал Спасибо=)Учуууусь жЭ =) |
|||
17
mikecool
26.12.11
✎
13:11
|
(10) как узнать что все 10...15...20...и тд строк вывелось? - ОформленияСтроки это коллекция выведенных строк
|
|||
18
FiftyStars
26.12.11
✎
13:21
|
(17) я уже понял, просто раньше думал что ОформлениеСтроки это ОФОРМЛЕНИЕ строки...вобщем чувствую скоро нужно будет покупать переводчик "РУССКИЙ - 1С"...просто описания 1Совцев теряют смысл постепенно....походу они разрабатывают на английском а потом переводят всё автопереводчиком... скоро наверное будет так - "Справочник сохранять значения где делать like"...
Сбивают с толку названия методов и т.д., да и справку писал сумашедший турок с тремя классами образования,живущий на помойке и питающийся отбросами |
|||
19
FiftyStars
26.12.11
✎
13:22
|
:DDD
|
|||
20
FiftyStars
26.12.11
✎
13:24
|
СПЕЦСИМВОЛ = ESCAPE
На каком языке? |
|||
21
FiftyStars
26.12.11
✎
13:25
|
так примерчик)
|
|||
22
Reset
26.12.11
✎
13:37
|
Ты себя сильно переоцениваешь. То, что ты не понимаешь, это просто ты глуповат, а не термины.
|
|||
23
kosts
26.12.11
✎
13:49
|
(18) содержание ОформленияСтрок как раз соответствуют своему наименованию.
ведь табличное поле - это визуальное представление таблицы значений (почти синоним "оформление ТЗ"). |
|||
24
vmv
26.12.11
✎
14:37
|
(0) УФ форму используй и динамический список - толку больше будет, ПриВыводеСтроки() - метод-паразит, соблазняющий неокрепшие умы
|
|||
25
FiftyStars
26.12.11
✎
18:10
|
(24) УФ нельзя
(22) сосамба чупа чупс, молчать, я б тебя назвал в ответ кем нибудь да не пропустит фильтр...че я тебя за живое задел?обоспрал твою прелесть "1С"...и че...в каждой вещи есть кал и че теперь все тупые а ты СВЕРХБОГ мегакрутой и мегахороший?ты просто дятел и ничтожество задроченое (23) Ну дак оформление строк относится больше к ТП а ДанныеСтроки - к ТЗ =)) ну вобщем по логике оформление это визуальная часть, к данным отношения не должна иметь)))Можно в ячейке к примеру картинку члена нарисовать, но значение ячейки может у не иметь отношения к половым органам =))хех ВОБЩЕМ БЕДА Сделал все в событии ПриПолученииДанных и все равно 4 с половиной тыщи вызовов события... |
|||
26
FiftyStars
26.12.11
✎
18:17
|
Хотя стало заметно быстрее работать
При том варианте что был на 10ти записях начинались огромные тормоза при работе Конфигурации |
|||
27
vmv
26.12.11
✎
18:53
|
(26) если уж и использовать ПриПолученииДанных() и ПриВыводеСтроки(), то важно соблюдать простое правило
ДЛЯ КАЖДОГО модифицируемого поля табличного поля в этих обработчиках нужно ставить условия примерно такого вида УстановитьЗначение = ВыборкаЗапроса.ЗначениеРющки; Если Строка.ПолеРющки <> ПриПолученииДанных Тогда Строка.ПолеРющки = УстановитьЗначение; КонецЕсли; ..... УстановитьЗначение = ВыборкаЗапроса.ЗначениеФиндиклющки; Если Строка.Финдиклющки <> УстановитьЗначение Тогда Строка.Финдиклющки = УстановитьЗначение; КонецЕсли; Казалось бы кода станет больше, но вызовы обработчика резко упадут до мизера, если четко следовать правилу ДЛЯ КАЖДОГО |
|||
28
vmv
26.12.11
✎
18:54
|
Если Строка.ПолеРющки <> УстановитьЗначение Тогда
Строка.ПолеРющки = УстановитьЗначение; КонецЕсли; там так |
|||
29
QLgKR
26.12.11
✎
19:16
|
(25) пример кода можно
|
|||
30
QLgKR
26.12.11
✎
19:21
|
(18)
> походу они разрабатывают на английском а потом переводят всё автопереводчиком... Бинго! На каком же языке им еще разрабатывать?! Пишут же на С++. > Сбивают с толку названия методов и т.д., да и справку писал сумашедший турок с тремя классами образования,живущий на помойке и питающийся отбросами Думаю, что с образованием и питанием у него гораздо лучше многих |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |