|
наиболее простой способ запрета ввода в таблицу значений одинаковых строк | ☑ | ||
---|---|---|---|---|
0
Oz11
20.01.12
✎
13:22
|
Есть задача. На форме лежит Таблица значений, в ней есть колонка "Сотрудник". когда пользователь вводит строку и выбирает сотрудника нужно запретить запись строк, если в таблице значений уже есть строка с этим сотрудник. ковырял ПриОкончанииРедактирования и ПередОкончаниемредактирования. в обоих случаях строка уже записана в ТЗ. как быть?
|
|||
1
Cube
20.01.12
✎
13:23
|
(0) А выбрать строки по условию и затем проверить, если в этой выборке строк больше одной никак?
|
|||
2
Широкий
20.01.12
✎
13:24
|
Удлить строку/ очистить поле сотрудник
|
|||
3
Oz11
20.01.12
✎
13:25
|
(1) в каком событии табличного поля делается проверка?
|
|||
4
rs_trade
20.01.12
✎
13:25
|
(0) открывать список выбора с отбором. что бы сотры из таблицы отсутствовали в списке выбора. но это конечно не избавляет от проверки.
|
|||
5
Cube
20.01.12
✎
13:26
|
(3) Уточни, ты проверку сделать не можешь или строку удалить?
|
|||
6
Oz11
20.01.12
✎
13:26
|
(4) думаю так нельзя, чисто эстетически.
|
|||
7
Oz11
20.01.12
✎
13:27
|
я и не думаю удалять строку, просто буду очищать это поле сотрудник, если такой уже есть. вопрос в том как и где сделать проверку
|
|||
8
ШАВ
20.01.12
✎
13:27
|
(0) Я обычно использую параметр Отказ у обработчика события ПередОкончаниеРедактирования. Иногда анализурую еще и параметры НоваяСтрока и ОтменаРедактирования.
|
|||
9
Tazuya
20.01.12
✎
13:28
|
(0)ну так удаляй, ведь могут же и отредактировать на выбранного
|
|||
10
Oz11
20.01.12
✎
13:29
|
(8) ковырял. в этом событии строка уже записана в таблицу значений. поэтому проверка на дубль в любом случае даст положительный ответ.
|
|||
11
1с-кин
20.01.12
✎
13:29
|
(0) во-первых, ТЗ не лежит на форме, а лежит ТП.
ТП само по себе ничего в базу не пишет. Так что пока не сделана запсиь - удаляйте и рихтуйте таблицу, как угоднро, хоть при окончании редактирования, хоть перед. |
|||
12
Oz11
20.01.12
✎
13:30
|
(9) в таком случае можно тоже просто очищать сотрудника, ну или спрашивать пользователя об удалении строки
|
|||
13
Cube
20.01.12
✎
13:30
|
(10) Читай (1).
|
|||
14
1с-кин
20.01.12
✎
13:31
|
(10) вообще-то, ТП не сама по себе обычно - а к ТЧ привязана, а обратится к ТЧ, сохраненному в базе - очень даже можнро. И сравнить.ю
Или сразу - при открытии сохранять слепок ТЧ. И потом сравнивать после ввода строки. |
|||
15
Oz11
20.01.12
✎
13:33
|
(13) видимо я чего-то не понимаю.
ЕстьСовпадение = Ложь; Для каждого Стр Из ТабличнаяЧасть Цикл Если Стр.Сотрудник = Сотрудник Тогда ЕстьСовпадение = Истина; КонецЕсли; КонецЦикла; Возврат ?(ЕстьСовпадение, Истина, Ложь); есть такая функция, запускаю ее ПередОкончаниемРедактирования и она выдает дубль, хотя строка одна. в первом параметре ей передается не табличное поле, а таблица значений. |
|||
16
5 Элемент
20.01.12
✎
13:33
|
У автора проблема в том что он не может отличить текущую строку от других, чтобы правильно найти дубли :)
|
|||
17
ШАВ
20.01.12
✎
13:34
|
(10) если установить Отказ = Истина, то изменения не зафиксируются, и пользователь должен будет продолжить редактирование строки пока не исправит ошибку.
|
|||
18
Cube
20.01.12
✎
13:34
|
(15) НайтиСтроки()
|
|||
19
Oz11
20.01.12
✎
13:34
|
(16) вот. так и есть.
|
|||
20
5 Элемент
20.01.12
✎
13:38
|
(19) а зачем тебе отличать ее от других?
|
|||
21
Shurjk
20.01.12
✎
13:40
|
А если при изменении самого реквизита сотрудник искать, Тч.Найтистроки(ОтборПоСотруднику).Количество() > 1
|
|||
22
Oz11
20.01.12
✎
13:40
|
(20) чтобы найти дубли. когда я делаю проверка, то проверяемая строка тоже учитывается и выходит что всегда будет дубль.
|
|||
23
5 Элемент
20.01.12
✎
13:40
|
(22) ты не правильно определяешь дубли, тебе уже написали как надо
|
|||
24
1с-кин
20.01.12
✎
13:41
|
(22) в базе-то нет еще дубля - поэтому отменять ввод, очищать строку, и сообщить пользователю, где и как он ошибся.
|
|||
25
5 Элемент
20.01.12
✎
13:41
|
дубль это не когда в ТЧ есть такой же сотрудник, а когда их больше 1
|
|||
26
Cube
20.01.12
✎
13:41
|
(22) Читай (1) до полного просветления.
|
|||
27
Oz11
20.01.12
✎
13:53
|
всем спасибо. понял что дурак.
|
|||
28
Oz11
20.01.12
✎
13:54
|
(25) отдельное спасибо. даже в пятничный мозг можете вбить правильную траекторию мышления.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |