Имя: Пароль:
1C
 
ПодключитьОбработчикИзмененияДанных в УФ, как?
,
0 novichok79
 
21.08.17
11:04
Доброго времени суток, дорогие коллеги.
Вопрос - как отловить событие изменения отбора в динамическом списке? Платформа - 1С:Предприятие 8.3 (8.3.10.2299).
Заранее благодарю за помощь.
1 novichok79
 
21.08.17
11:07
ПриПолученииДанных, ОбновлениеОтображения?
2 novichok79
 
21.08.17
11:17
можно попробовать конечно еще ПриОбновленииСоставаПользовательскихНастроекНаСервере
кто-нибудь плавал, знает?
3 novichok79
 
21.08.17
11:20
(2) не, не вариант
4 novichok79
 
21.08.17
11:35
Отстойные эти управляемые формы, не знаю почему на них здесь так много фапают. Такой гемор нало ловить, по сути, для реализации типовых функций - отловить изменение отбора в динамическом списке. Для моих целей подходит обработчик -
ПриПолученииДанныхНаСервере, но он на СервереБезКонтекста, то есть добраться до элементов формы я не могу. Кто б***ь это придумал?
5 Вафель
 
21.08.17
11:36
(4) до недавнего времени и его не было
6 novichok79
 
21.08.17
11:41
(5) А смысл придумывать эту функцию, если она применима к каким-то общим данным базы, а не к элементам формы? Можно придумать недоступные элементы отбора и через элементы на форме устанавливать их в списке (по типу отбора по периоду на форме в УТ 11), тогда эти недоступные наборы всегда будут присутствовать в компоновщике списка, и я смогу отловить их значение когда угодно. Но до тех пор пока не попадется крутой бесстрашный пользователь, который способен сам установить произвольный отбор в демоническом списке, то что тогда?
7 novichok79
 
21.08.17
11:45
(0) решено обработчиком ожидания + при быстрых отборов на форме. еще раз, УФ - кусок какашки, даже в 8.3.10
8 Вафель
 
21.08.17
11:45
Это называется "Жри что дают"
9 novichok79
 
21.08.17
11:47
(8) только об этом подумал, что дали красивый велосипед с немножко квадратными колесами, без подписанных передач на переключателе.
10 Господин ПЖ
 
21.08.17
12:13
>не знаю почему на них здесь так много фапают

тупорезы не умеют настроить привязки

в УФ все неплохо пока задача в рамках "2+2"
11 novichok79
 
21.08.17
12:29
(10) не понимаю чего сложного в привязках, там все предельно ясно - 4 стороны и 3 типа привязок, остается только комбинировать, да и то, если привязывать левую границу, то по вертикали ее точно не увязать. уж лучше привязки с четкими размерами, чем плавучая хрень в УФ, где надо изращаться с декорациями заданной длины, вместо наименований, чтобы сделать аналогичную ОФ шапку документа.
12 Вафель
 
21.08.17
12:33
Основная проблема ОФ была не в самих привязках, а то что в конфигураторе не растягивались элементы при изменении размера формы
13 Господин ПЖ
 
21.08.17
12:45
>а то что в конфигураторе не растягивались элементы при изменении размера формы

щито вы говорите...
14 novichok79
 
21.08.17
12:47
(12) чего? по умолчанию они тянутся, там даже думать не надо про привязки иногда.
15 Fedor-1971
 
21.08.17
13:46
(7)(10) ну зачем же, вот так, категорично. 1С развивает свою систему, несколько скачками (туда, сюда, обратно ...), но движется к балансу производительность/удобство и для программиста, и для пользователя.
Что УФ, что ОФ имеют свои ограничения (что-то проще в ОФ, что-то в УФ). Сейчас в УФ добавляются некоторые плюшки из арсенала ОФ.

На мой взгляд, чисто моё мнение, от ОФ отказались из-за слишком хитрых программеров (очень уж просто выдать го-но код без раздумий "А что будет с системой"). Хотя тормозов на УФ можно устроить больше, при грамотном использовании они ничем не хуже ОФ, а ограничения программера не такие уж и больше (хоть мысли появляются "а что и где я собственно делаю?". Веток "как показать ТабличныйДокумент" или "как открыть форму" наСервере предостаточно).
Лично мне несколько не понятно принятое 1С решение: об отсутствии "Напечатать" у ТабличногоДокумента на сервере - с одной стороны, печатаем на принтер у пользователя и тут всё логично, но с другой стороны PDF принтер можно поставить только на сервере и всем выдавать готовые PDF файлы (админу проще) и доступ раздавать не нужно
16 novichok79
 
21.08.17
14:00
(15) потрачен был час времени, чтобы сделать вывод состояния отбора в форме списка, да и то с костылями. это не какая уж сильно "нагружающая сервер или клиент" операция, это что-то элементарное в моем понимании. время бесценно, поэтому мои суждения столь категоричны. только на полностью УГ можно потратить час, чтобы вывести надпись на форме.
17 Fedor-1971
 
21.08.17
14:13
(16) так нужна была просто универсальная индикация выставленных пользователем отборов?
18 Fedor-1971
 
21.08.17
14:16
17+ примерно как в журнале платежей на БП 3? (там такси и отображаются выставленные пользователем фильтры и отборы с пометкой "Х", типа удалить)
19 novichok79
 
21.08.17
14:17
(17) Была старая крутая CRM на Delphi и BDE, при пролистывании списков тормозила, да и вообще, по сравнению с 1С с тем же объемом данных и работающих пользователей - тормозила. Я переписал ее на управляемые формы на базе БСП 2.4.2
В данный момент, осталось допиливание рюшечек в формах, "сделай как было в старой программе", или максимально похоже. Индикация отборов - это не совсем то, что нужно, но довольно близко.
20 novichok79
 
21.08.17
14:18
(18) ну то есть посчитать количество документов заданного вида с таким-то статусом, с учетом наложенного (наклатого :D ?) пользователем фильтра в динамическом списке.
21 novichok79
 
21.08.17
14:25
https://s30.postimg.org/8jnap8ia7/example.png

вот надпись под фильтром по периоду, как сделать ее вычисление только по нужному событию, а не по таймеру, я не знаю.
22 Вафель
 
21.08.17
14:57
так пользовательские отборы сами создают элементы.
Зачем еще какая то индикация?
23 novichok79
 
21.08.17
15:22
(22) задача - вывести количество ссылок в списке по каждому статусу, в зависимости от отбора, установленного в дин. списке. как это сделать быстро?
24 FIXXXL
 
21.08.17
16:22
(23) ПодключитьОбработчикОжидания() с интервалом 0,1
25 novichok79
 
21.08.17
16:28
(24) а, то есть, вызывать сервер каждые 0.1 секунды? замечательное решение.
26 Вафель
 
21.08.17
16:29
(24) с таким интервалом только разово
27 FIXXXL
 
21.08.17
16:30
(26) соответственно на событие повесить
28 Вафель
 
21.08.17
16:34
(27) на какое?
29 FIXXXL
 
21.08.17
16:35
(28) ПриОбновленииСоставаПользовательскихНастроекНаСервере() прокатит?
30 novichok79
 
21.08.17
16:36
(29) см. (2) и (3)
31 Вафель
 
21.08.17
16:37
(29) и ты хочешь подключить обработчик ожидания из события на сервере?
32 FIXXXL
 
21.08.17
16:57
(31) не хочу
(30) что не получилось?
33 novichok79
 
21.08.17
17:00
(32) не всегда отрабатывает
34 Вафель
 
21.08.17
17:01
(33) может ты поиск (помимо отбора) тоже хочешь обрабатывать?
35 novichok79
 
21.08.17
18:49
(34) только отбор в дин. списке
36 lexasan
 
21.08.17
19:25
Метод Оповестить() и ОбработкаОповещения() не пробовали?
37 lexasan
 
21.08.17
19:35
(36) Немного тупанул, невнимательно прочитал постановку задачи.
Нашел вот такую статейку от 1С
https://its.1c.ru/db/metod8dev#content:2836:hdoc
38 lexasan
 
21.08.17
19:38
(37) Но чтобы получить количество ссылок по отбору, нужно будет делать отдельный запрос с этим отбором, либо получать СКД динамического списка и колдовать уже с ним, например изменять текст запроса так, чтобы посчитать количество ссылок с доп. условиями
39 novichok79
 
21.08.17
20:41
(37) метод недоступен в режиме тонкого клиента.
(38) я и сделал отдельный запрос.
40 novichok79
 
21.08.17
20:42
(36) когда конкретно оповещать, если нет события, откуда можно выполнить команду?
41 Fedor-1971
 
22.08.17
09:06
(36) Оповестить() не работал (не работает?) между сеансами, т.е. один пользователь изменил, второму пользователю пришло оповещение про изменение для ДС - это надо поколдовать.

(40) вот из ОбработкаОповещения() и выполняй свой подсчёт. Суть идеи в (36): например, в подписке на событие ПослеЗаписи всего что влияет на данный ДС ставим Оповестить("ИзмененыДанныеДСЛяЛя"), а в ОбработкаОповещения проверяем Если Событие="ИзмененыДанныеДСЛяЛя" тогда считаем, что нужно КонецЕсли;
Недостаток описан выше.

Тогда уж лучше использовать: ОповеститьОбИзменении(<Ссылка>), то же есть НО, у ДС должна быть заполнена таблица по умолчанию. Сработает ли ОбработкаОповещеия не скажу, надо проверять
42 novichok79
 
22.08.17
09:40
(41) автообновление списка документов происходит каждые 30 секунд и по обработке оповещения тоже. как отловить событие, когда пользователь, знающий не по наслышке что такое управляемый интерфейс, добрался до настроек отбора в динамическом списке и поменял их?
43 Fedor-1971
 
22.08.17
10:09
(42) Можно попробовать: ПодключитьОбработчикИзмененияДанных(<ИмяДанных>, <ИмяПроцедуры>, <ОтслеживатьПодчиненныеДанные>) с отслеживание м изменения отбора, или таки выяснить причины почему не всегда срабатывает (2)
44 novichok79
 
22.08.17
10:32
(43) ха, если бы обработчик ПодключитьОбработчикИзмененияДанных для управляемых форм был доступен, этой темы бы не появилось.
45 Fedor-1971
 
22.08.17
10:39
(44) да, тупанул малость. Тогда остаётся разобраться с ПриОбновленииСоставаПользовательскихНастроекНаСервере.
Надо выделить время порыться в новых версиях 8.3
46 novichok79
 
22.08.17
10:43
(45) Это тоже не помогло. Я тоже сначала на этот обработчик подумал.