|
Выводить на форму реквизит через точку нормально? | ☑ | ||
---|---|---|---|---|
0
AndrewM
12.04.21
✎
09:16
|
То, что получать реквизит через точку не хорошо, знают уже, наверное, многие. Но как правильно ВЫВОДИТЬ реквизит на форму, можно ли это делать через точку (см. скриншот во вложении)? Как в этом случае ведёт себя система? Нормально ли так выводить реквизиты прямо на форму? Ведь это тоже обращение через точку, которое не ok.
Нигде в статьях не нахожу разбор, можно или нельзя так. Скрин: https://dropmefiles.com/IscAs |
|||
1
Базис
naïve
12.04.21
✎
09:29
|
Желательно так не делать, для разовых вещей нормально, но не аккуратно и возможные ошибки будут показывать не строку кода, а писать про форму - тебе самому будет неудобно искать ошибку.
Замерь, пожалуйста, производительность разных вариантов в однопользовательском и многопользовательском режимах. Учти, что первый замер даст странные цифры из-за кеширования. И научи нас. |
|||
2
Aleksey
12.04.21
✎
09:33
|
(1) нет там разницы
|
|||
3
Волшебник
12.04.21
✎
09:35
|
Опять точкафобия?
|
|||
4
Фрэнки
12.04.21
✎
09:38
|
при том, что перед выводом данных на форму идет получение данных из объекта на клиента. А если данные объекта уже получены, то сколько точек ни пихай, то все будет одинаково.
|
|||
5
Fedor-1971
12.04.21
✎
09:40
|
(0) на управляемую форму нормально. Собственно, там механизм подобен СКД
(1) проблема может проявиться только на поле с составным типом, и то, просто, поле будет пустым |
|||
6
fisher
12.04.21
✎
09:41
|
Ок или не ок обращение через точку в коде - вопрос ситуативный. Хотя во многих случаях не ок.
Здесь, думаю, что вообще не должно быть никаких проблем. Хотя ни разу эту шнягу не использовал. Я вообще узнал о такой возможности только спустя несколько лет разработки на УФ. Она довольно редко востребована. |
|||
7
Asmody
12.04.21
✎
09:43
|
Нужно не просто знать, что "не ок", но и понимать почему "не ок". Коллеги уже пояснили, что при обращении через точку объект выгребается целиком, с таб.частями. Если там справочник на полтора реквизита - да и хрен с ним. А вот пихать какой-нибудь реквизит РТиУ через точку лучше не надо
|
|||
8
Fedor-1971
12.04.21
✎
09:45
|
(6) не скажи, от ТекущейСтроки ТЧ вывести часть колонок просто на форму, довольно удобный функционал без всякого кода
(7) это про код, форма получает только то, что ей надо |
|||
9
fisher
12.04.21
✎
09:46
|
(8) Такое... Вот навскидку вопрос. Что будет, если поменять значение реквизита-родителя? Неявный серверный вызов?
Ну, уже не ок так как часто его можно совместить. |
|||
10
Фрэнки
12.04.21
✎
09:48
|
(8) если в форме этот объект уже указан в качестве реквизита, то форма получит его целиком, а не "то, что надо"
|
|||
11
Fedor-1971
12.04.21
✎
09:52
|
(9) где поменять, на форме или снаружи оной?
Вопрос про: СсылкаСправочник.Родитель.Код? т.е. через 2 точки? (10) не совсем, сама Форма получит ссылку + Реквизиты для формы, физическая выборка может получить объект целиком (то, что можно настроить в пользовательском режиме получение реквизитов через точку - это работа с метаданными) |
|||
12
Fedor-1971
12.04.21
✎
09:55
|
(9) + к (!!) Если ты вывел Ссылка.КакаяТоИнформация, потом просто слазил в справочник и поменял это поле, на форме останется старое значение до момента ЭтаФорма.Обновить().
Вот самый большой недостаток этого функционала для УФ |
|||
13
fisher
12.04.21
✎
09:55
|
На форме. Возьмем сабжевый случай. Изменили контрагента на форме. Должен поменяться выводимый ИНН контрагента, верно?
Но очень часто при изменении ключевых реквизитов бизнес-логика требует явного серверного вызова. А тут получается будет еще неявный серверный вызов для получения ИНН. Это я чисто умозрительно, так как не использовал такую возможность. |
|||
14
Fedor-1971
12.04.21
✎
09:56
|
12+ а не сам механизм получения данных
|
|||
15
Fedor-1971
12.04.21
✎
09:58
|
(13) Не так, при смене контрагента, его ИНН форма получит при возврате с сервера сразу, за один вызов
в рамках (12): А вот если мы поменяем Контрагенту ИНН, то на форме будет отображаться старый |
|||
16
Fedor-1971
12.04.21
✎
10:00
|
Вот где засада, я слюни пустил на этот механизм очень старательно, но при эксплуатации, выяснилась вот такая неприятная особенность, когда в, примерно, 10% случаем пользователя можно ввести в заблуждение это уже очень нехорошо
|
|||
17
Fedor-1971
12.04.21
✎
10:01
|
1:+ особенно когда гл.бух видит старый ИНН и нагибает исполнителя, а у того в карточке уже новый
|
|||
18
fisher
12.04.21
✎
10:02
|
(15) > ИНН форма получит при возврате с сервера сразу, за один вызов
Это предположение или проверенное утверждение? |
|||
19
VladZ
12.04.21
✎
10:03
|
(0) Да, обращение "через точку не есть хорошо", потому что это дополнительное обращение (запрос) к базе. Чем больше таких запросов - тем хуже в плане производительности.
Т.е. плохо не само обращение через точку, а "множественные дополнительные обращения к базе данных, которых можно избежать, повысив тем самым производительность (понизим временные издержки при обращении других пользователей).". Поэтому, итог мысли: если у тебя единственное обращение через точку на форме - забей. Этим ты ничего не испортишь (производительность базы не пострадает). Можешь пользоваться, с учетом (15). |
|||
20
Fedor-1971
12.04.21
✎
10:06
|
(18) проверено, на 8.2 точно лишних серверных вызовов нет, форма получает реквизит сразу
на 8.3 сильно не использовал, бо выяснил засаду и просто сразу предупреждал "Будет вот так ..., делаем?" |
|||
21
fisher
12.04.21
✎
10:08
|
(20) Спасибо.
А описанное тобой "засадой" не считаю. Если бы ты это выводил иначе, было бы тоже самое. |
|||
22
Fedor-1971
12.04.21
✎
10:11
|
(21) не, если просто сделать поле, то можно отрабатывать точечно через ОбработкаОповещения (отправляем при изменении), а вот вывод через точку можно актуализировать только через ЭтаФорма.Обновить() - что совсем другой коленкор
|
|||
23
Fedor-1971
12.04.21
✎
10:12
|
22+ но тут задействуется код, а не сами механизмы УФ
|
|||
24
AndrewM
12.04.21
✎
10:21
|
(19) Нет, вывести мне надо несколько таких реквизитов. Я в вопросе упростил задачу с одним выводом. А вообще мне надо вывести на форму штуки 4 реквизитов объекта из одного реквизита и примерно столько же реквизитов объекта из другого. Советы услышал. Понял, что лучше выводить программно одним запросом)
|
|||
25
Fedor-1971
12.04.21
✎
10:25
|
(25) шашкой-то не махай. Просто взвесь, насколько часто изменяются выводимые реквизиты, может там описанная ситуация происходит на 1000 документов 1 раз и проще нажать кнопку "Обновить" чем колбасить горы кода
|
|||
26
Fedor-1971
12.04.21
✎
10:26
|
(25) для (24)
|
|||
27
fisher
12.04.21
✎
10:39
|
(22) Если кто-то другой меняет, то обработка оповещения тебе ничем не поможет.
|
|||
28
Fedor-1971
12.04.21
✎
10:46
|
(27) Это я знаю.
Тут вопрос в соотношении "Надо видеть оперативно / количество кода для этого" Если из-за одного поля придётся городить некое межпроцессное взаимодействие, так ну его в пень, пусть нажмут кнопку "обновить" и увидят всё что нужно, а если это система сильно завязанная на оперативность, то правильнее сделать кодом (только не подключать обработчик ожидания и дёргать БД на предмет не изменились ли нужные поля) |
|||
29
Serg_1960
12.04.21
✎
11:28
|
Sorry, а зачем в "левой" форме поле ввода "Объект.Контрагент.ИНН"? Чтобы изменять бесконтрольно? Чтобы сложно было установить какой юзверь ИНН изменил контрагенту?
Имхо, такие вещи должны быть "Только просмотр", справочно, текстом или, на крайний случай - гиперссылкой. |
|||
30
AndrewM
12.04.21
✎
11:41
|
(29) А почему вы решили, что ИНН выводится с возможностью изменения? На моём скрине выводится как раз в режиме ТолькоПросмотр. Это справочная информация для пользователя, открывшего документ.
|
|||
31
Fedor-1971
12.04.21
✎
12:01
|
(30) Такое поле автоматом должно стать в режим ТолькоПросмотр
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |