Вход | Регистрация
    1  2   
1С:Предприятие :: 1С:Предприятие 8 общая

Динамический список, как правильно "приготовить" количество элементов

Динамический список, как правильно "приготовить" количество элементов
Я
   exwill
 
24.11.21 - 20:43
Есть динамический список и форма списка справочника. Нужно в форме отображать количество элементов в динамическом списке. Как наиболее правильно это сделать? Какой обработчик события задействовать?
   acht
 
1 - 24.11.21 - 20:48
Миша, ты забыл переключится на твинка?
Или таки пошел по стопам гени и начал устраивать гуру-тесты?
   exwill
 
2 - 24.11.21 - 20:54
(1) Как-то мимо прошло. Мне в самом деле надо
   Casey1984
 
3 - 24.11.21 - 21:50
(0) Что значит "количество элементов в динамическом списке"?
   Злопчинский
 
4 - 24.11.21 - 21:52
обсуждалось уже достаточно подробно или здесь или на ИС
   polosov
 
5 - 24.11.21 - 21:55
(0) Настройки в построитель. Выполнить запрос. Посчитать количество. Но это извращенство.
   mistеr
 
6 - 24.11.21 - 22:00
(0) Заменить динамический список на коллекцию.

У динамического списка по определению нет количества (может меняться каждые 0,1 сек.).
   exwill
 
7 - 24.11.21 - 22:03
(6) Это еще большее извращение. Рисовать форму списка справочника
   exwill
 
8 - 24.11.21 - 22:04
(3) Элементы можно пересчитать: один, два, три )))
   vde69
 
9 - 24.11.21 - 22:04
у динамического списка количество = мин(сколько влезло на экран * 1.5, сколько доступно в таблице)

тебе эту величину надо? тогда ее считаем в событии "при получении данных"

или тебе нужен размер таблицы?

или тебе нужно сколько записей из таблицы тебе доступны по правам?

или тебе нужно еще с учетом установленых отборов?
   exwill
 
10 - 24.11.21 - 22:05
(4) Да как-то скудно
   exwill
 
11 - 24.11.21 - 22:06
(9) Вот! При получении данных. Спасибо!
   Ногаминебить
 
12 - 24.11.21 - 22:15
В БП3 в форме ЭДО с контрагентами есть нечто похожее.
   Casey1984
 
13 - 25.11.21 - 00:40
(8) А какие элементы считать? И что такое элементы? Как считать мы уже выяснили: 1, 2, 3...
   acanta
 
14 - 25.11.21 - 00:42
(13) и что такое "можно"..
   ДедМорроз
 
15 - 25.11.21 - 09:34
Считать можно АВТОНОМЕРЗАПИСИ.
Но,можно в при получении данных сделать тот же запрос,что и для списка только с приставкой КОЛИЧЕСТВО
   exwill
 
16 - 25.11.21 - 11:01
(9) Вот ты хороший вопрос задал.
"или тебе нужно еще с учетом установленых отборов?"
Конечно с учетом. Где и кому может понадобиться без учета?
   exwill
 
17 - 25.11.21 - 11:02
(15) Вопрос в том - как этот запрос вытащить. С учетом всех установленных отборов
   Garykom
 
18 - 25.11.21 - 11:05
(0) ты же преподаватель и не знаешь ответ на такой простой вопрос?

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.