Имя: Пароль:
1C
 
Где в УФ кошерно проверять наличие дубликата документа при создании нового?
,
0 mikecool
 
20.02.20
17:35
Создаем новый документ, надо проверить - что это не дубль в рамках месяца по критериям
В каком событии кошернее?
При создании на сервере
Обработка заполнения
или еще где?
1 TopProger
 
20.02.20
17:36
(0) перед запись
2 TopProger
 
20.02.20
17:36
Ю
3 mikecool
 
20.02.20
17:39
(1) это совсем уж крайний вариант
а то получится: пользователь создал, заполнил, потратил время, а ему - хрен тебе!
4 mikecool
 
20.02.20
17:40
с другой стороны - пока реквизиты не заполнит, проверить нечего
5 TopProger
 
20.02.20
17:40
(3) а при создании на сервере как себе это представляете?) Тогда при изменении показателей на форме, чтобы загоралась красная кнопка.
6 dka80
 
20.02.20
17:41
Перед записью, если  режим записи - проведение
7 mikecool
 
20.02.20
17:42
+3 да и пофик с потерянным временем )) сам дурак значит
8 Fragster
 
гуру
20.02.20
17:47
В форме при изменении ключевых реквизитов проверять и подсвечивать рамку элементов формы, если такой же проведенный уже есть. Также при проведении проверять в модуле. Можно и непомеченные на удаление проверять, а не только проведенные, в зависимости от того, что надо.
9 mikecool
 
20.02.20
17:47
(8) тоже вариант
10 Garykom
 
гуру
20.02.20
17:49
(4) Проверяй дергая с клиента сервер при изменении данных в полях контроля: Номер, Дата и что там еще.

Т.е. открыл юзер форму нового документа, начал заполнять/выбирать "критерии" и вот на очередном шаге она ему на форме надпись: "Введенные данные не уникальны" и блокирует записать кнопочку.
11 Garykom
 
гуру
20.02.20
17:50
(10)+ Затык только с номером документа, он при записи присваивается платформой
12 Garykom
 
гуру
20.02.20
17:51
А чтобы защититься от программной записи дублей тут только подписка перед записью с отказом.
13 dka80
 
20.02.20
17:52
Дело, конечно, ваше. Но ни одна типовая так не работает
14 Gbpltw
 
20.02.20
18:14
При начале редактирования ТЧ и перед нажатием кнопки "Подбор"
15 pechkin
 
20.02.20
18:29
если пользователь сам руками набивает реквизиты по которым проверка - то перед щаписью.
если они автоматом заполняются - то в обработке заполнения кидается исключение
16 unregistered
 
20.02.20
18:32
(13) >> ни одна типовая так не работает.

Потому что ни в одной типовой подобная ситуация практически невозможно. Однажды заведенный в базу документ никому в голову не придёт заводить повторно. По всё видимости у автора либо какой-то своя нетиповая конфа, либо свой самописный документ в типовой конфе. В любом случае речь о каком-то сильно специфичном бизнеспроцессе идёт речь, когда проблема вполне реальна.

А по сути ответили уже в (10) и (8).
События формы и элементов:
1. ПриИзменении у всех тех элементов, отображающих ключевые реквизиты, по которым определяется уникальность.
2. (опционально, если надо) ПриЧтенииНаСервере формы, когда открывается форма уже созданного ранее документа.
3. ПередЗаписьюНаСервере формы. Нужно, если документ заполняется обработкой заполнения и события элементов ПриИзменении не отрабатывали.
События самого документа.
1. ПередЗаписью. На случай программного создания и заполнения документа.
17 2S
 
20.02.20
19:14
Перед открытием формы предлагать заполнить в отдельной форме ключевые показатели. Дальше или переносить или материть
18 Cthulhu
 
20.02.20
19:18
предлагается при каждом чихе нагибать сервак запросом, а юзера паузой - я правильно понимаю?..
19 Garykom
 
гуру
20.02.20
19:34
(18) Можно нагибать только когда юзер ввел достаточно данных и сделал паузу
20 Cthulhu
 
20.02.20
19:36
(19): т.е. "ПередЗаписью", ммм?
21 Garykom
 
гуру
20.02.20
19:50
(20) Не обязательно, просто когда сделал паузу во вводе данных.

Как правильно заметили делать проверку при тыке на кнопку раздражает юзера, особенно если не прошло.

Я бы выделил эти контрольные данные/критерии визуально на форме в группу и вот пока не заполнено они выделяются красным а как заполнено и пауза у юзера то проверка и если ок то зеленым, если нет то красным и пишем ошибку.
22 Garykom
 
гуру
20.02.20
19:52
(21)+ Точнее с цветами можно поиграться делать желтым когда юзер еще ничего не ввел или вводит, красное если проверка не прошла зеленое если прошла.
И момент что если не прошла и красное то как только юзер начал менять делаем желтым типа понятно что еще не проверялось.
23 mikecool
 
20.02.20
20:04
как тема то развивается ))
не, на свистоперделки пока не готов ))) обойдутся проверкой перед записью и при изменении контрольных реквизитов
24 Cthulhu
 
20.02.20
20:04
не хотелось бы вас огорчать, но.
ключевой принцип комфортного восприятия (облегчающего понимание и прогнозирование): последствия возникают хронологически после действия и (желательно, ибо облегчает то самое понимание) не отдалены от него.
действи - последствие - понимание - комфорт, и т.д. = все норм.
хочу проверить - тыкаю кнопку - получаю содержательный ответ = все норм.
хочу сохранить - знаю, что проверка автоматически будет выполнена - результат ожидаем = все норм.
сижу ничо не делаю - хренак-пиндюдина-с-каких-то-хренов = ойxнякакаято. ах по паузе? а скоко ждать? а я вот сижу жду и нет нихрена чозадела? неопределенность = дискомфорт.
это я вам со всей ответственностью, как людовед и душелюб, заявляю.
25 Garykom
 
гуру
20.02.20
20:25
(24) У вас заблуждение в том что юзер ничего не хочет "проверить" он хочет вбить данные и записать.
И у него будет легкий раздраж когда вместо записать получить "хер тебе" - иди вот туда далеко назад и там исправь что наколбасил не того.

Когда полей мало это ладно, но если данных было на много экранов и на разных вкладках то опс, юзер на разраба UI все маты сложит.

Потому что кнопка "Записать" никак не связана логически с действием "Проверить".

И да сейчас новая UI методика, даже кнопки "Записать" нетути, сначала у старых юзеров разрыв шаблона... но потом о а это довольно удобно и сразу все понятно не надо эти "Применить" и прочие "Записать" и "Провести".

Хотя как выкинуть "Провести" я пока хз но думаю придумают.
26 mikecool
 
20.02.20
20:42
(25) это да, наблюдаю и считаю хорошим сайты, где после редактирования поля сразу подсвечивает, где правильное значение, а где лабуда
27 vde69
 
20.02.20
20:44
(0) я в таком случае делаю отдельную форму с ключевыми реквизитами (3...5шт) после заполнения - проверка и сразу запись и открытие уже формы на дальнейшее редактирование
28 d4rkmesa
 
20.02.20
21:11
(13) Немного удивляют иногда такие моменты. Я для теста в КА2.4 накидал ордер на пересортицу, и немало так удивился, что фин. документ по пересортице делается вообще без какого-то контроля, я по ошибке сразу сделал два. Документы между собой никак не связаны.
29 Mort
 
20.02.20
21:54
Вставлю свои пять.

Если документ должен быть один в рамках месяца по некоторой аналитике, вероятно список+форма документа это просто не лучшее интерфейсное решение для ввода таких документов.
Может лучше вместо списка иметь некий визард, где по аналитикам за месяц все показано где есть, а где нет с быстрой возможностью создания.
30 Cthulhu
 
20.02.20
22:14
(25): ну.. ваше зацикливание самовыражения на "самдурак" вкупе с совершенно неверными представлениями о психологических нюансах и закономерностях лишний раз подтверждают, что 1) я, увы, прав; 2) вы, увы, с излишней самоуверенностью выдвигаете утверждения, касающиеся областей, в которых вы менее компетентны, нежели ваш собеседник; 3) доводы собеседника вы осмыслять даже не беретесь.
вышесказанное делает дальнейший разговор бессмысленным и скучным.
за сим - удач вам и здоровья.
31 Akela has missed
 
20.02.20
23:06
Что будет если проверка стоит перед записью, и параллельно записываются два объекта? Ведь перед записью ни один из них еще не существует.
32 palsergeich
 
20.02.20
23:12
(31) Вот валит, гад
33 palsergeich
 
20.02.20
23:20
Вопрос - насколько критично наличие дубля?
Если нужно пернуть сообщением и интенсивность ввода мальникая - то перед записью проверка более чем достаточно.
А если прям алярм всебизнеспроцессы выстроены на уникальности и это ключ к учетной системе - то ручками ставим упр блокировки, возможно даже придется помоечный объект метаданных для этого сделать.
34 Garykom
 
гуру
21.02.20
00:01
(31) (32) Реально завалил да.

Но проверка ПриЗаписи с блокировкой это дичайшие тормоза на больших объемах.
Но вероятно придется туда ее засовывать еще.
35 ssh2006
 
21.02.20
00:25
(0) при проведении можно писать в регистр сведений (непериодич, подиченный регистратору, критерии - измерения). Уникальность лбеспечена
36 SleepyHead
 
гуру
21.02.20
07:37
(0) 100%-й защиты от дурака не существует.
37 mikecool
 
21.02.20
09:03
(33) у меня документ не проводится, по каким полям тогда блокировать?
38 ssh2006
 
21.02.20
11:16
(37) в при записи тогда пиши в это регистр свед
39 palsergeich
 
21.02.20
11:19
(37) Помоечный РС с накладыванием на него блокировки, можно физически даже не писать.
40 palsergeich
 
21.02.20
11:19
(39) Аможно и писать как господин в (38) предлагает
41 palsergeich
 
21.02.20
11:20
Где нить ПередЗаписью воткнуть блокировку на регистр, тогда конкурирующая транзакция встанет в ожидание.
42 palsergeich
 
21.02.20
11:21
Естесственно не на все поля, а по тому набору, который должен быть уникальным и проверяемым
43 pechkin
 
21.02.20
11:24
(41) блокировка не нужна, ибо отлуп нужен сразу.
блокировка - это очередь
44 palsergeich
 
21.02.20
11:27
(43) Все остальные случаи не дают гарантии, вот в чем беда
45 TopProger
 
21.02.20
11:28
(44) Без блокировки даст записать два одинаковых набора измерений?
46 palsergeich
 
21.02.20
11:29
(45) не даст, но это не значит что блокировки не будет
47 mikecool
 
21.02.20
11:29
не, так усложнять не хочется
48 palsergeich
 
21.02.20
11:30
(46) Просто платформа ее сделает за тебя + куча промежуточных действий
49 mikecool
 
21.02.20
11:31
возник побочный вопрос - удобно проверять заполнение реквизитов через ПроверитьЗаполнение()
а вот как избежать вывода сообщений этого метода? в описании ОбработкаПроверкиЗаполнения  чего то не нашел подходящего ничего
50 TopProger
 
21.02.20
11:31
(47) делать надо сразу нормально
51 palsergeich
 
21.02.20
11:35
(47) Увы задача на самом деле куда как сложнее чем кажется.
Если нужна гарантированность - то это всегда так или иначе приведет к снижению параллельности работы.
Ибо тебе каким то образом надо заставить определенные транзакции ждать другие транзакции.
Будет ли это запись в РС, развлечения с блокировками или что еще - не важно.
Если гарантированность не нужна то делай проще
52 pechkin
 
21.02.20
11:38
вместо блокировки данных лучше юзать
ЗаблокироватьДанныеДляРедактирования
53 pechkin
 
21.02.20
11:39
но регистр для блокировки все равно нужен будет
54 Сияющий в темноте
 
21.02.20
20:28
если документ по каким-то критериям должен быть один
то вводим критерии и если документ уже есть,то открываем его на редактирование и сразу создаем пустой,чтобы из другого сеанса не могли создать.
а показывать сообщение,что что-то где-то создано,это пугать пользователя.