|
v7: Отменить ввод новой строки в списке справочника | ☑ | ||
---|---|---|---|---|
0
zenon46
26.07.23
✎
14:51
|
Доброго дня! Есть справочник, метод ввода нового - в списке, форма списка одна. Нужно запретить создание элементов путем копирования.
Делаю так, суть такая если guid есть значит скопирован, но нифига не отменяется, щелкаешь в любое место формы списка и элемент сохраняется. Это баг или фича такая ? Процедура ПриРедактированииНовойСтроки() Если ПустоеЗначение(guid) = 0 Тогда // строка скопирована СтатусВозврата(0);Возврат; КонецЕсли; КонецПроцедуры //ПриРедактированииНовойСтроки |
|||
1
Kigo_Kigo
26.07.23
✎
16:07
|
Может ПриРедактированииНовойСтроки() ?
|
|||
2
zenon46
26.07.23
✎
16:13
|
(1) не понял, так я в этой процедуре и делаю , выше же пример
|
|||
3
MWWRuza
гуру
26.07.23
✎
16:15
|
А необходимо именно в форме списка запретить копирование?
Просто, если в форме самого элемента, то там просто решается: Процедура ВводНового(Флаг) Если Флаг = 1 Тогда СтатусВозврата(0); Возврат; КонецЕсли; КонецПроцедуры А вот со списком, тут нужно подумать... Может через ложное открытие формы элемента сделать? |
|||
4
zenon46
26.07.23
✎
16:34
|
(3) формы элемента у справочника нет, редактирование через список и я так понимаю тут какой-то БАГ имеется
|
|||
5
Kigo_Kigo
26.07.23
✎
16:52
|
может ВВодНового?
|
|||
6
Злопчинский
26.07.23
✎
17:23
|
(2) значит в строке источнике гуид пустой
|
|||
7
Злопчинский
26.07.23
✎
17:51
|
не, фигня
ПриРедактированииНовойСтроки() на СтатусВозврата(0) не эрегирует... надо как-то иначеЮ если ну прямо капец как принципиально именно в строке редактировать |
|||
8
Злопчинский
26.07.23
✎
17:52
|
тьфу, ...!
ПриВводеСтроки() !!! |
|||
9
zenon46
26.07.23
✎
18:33
|
(6) точно не пустой, глазами вижу )
|
|||
10
Харлампий Дымба
26.07.23
✎
19:16
|
(8) Ну да. И, кстати, в жкк прямым текстом написано:
Вызов ПриВводеСтроки производится при интерактивном вводе новой строки (до начала ввода) в форме списка справочника. Если в данной процедуре установить статус возврата — 0, то новая строка списка справочника не будет инициирована. Вызов ПриРедактированииНовойСтроки производится в момент начала интерактивного редактирования новой строки списка справочника (после того, как новая строка уже заведена). Процедура может использоваться для установки начальных значений реквизитов нового элемента справочника. В данной процедуре установка статуса возврата не имеет смысла, так как отказаться от ввода новой строки в этот момент уже невозможно. Но! Обращение к реквизитам справочника из процедуры ПриВводеСтроки вернёт значения из текущего элемента (т.е. на котором спозиционирован курсор), а не нового. Поэтому, в случае ТС, guid будет возвращать в процедуре ПриВводеСтроки заполненное значение ВСЕГДА. А после попадания в процедуру ПриРедактированииНовойСтроки уже отменить ввод нельзя. Заковыка... |
|||
11
Харлампий Дымба
26.07.23
✎
19:21
|
Тогда остаётся ПриЗаписи. Наверняка присвоение гуида идёт там. Вот и анализируй до присвоения - если гуид уже есть, то не разрешай сохранять - СтатусВозврата(0).
|
|||
12
Злопчинский
26.07.23
✎
22:55
|
(11) достаточно ПриНачалеРедактированияСтроки() написать guid=""; И ВСЁ.
|
|||
13
Харлампий Дымба
27.07.23
✎
00:07
|
(12) Нене. Тогда гуид будет затираться у существующих элементов при их редактированиии. Нужна ПриРедактированииНовойСтроки(), а не ПриНачалеРедактированияСтроки().
Вообще по всей логике у ТС в ПриРедактированииНовойСтроки() должно быть присвоение нового guid независимо от принципа ввода (копированием или напрямую), так что зануление гуид, а также проверка на заполненность - избыточно. А стало быть и требование к запрету ввода копированием - лишнее. Но видимо присвоение гуид делается при записи в условии проверки на незаполненность, поэтому возникла проблема с копированными элементами. Если так - тогда достаточно перенести присвоение в процедуру ПриРедактированииНовойСтроки() и выполнять его безусловно. Ну разберётся, надеюсь, теперь. Просто мне вот стало интересно, можно ли "запретить создание элементов путем копирования" в списке справочника. И оказалось, что в семёрке это пока ещё не реализовано. |
|||
14
Злопчинский
27.07.23
✎
01:40
|
(13) "можно ли "запретить создание элементов путем копирования"
штатно - хз.. надо думать... а так - или RWidjets или может ПриПолученииКомандыГлавнымОкном |
|||
15
Злопчинский
27.07.23
✎
01:44
|
(13) ну и можно ПриРедактированииНовойСтроки() написать guid="" если стоит задача избежать дублирования гуидов или тупо по метаданным пробежаться и занулить все реквизиты (кроме кода если он есть и уникальность включена) - получится что при копировании то же самое как просто ввод новой тсроки
|
|||
16
zenon46
27.07.23
✎
09:09
|
(15) не только guid а все реквизиты, нужно занулить, как раз задача была запрет копирования элементов - но как оказалось в 7.7 это пока не реализовано (в форме списка)
|
|||
17
Харлампий Дымба
27.07.23
✎
12:17
|
Процедура ПриРедактированииНовойСтроки()
ОбъектМД=Метаданные.Справочник(Вид()); Если (ОбъектМД.АвтоНумерация=1)и(ОбъектМД.ДлинаКода<>0) Тогда Код="" КонецЕсли; Если ОбъектМД.ДлинаНаименования<>0 Тогда Наименование="" КонецЕсли; Для СчетчикЦикла=1 По ОбъектМД.Реквизит() Цикл УстановитьАтрибут(ОбъектМД.Реквизит(СчетчикЦикла).Идентификатор,"") КонецЦикла; КонецПроцедуры |
|||
18
Злопчинский
27.07.23
✎
12:54
|
(17) по идее
Если (ОбъектМД.АвтоНумерация=1)и(ОбъектМД.ДлинаКода<>0) Тогда Код="" КонецЕсли; - лишнее . при копировании или вводе нового система с кодом по идее сама разберется..? |
|||
19
Злопчинский
27.07.23
✎
12:55
|
(16) ну если не устраивает как выше описано - то см.(14)
|
|||
20
Злопчинский
27.07.23
✎
12:58
|
гораздо интереснее чтобы было автомасштабирование форм вместе с элементами адекватное...
типа нарисовал я фейс для экрана 240-320 - опа экран 480-640 - чтобы элементф формы смасштабировались более-менее аккуратненько... . или проще под каждое разрешение перерисовать форму и собирать обработку для нужного разрешения...? это хорошо если экранов 1-2-3, а если штук 20-40? |
|||
21
Харлампий Дымба
27.07.23
✎
13:17
|
(18) Если АвтоНумерация=2, то тогда разберётся, а если АвтоНумерация=1, то тогда скопирует. Так что нет, условие нелишнее.
|
|||
22
Duke1C
27.07.23
✎
13:35
|
(0) C предопределенной процедурой ПриВводеСтроки() "играться" не пробовал?
|
|||
23
Злопчинский
27.07.23
✎
13:38
|
(22) см.(10) Харлампий написал...
|
|||
24
Duke1C
27.07.23
✎
13:47
|
(23) Да, точно. Она не как ВводНового отрабатывает(
|
|||
25
Duke1C
27.07.23
✎
13:49
|
Ну тогда запретить вводить в списке и вводить через ФормуЭлемента, или спец.обработку какую-нибудь
|
|||
26
Злопчинский
27.07.23
✎
14:44
|
(25) я везде в своих доработках ввод по строке использую только в простейших справочниках типа классификаторво, без логики. В остальных - ввод в диалоге.
|
|||
27
Duke1C
27.07.23
✎
16:39
|
(26) Да это то понятно, что так оно логичнее... ))
Если только у (0) этот справочник не открывается только для выбора, да ещё модально - иначе, проблем не вижу |
|||
28
Duke1C
27.07.23
✎
16:43
|
(27) Ну тут надо - "Огласить весь список, пожалуйста". Что за справочник, кто, для чего и как вводит... ну и т.д.
|
|||
29
MWWRuza
гуру
27.07.23
✎
19:42
|
А если так: https://cloud.mail.ru/public/CHoh/GUGnKg89F
Да, есть форма элемента. Ну и что??? Она не открывается все равно, ее никто не видит, и она может быть пустой совсем, без единого поля. Противно промелькивает при создании/копировании элеиента справочника. Но, новая строка создается, стандартной кнопкой, а при назатии на "+"(копировать) мелькает, но ничего не вводится... Там, если дальше развивать эту линию, нужно добавить в справочник колонки и после закрытия формы элемента, активизировать нужную колонку со входом в режим редактирования... |
|||
30
Злопчинский
27.07.23
✎
20:04
|
Давайте эти извращения снеговика оставим
|
|||
31
MWWRuza
гуру
27.07.23
✎
20:08
|
А в снеговике, если не ошибаюсь, вообще в списке нельзя редактировать... По крайней мере в УФ... Но, могу и ошибаться - мне простительно, "застарелый клюшечник" :-)
|
|||
32
MWWRuza
гуру
27.07.23
✎
20:40
|
+(29) Там, если дальше развивать эту линию, нужно добавить в справочник колонки и после закрытия формы элемента, активизировать нужную колонку со входом в режим редактирования...
И если отказались от редактирования новой строки, то удалять новый, только что созданный элемент. |
|||
33
Злопчинский
27.07.23
✎
21:14
|
(32) это уже совсем какая-то мёртвая стюардесса
|
|||
34
Харлампий Дымба
27.07.23
✎
22:41
|
Джентльмены, хочу сказать: хорошо, что мы материально многого достигли и можем заниматься подобной ерундой чисто для удовольствия! Так что - достаём лопаты и:
(29) Новая строка-то создаётся, только вот в списке её не отредактировать, Активизировать(,1) не заработает так как стоит редактирование справочника "В диалоге". |
|||
35
zenon46
28.07.23
✎
09:03
|
(15) сделал так
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |