|
Получить всю номенклатуру в форме списка ОФ | ☑ | ||
---|---|---|---|---|
0
bebibo
12.05.24
✎
17:52
|
Как в обычных формах в форме списка номенклатуры получить весь список номенклатуры и обойти его циклом и проделать некие действия?
Идея такая: есть галочка "Выделить номенклатуру", если она истина - окрашивать нужную мне номенклатуру. Смотрю везде ОформлениеСтрок используется. Но там не вся номенклатура, а только то что видим на экране. Делал изначально в "СписокПриПолученииДанных" циклом обходил, без условия по галочке - оказалось долго. Решили сделать галочку и если она истина - лучше подождем минуту когда весь список обойдет и окрасит и всё. |
|||
1
Волшебник
12.05.24
✎
19:03
|
Используйте запрос
|
|||
2
bebibo
12.05.24
✎
19:10
|
(1) Можно подробнее? Мне нужно окрасить строки, запрос как тут поможет?
Мне же циклом пройтись и окрасить. Вот цикл этот не могу сделать. |
|||
3
Волшебник
12.05.24
✎
19:15
|
(2) Используйте запрос для выборки нужных ссылок, потом окрашивайте по вхождению в множество отобранного, которое сохраните в Соответствие или ТаблицаЗначений с индексом по ссылке.
|
|||
4
bebibo
12.05.24
✎
19:37
|
(3) "Используйте запрос для выборки нужных ссылок" -понятно
"потом окрашивайте по вхождению в множество отобранного, которое сохраните в Соответствие или ТаблицаЗначений с индексом по ссылке" - не понятно на 50%. Типа я понял, что отобранное по индексу окрашивать, но где и в какой момент? где мне этот цикл сделать по индексу и окрасить - вот что не пойму. |
|||
5
Волшебник
12.05.24
✎
19:59
|
(4) Вам не нужен свой цикл. Платформа вызывает ПриВыводеСтроки в своём цикле
|
|||
6
Milka2023
12.05.24
✎
20:10
|
(5) Так в ПриВыводеСтроки тоже только те данные, которые мы видим.
|
|||
7
bebibo
12.05.24
✎
20:12
|
Никто на этом форуме не раскрашивал в обычных формах в форме списка номенклатуры нужные строки? Поделитесь как делали? Пожалуйста!
|
|||
8
Волшебник
12.05.24
✎
20:38
|
(6) А другие не надо раскрашивать
|
|||
9
Волшебник
12.05.24
✎
20:38
|
(7) Вы тут не хамите
|
|||
10
bebibo
12.05.24
✎
20:40
|
(8) Надо. Потому что если крашу только те ,которые вижу, это долго отрабатывает, каждый раз колесиком двину и программа подвисает на 3 сек, поэтому и хочу за раз всё раскрасить.
|
|||
11
bebibo
12.05.24
✎
20:41
|
(9) ахах, я тут с вежливостью "Пожалуйста поделитесь кто делал", а мне - я хамло( Обидно
|
|||
12
Волшебник
12.05.24
✎
21:02
|
(10) Вы должны красить быстро. Ваш код должен моментально определять условие раскраски. Для этого я предложил Соответствие или ТЗ с индексом. Но Вы лезете со своими циклами...
|
|||
13
Волшебник
12.05.24
✎
21:03
|
(11) >> Никто на этом форуме не раскрашивал в обычных формах в форме списка номенклатуры нужные строки?
Ну я раскрашивал. И чо? |
|||
14
lEvGl
гуру
12.05.24
✎
21:11
|
В раскрасках форм надо понимать основное - цвет может быть установлен только в процедурах приполученииданных/привыводестроки, нельзя один раз покрасить строку и успокоиться. Цвет нигде хранится, поэтому он устанавливается каждый раз, когда строку становится видно. Поэтому вам и сказали сделать табличку, где будут храниться данные, по которым можно понять, надо красить очередную строку, выводимую в список, или нет. Это уже оптимизированный вариант. (3) Ну Вы тоже так сразу готовый вариант выдаете, это пагубно сказывается на психике неподготовленного человека, а потом у них в голове поселяться начинают
|
|||
15
Волшебник
12.05.24
✎
21:11
|
(14) Мой вариант (3) так себе. Надо заполнять кэш по мере получения данных в своём событии.
|
|||
16
lEvGl
гуру
12.05.24
✎
21:16
|
(15) я за получение данных разом, постепенное заполнение также будет тормозить при каждой отработке. но это из области "на вкус и цвет" или, что вернее, "зависит от задачи"
|
|||
17
Волшебник
12.05.24
✎
21:16
|
(16) Надо заценить объёмы и скорости применительно к конкретной базе, серверу, пользователям, т.е. на практике. Справочники номенклатур бывают разные. Могут сработать оба подхода.
|
|||
18
bebibo
12.05.24
✎
21:21
|
(16) вот именно, постепенное заполнение - очень тормозит.
Подскажите подробнее как разом сделать? Как вот в ТЧ взял и окрасил все строки которые надо |
|||
19
lEvGl
гуру
12.05.24
✎
21:24
|
(17) согласен
(0) понятно чо то? |
|||
20
lEvGl
гуру
12.05.24
✎
21:38
|
(18) можно и тч, обработки например, но это будет уже не форма списка в традиционном понимании
ПередОткрытием ЗАПРОСОМ формируется таблица с нужными к окраске ссылками (ставятся отборы), вешается в память, и приполученииданных идет обращение к этой таблице для понимания необходимости окраски строки с конкретной ссылкой. все. тоже самое происходит при постепенном заполнении этой таблицы, разница в том, что она заполняется.. Постепенно.. при том же получении данных, для того, чтобы при повторном обращении к этой таблице, данные в ней уже были пс. интересно, что в последнее время этот вопрос возникает почти каждый день ппс. ааа это потому что появился один не на шутку заинтересованный Окраска строк в форме списка, обычные формы перечитайте там, перечитайте тут, поймите как это делается без оптимизации, потом покажете, что получилось и будем оптимизировать |
|||
21
Milka2023
12.05.24
✎
21:56
|
(20) В той теме я сделал всё ОК.
Но сказали давай по галочке, потому что это иногда не надо. Говорят если истина, тогда всю сразу окрась, чтобы не тормозил список при прокрутке. У меня так: НеликвидВсе = ПолучитьИнформациюОНеликвидеВсе(МассивСтрок); Для Каждого ОформлениеСтроки из ОформленияСтрок Цикл ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки; Если НеликвидВсе.Количество()>0 тогда ИндексНайденого = НеликвидВсе.Найти(ДанныеСтроки.Ссылка); Если ИндексНайденого <> Неопределено Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Красный; КонецЕсли; КонецЕсли; |
|||
22
lEvGl
гуру
12.05.24
✎
22:30
|
(21)
Говорят если истина, тогда всю сразу окрась, чтобы не тормозил список при прокрутке. эта пять вашим постановщикам задач. они мягко говоря неправы, т к платформа не дает такой возможности, либо у вас с ними произошло маленькое недопонимание ну норм это НеликвидВсе содержит ссылки которые надо красить, Но только из тех, которые переданы через МассивСтрок. Смысл оптимизации в том, чтобы ПередОткрытием формы заиметь такой же массив но по всей номенклатуре, коотрую надо красить (если это номенклатура). Объявить этот массив как переменную формы или сделать его реквизитом формы, чтобы переменная не затерлась после отработки ПередОткрытием и была доступна при последующих вызовах ПриПолученииДанных. Тогда можно будет сразу написать ИндексНайденого = НеликвидВсе.Найти(ДанныеСтроки.Ссылка); Если ИндексНайденого <> Неопределено Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Красный; за счет этого время поиска кратно сокращается, тормоза уходят (возможно) |
|||
23
lEvGl
гуру
12.05.24
✎
22:12
|
ну а с условием по галке думаю справитесь сами
|
|||
24
Волшебник
12.05.24
✎
23:05
|
(21) У Вас цикл "Для Каждого" не закрылся, а так бред ещё тот...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |