|
Проверка на дубль строки в ТЧ документа (УФ) | ☑ | ||
---|---|---|---|---|
0
zenon46
22.12.22
✎
18:26
|
Доброго дня!
Есть документ, в котором имеется ТЧ, у которой есть поле Документ, составного типа. В каком событии и как оптимально проверить ТЧ документа на дубль строки при интерактивном добавлении строки. Понятно что можно намутить в ОбработкаПроверкиЗаполнения, но хотелось бы юзеру сразу сказать что он добавляет то что уже есть в ТЧ. |
|||
1
lodger
22.12.22
✎
18:27
|
(0) тогда цепляй все события где заполняется поле.
|
|||
2
SleepyHead
гуру
23.12.22
✎
05:11
|
(0) При интерактивном добавлении - никак. Строка еще пустая, в ней ничего нет.
|
|||
3
Mihasya
23.12.22
✎
05:31
|
(0)
На форму добавить реквизит "СписокДокументов", тип - СписокЗначений В процедуре: ТЧ_Документ_ПриИзменении() ТекущиеДанные = Элементы.ТЧ.ТекущаяСтрока; Если ТекущиеДанные <> Неопределено и ЗначениеЗаполнено(ТекущиеДанные.Документ) Тогда Если ЭтаФорма.СписокДокументов.НайтиПоЗначению(ТекущиеДанные.Документ) Тогда ПоказатьПредупреждение(, "НИЗЯ!"); КонецЕсли; ЭтаФорма.СписокДокументов.Добавить(ТекущиеДанные.Документ); КонецЕсли; |
|||
4
Mihasya
23.12.22
✎
05:32
|
+(3)
ЭтаФорма.СписокДокументов.НайтиПоЗначению(ТекущиеДанные.Документ) <> Неопределено |
|||
5
magicSan
23.12.22
✎
08:35
|
только через соответствие - оно быстрее.
|
|||
6
FirstLine Support
23.12.22
✎
09:04
|
(3) как-то ненадежно и криво, а если пользователь удалит строку или изменит? Почему нельзя искать дубль непосредственно в самой таблице документа?
|
|||
7
lodger
23.12.22
✎
09:11
|
(6) это ж на каждый чих надо сбегать на сервер и искать в контексте.
|
|||
8
FirstLine Support
23.12.22
✎
09:18
|
(7) ну и нормально, сбегает, не устанет
|
|||
9
lodger
23.12.22
✎
09:23
|
(8) тоже вариант. приемлемо.
|
|||
10
ass1c
23.12.22
✎
09:28
|
(0) просто бы глянул как в типовых делают и взял бы...
Процедура ПроверитьДублиНабора(ИмяНабора, Сообщение, Отказ) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Набор.Номенклатура, | Набор.Характеристика, | Набор.НомерСтроки |ПОМЕСТИТЬ ВТНабор |ИЗ | &Набор КАК Набор |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Набор.Номенклатура, | Набор.Характеристика, | МАКСИМУМ(Набор.НомерСтроки) КАК НомерСтроки |ИЗ | ВТНабор КАК Набор | |СГРУППИРОВАТЬ ПО | Набор.Номенклатура, | Набор.Характеристика | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.НомерСтроки) > 1"; Запрос.УстановитьПараметр("Набор", ЭтотОбъект[ИмяНабора]); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОбщегоНазначенияКлиентСервер.СообщитьПользователю( Сообщение, ЭтотОбъект, ИмяНабора + "[" + (Выборка.НомерСтроки - 1) + "].Номенклатура", "Объект", Отказ); КонецЦикла; КонецПроцедуры .... КлючевыеРеквизиты = Новый Массив; КлючевыеРеквизиты.Добавить("Склад"); ОбщегоНазначенияУТ.ПроверитьНаличиеДублейСтрокТЧ(ЭтотОбъект, "ПолитикиУчетаСерий", КлючевыеРеквизиты, Отказ,,Ложь); .... и т.д. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |