|
Динамический список, как правильно "приготовить" количество элементов | ☑ | ||
---|---|---|---|---|
0
exwill
24.11.21
✎
20:43
|
Есть динамический список и форма списка справочника. Нужно в форме отображать количество элементов в динамическом списке. Как наиболее правильно это сделать? Какой обработчик события задействовать?
|
|||
28
exwill
25.11.21
✎
11:33
|
(25) Ох уж! Показываешь пользователю работу со списком. Говоришь: смотри как удобно, правую кнопку нажал, в середине есть пункт "Найти...", и вот ты уже отобрал все нужные тебе записи. Пользователь: Вау! А сколько их?
Пропасть между разработчиками 1С и пользователями их продукта просто огромна. Почему такой очевидный вопрос от пользователя сразу не пришел в голову разработчику? |
|||
29
exwill
25.11.21
✎
11:34
|
(26) Спасибо, конечно. Но у меня проблема не в этом. А в том, на какой обработчик события эту роскошь повесить
|
|||
30
acht
25.11.21
✎
11:36
|
(28) Говоришь пользователю: смотри как удобно, правую кнопку нажал, в середине есть пункт "Вывести список". Или даже есть кнопка "Еще", а в ней опять таки "Вывести список". И смотришь номер последней строки.
|
|||
31
Garykom
гуру
25.11.21
✎
11:37
|
(29) у тебя глубоко неправильный в идеологии УФ вопрос
|
|||
32
mistеr
25.11.21
✎
11:37
|
(28) Потому что за таким вопросом, как правило, кроется плохо спроектированный интерфейс и/или бизнес процесс.
|
|||
33
Garykom
гуру
25.11.21
✎
11:38
|
(31)+ Пока ты крутишь/скроллишь список в базу могли новые элементы/документы записать прикинь
|
|||
34
fisher
25.11.21
✎
11:38
|
(28) Потому что разработчик платформы решал перпендикулярную инженерную задачу - как сделать пользователю комфортную работу со списками потенциально бесконечного размера. Которая исключает знание их количества.
Когда пользователю нужно это знать - это уже задача прикладного программиста обеспечить пользователя подходящими инструментами. |
|||
35
Garykom
гуру
25.11.21
✎
11:38
|
(32) именно
у программиста 1С числительные (которые при разработке UI) это один, два и много! |
|||
36
Aleksey
25.11.21
✎
11:39
|
(30) хорошо, что вы машины не проектируете. Смотри как удобно лючок бензобака открыл, веточку в бак вставил, вытаскивает и смотришь уровень топлива
|
|||
37
unbred
25.11.21
✎
11:39
|
(27) у тебя ДС рисуется при открытии. при открытии (27)
|
|||
38
Garykom
гуру
25.11.21
✎
11:40
|
(36) делается отдельная элемента (индикатор уровня топлива) на нужной форме
которая обновляется в нужные моменты |
|||
39
unbred
25.11.21
✎
11:40
|
(37) к (29)
|
|||
40
exwill
25.11.21
✎
11:41
|
(30) Хорошая шутка!
|
|||
41
exwill
25.11.21
✎
11:42
|
(37) И после открытия тоже рисуется. Ну что вы в самом деле!
|
|||
42
exwill
25.11.21
✎
11:43
|
(38) Прикольно! Осталось только определить эти нужные моменты )))
|
|||
43
acht
25.11.21
✎
11:45
|
Я так понимаю, что от любого решения Мишенька теперь будет воротить нос и выпендриваться.
Ну, что сказать... Тебе надо - ты и делай, чо. |
|||
44
exwill
25.11.21
✎
11:45
|
(34) О чем я и говорю. Надо не "инженерные" задачи решать, а задачи пользователей.
|
|||
45
Garykom
гуру
25.11.21
✎
11:45
|
(42) или по таймеру или в момент неких действий юзера
и да получение уровня топлива никак не привязано к форме списка, это независимое |
|||
46
Garykom
гуру
25.11.21
✎
11:46
|
(45)+ причем лучше совместить, чтобы если очень много действий то не надо каждый раз получать, ибо еще мало времени прошло
|
|||
47
fisher
25.11.21
✎
11:49
|
(44) Задачи пользователей не всегда возможно решить в реальной жизни так, как пользователям хотелось бы. Иначе все пользователи были бы молодыми, красивыми и богатыми. Но ты не инженер, тебе не понять.
ЗЫ. Но с контекстным событием обновления ДС действительно нехорошо получилось :) Нету его. |
|||
48
oslokot
25.11.21
✎
11:49
|
(0) отображать кол-во элементов после применения платформенных пользовательских отборов? Если так, то увы не получится - событий нет и их не перехватить
|
|||
49
Garykom
гуру
25.11.21
✎
11:52
|
(47) это противоречит асинхронности и отказу от модальности
иначе разрабы конф начали бы на него разное вешать и получать фризы |
|||
50
fisher
25.11.21
✎
11:58
|
(49) > иначе разрабы конф начали бы на него разное вешать
Хорошая присказка. Помню ее долго приговаривали, не давая пользователю делать произвольные отборы в динамических списках. Мол тормозить будет по неиндексированным полям. Потом плюнули. |
|||
51
exwill
25.11.21
✎
11:58
|
(49) Все дело в разрабах конф? Может быть, может быть...
|
|||
52
fisher
25.11.21
✎
11:58
|
Тьфу, произвольные сортировки.
|
|||
53
fisher
25.11.21
✎
12:00
|
А забирать возможности у разрабов конф из "благих побуждений" - это дорога в ад. Вы или крестик снимите или трусы наденьте.
|
|||
54
exwill
25.11.21
✎
12:01
|
(50) Нет. Он истину глаголет. В экосистеме 1С, состоящей из разработчиков платформы, разработчиков типовых, разработчиков "последней мили" и пользователей, разработчики типовых - самое слабое звено. Их по хорошему стоило бы давно ликвидировать
|
|||
55
fisher
25.11.21
✎
12:04
|
(54) Только ликвидаторов потом тоже обязательно зачистить. Там достойных людей никогда не встречается.
|
|||
56
exwill
25.11.21
✎
12:12
|
(47) Да ладно бы и фиг с ним. Берем неконтекстное ПриПолученииДанных(). Разработчики нам туда вроде как настройки ДС кидают вторым параметром. В настройках вроде как Отбор есть. Казалось бы бери и строй запрос. Ура, вроде как. Ставишь точку останова. Заходишь в список, делаешь отбор через правую кнопку. Смотришь в конфигураторе в отбор. А он ПУСТОЙ. И вот тут начинаешь материться. 1С в очередной раз сожрала у меня время. Чавкнула и не подавилась. Недоделанность хаотично разбросана по всей 1С. Никогда не знаешь, где напорешься. Ну лучше бы не делали этот обработчик события! А начав делать, доделали бы до конца!
|
|||
57
exwill
25.11.21
✎
12:13
|
(55) Ликвидировать звено, а не людей. Экий вы кровожадный
|
|||
58
acht
25.11.21
✎
12:16
|
Вот что-что, а потрындеть Калимулин может. Любит, умеет, практикует.
Ты тему зачем создал? |
|||
59
Kassern
25.11.21
✎
12:19
|
(56) "А он ПУСТОЙ" вы просто не умеете его готовить... https://yadi.sk/i/v6MwK0-idTQVCQ
|
|||
60
exwill
25.11.21
✎
12:22
|
(59) Просто повторите ровно то, что я описал. И убедитесь, что он будет пустым. На списке правая кнопка...
|
|||
61
fisher
25.11.21
✎
12:23
|
(57) То есть типовые не нужны? Мне тяжело понимать мысли неординарных людей.
|
|||
62
DexterMorgan
25.11.21
✎
12:25
|
||||
63
Kassern
25.11.21
✎
12:25
|
(60) а вы попробуйте зайти в "Настроить список" и установить отбор
|
|||
64
exwill
25.11.21
✎
12:26
|
(61) Не нужно звено разработчиков равнооторванных как от пользователей, так и от "инженерных" проблем платформы.
|
|||
65
mistеr
25.11.21
✎
12:26
|
(56) Может расскажешь нам, как бы ты поступил, если бы был начальником разработчиков платформы? У тебя полный карт-бланш. Как бы ты реализовал получение количества строк в произвольном дин. списке из приклажного кода?
|
|||
66
exwill
25.11.21
✎
12:27
|
(62) Этот обработчик не годится
|
|||
67
acht
25.11.21
✎
12:27
|
(64) Так тебя же первого ликвидируют. В полном соответствии с твоей концепцией. Ты даже религию имени себя создать не успеешь, чтобы мученником веры стать.
|
|||
68
acht
25.11.21
✎
12:28
|
(65) > Как бы ты реализовал
Задал вопрос на мисте, конечно же. |
|||
69
exwill
25.11.21
✎
12:30
|
(63) А вы попробуйте правую кнопку. Ну о чем вы? Задача - отображать количество элементов ДС в ответ на произвольные действия пользователя.
|
|||
70
exwill
25.11.21
✎
12:31
|
(65) Я бы реализовал метод Количество() у ДС
|
|||
71
exwill
25.11.21
✎
12:31
|
(67) Я не разработчик типовых
|
|||
72
Kassern
25.11.21
✎
12:32
|
(69) ну так сделайте так, чтобы у пользователя был лишь определенный пул действий, и данные действия по отборам отражайте в настройках списка. Тогда у вас будет всегда заполненный отбор.
|
|||
73
mistеr
25.11.21
✎
12:33
|
(70) Я и спрашиваю, как бы реализовал?
Ты ведь представляешь себе, как работает ДС, какие запросы ваполняются, и т.д.? |
|||
74
Kassern
25.11.21
✎
12:33
|
(69) правая кнопка это не отбор динамического списка, а поиск по верх результирующей таблицы.
|
|||
75
exwill
25.11.21
✎
12:33
|
(72) Пользователи уже привыкли к правой кнопке. Да она и в самом деле удобна
|
|||
76
Kassern
25.11.21
✎
12:34
|
(74) поэтому ваши крики "А он ПУСТОЙ" тут вообще не уместны к отбору дин списка
|
|||
77
Kassern
25.11.21
✎
12:35
|
(75) переропределите команды для правой кнопки мыши, создавайте нужный отбор вместо поиска
|
|||
78
exwill
25.11.21
✎
12:36
|
(76) Очень даже уместны. Вот здесь, в аналогичной ситуации
https://wonderland.v8.1c.ru/blog/poluchenie-dannykh-dinamicheskogo-spiska/?sphrase_id=228175 отбор не пустой |
|||
79
exwill
25.11.21
✎
12:38
|
(73) Да, да. Это все очень сложно. Не под силу человеческому разуму
|
|||
80
DEVIce
25.11.21
✎
12:40
|
Видимо следующей хотелкой станет: "Так, количество есть. А давайте теперь добавим полосу прокрутки, чтобы понимать в каком месте из этого количества мы находимся".
|
|||
81
polosov
25.11.21
✎
12:43
|
(79) Уже бы давно убедил заказчика, что ему это не нужно, вместо нытья на форуме.
|
|||
82
Kassern
25.11.21
✎
12:45
|
(78) вы же не знаете, что разработчики платформы вшили в "ПолучитьИсполняемыеНастройкиКомпоновкиДанных". По факту у вас отбор дин списка пустой и есть пользовательский отбор по текущей ячейке. Видимо данный метод накладывает второй отбор на первый и выводит все отборы НастройкиКомпоновкиДанных
|
|||
83
Kassern
25.11.21
✎
12:49
|
(82) Тут же все черным по белому написано "Важным моментом является то, что схема и настройки, которые вы получаете от таблицы динамического списка, учитывают, в том числе, видимость колонок и применённый поиск." Есть отбор дин списка, есть видимость колонок, есть примененный поиск. Вы смотрите при получении данных на отбор дин списка и восклицаете "он ПУСТОЙ!" бред же...
|
|||
84
Garykom
гуру
25.11.21
✎
12:49
|
(80) угу и превратим в 1С 7.7
|
|||
85
Garikk
25.11.21
✎
12:53
|
(79) дело не в сложности, а в том что весь смылсл динамического списка пропадет если ты реализуешь количество
|
|||
86
polosov
25.11.21
✎
12:56
|
(85) Человек похоже не понимает, как работает ДС.
|
|||
87
Василий Алибабаевич
25.11.21
✎
12:58
|
Никто не мешает после каждого запроса устанавливать (например) в свойство динсписка количество обработанных записей. Ну... например как это делает в PHP mysqli. Или в переменную уровня СУБД как в VFP. Видимо в 1С порешали что это не нужно. Ну или сложно.
|
|||
88
exwill
25.11.21
✎
12:58
|
(85) С чего вдруг он пропадает? Если метод выполняется по требованию, а не автоматом?
|
|||
89
fisher
25.11.21
✎
12:59
|
(79) Ты не поверишь. Но банальная операция получения количества строк на больших таблицах является серьезной инженерной проблемой и красиво не решается. Либо страдает производительность и масштабируемость, либо страдает актуальность и адекватность этих данных. Динамический список с порционным считыванием позволяет отвязать производительность работы со списком от размера таблицы. Операция получения количества строк - приколачивает это решение обратно к плинтусу.
|
|||
90
exwill
25.11.21
✎
13:01
|
(83) Я восклицаю, потому что меня вводят в заблуждение и жрут мое время
|
|||
91
polosov
25.11.21
✎
13:02
|
(87) ДС получает данные порциями. Он не заботится заранее сколько записей удовлетворяют настройкам.
|
|||
92
polosov
25.11.21
✎
13:03
|
(88) По требованию можешь сам реализовать метод.
|
|||
93
exwill
25.11.21
✎
13:06
|
(89) Вот и выдайте разработчику молоток и гвозди в виде метода Количество(). А он уже сам решает: приколачивать или не приколачивать к плинтусу. Вот в моем конкретном случае вопросы производительности вообще не стоят. Вся база влезет в оперативную память раз десять. Мне нужно удобство, которое запросил пользователь
|
|||
94
exwill
25.11.21
✎
13:07
|
(92) С чего все и началось. Не могу. Т.е. сам метод-то не вопрос. Вопрос - к какому обработчику его прикрутить
|
|||
95
acht
25.11.21
✎
13:07
|
(90) > и жрут мое время
Сам-то чем занимаешься? |
|||
96
acht
25.11.21
✎
13:08
|
Следующим шагом, если Мишеньке назвать метод, он потрясет кулачками и заявит что это костыли.
|
|||
97
polosov
25.11.21
✎
13:09
|
(94) Кнопку сделай, чтобы пользователь по желанию количество рассчитывал. Объясни это заботой о производительности.
|
|||
98
Garykom
гуру
25.11.21
✎
13:10
|
(93) так не пользуйся шуруповертом ДС
возьми молоток с гвоздями аля запросы и реализуй сам с канбаном и 1Сницами |
|||
99
exwill
25.11.21
✎
13:11
|
(97) Да уж придется. Не вешать же на обработку ожидания
|
|||
100
exwill
25.11.21
✎
13:13
|
(98) Не тот уровень задачи. Я на нее изначально 10 мин. выделял (((
|
|||
101
acht
25.11.21
✎
13:13
|
Мишенька, а правда же - под своим честным ником и набросы лучше получаются, да?
Смотри, уже вторая страница! |
|||
102
fisher
25.11.21
✎
13:14
|
(93) Ну так тебе уже рассказали, как можно реализовать метод Количество().
(94) А нету. Кому приставили пистолет к голове - те через обработчик ожидания мутят с проверкой поменялись или нет настройки списка. |
|||
103
exwill
25.11.21
✎
13:16
|
(102) Не могу никак выбрать между кнопкой и обработчиком ожидания.
|
|||
104
fisher
25.11.21
✎
13:17
|
(103) На вот. Поставь плюсик собрату по несчастью.
https://infostart.ru/public/568012/ |
|||
105
Kassern
25.11.21
✎
13:17
|
(103) а чем не устраивает параметр "Строки"? Он как раз текущими выведенными строками ДС и заполнен с учетом отборов
|
|||
106
exwill
25.11.21
✎
13:22
|
(105) Как у тебя это получается? Всегда выпадать из контекста. Нужно количество элементов отвечающих всем условиям отбора. Оно не всегда равно количеству строк в ДС.
|
|||
107
exwill
25.11.21
✎
13:22
|
(104) Плюсанул
|
|||
108
fisher
25.11.21
✎
13:25
|
(107) Только пишут, что полнотекстовый поиск все равно в пролете.
|
|||
109
fisher
25.11.21
✎
13:25
|
Так что радикальным решением остается только статический список.
|
|||
110
Kassern
25.11.21
✎
13:26
|
(106) пример можете указать, какое условие отбора не попадает в параметр строки? Я пробовал и настройку дин списка и поиск по правой кнопке мыши, в строках у меня были как раз данные соответствующие всем отборам и выведенные на страницу. При скорлинге страницы параметр Строки так же обновляется.
|
|||
111
Kassern
25.11.21
✎
13:28
|
(110) я так понимаю нужные вообще все строки, а не то что на экране?
|
|||
112
Kassern
25.11.21
✎
13:29
|
(111) в этом случае лучше кнопку прикрутить, которая получить настройки, по ним уже получить общее количество элементов.
|
|||
113
Kassern
25.11.21
✎
13:29
|
*получит
|
|||
114
fisher
25.11.21
✎
13:31
|
(112) Новый поиск мимо настроек компоновки работает. Так что решение не универсально.
|
|||
115
exwill
25.11.21
✎
13:31
|
(112) Я тоже к кнопке склоняюсь. Можно, правда, еще и обработчик ожидания использовать
|
|||
116
oslokot
25.11.21
✎
13:32
|
Можно же было закончить тему на (48) посту, ан нет - все копошатся
|
|||
117
ДедМорроз
25.11.21
✎
13:33
|
Отборы динамического списка работают также как отборы таблицв значений,то есть пользователь отобрал строки и мы видим их,а в таблице-то все строки остались на месте,чем динамический список хуже.
А вот если явно установить отбор или программно,то мы его прекрасно получаем в настройках компоновки,так как он отвечает за запрлнение таблицы динамического списка,а не за отображение этой таблицы на экране. В таблице значений есть меиод Количество,но в ситуации пользовательского отбора он выведет не то,что нужно. Как вариант,при каждом обновлении списка выделять временно все строки и считать их количество,тогда будет то,что пользователь видит. |
|||
118
acanta
25.11.21
✎
13:36
|
Существует перечень задач, которые каждый программист должен попытаться решить (возможно несколькими способами) и прийти к выводу что идеал недостижим, но вот что получилось, то получилось. Полоса прокрутки в динамическом списке вероятно одна из них.
|
|||
119
acanta
25.11.21
✎
13:39
|
(117) правильно ли я понимаю, что динамический список с отбором и динамический список без отбора формируют в платформе один и тот же sql запрос? Или есть такое СУБД, где отбор транслируется в СУБД?
|
|||
120
Kassern
25.11.21
✎
13:44
|
(119) судя по ПолучитьИсполняемыеНастройкиКомпоновкиДанных() скорее всего на конечный отбор дин списка накладывается пользовательский отбор. Это легко проверить на каком нибудь большом списке документов к примеру, если просто поиском воспользоваться и вбить первые буквы контрагента без отбора по периоду, то это может выполняться ооочень долго. Но если встать на строчку с нужным клиентом и найти по значению текущей колонки, то отбор практически моментально отрабатывает.
|
|||
121
fisher
25.11.21
✎
14:18
|
(119) > динамический список с отбором и динамический список без отбора формируют в платформе один и тот же sql запрос
Не. Иначе была бы полная задница. Просто реализовано чуток через нее родимую. |
|||
122
Garykom
гуру
25.11.21
✎
14:19
|
(121) угу парой запросов с соединением вместо одного
|
|||
123
fisher
25.11.21
✎
14:22
|
Просто видать когда Такси рисовали, просто херанули сверху еще одним слоем асфальта, вместо капремонта.
|
|||
124
mistеr
25.11.21
✎
15:15
|
(119) Предположу, что если реквизит индексирован, то отбор транслируется в запрос.
|
|||
125
acanta
25.11.21
✎
15:19
|
(123) вероятно, для ремонта плитки бетонной шаблоны утеряны, а каменную брусчатку уже нечем пилить..
|
|||
126
ДедМорроз
26.11.21
✎
03:05
|
В табличном поле есть отбор,а есть поиск - первый должен транслироваться в запрос,а второй накладывается уже на результат запроса - причем при поиске никакогг запроса и не выполняется.
А отбор,как и сортировка - это вывод настроек СКД,и тут их не транслировать в запрос достаточно сложно. |
|||
127
DrZombi
гуру
26.11.21
✎
06:30
|
Мертвая хотелка, чертовки тормозит работу со списком. И в конечном счете бесполезное :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |