Здравствуйте! Хочу запретить ввод одинаковых строк в табличную часть. Для этого перед началом добавления новой строки, создаю массив элементов, которые есть в табличной части. Потом в событии "ПриОкончанииРедактирования" проверяю на вхождение данного элемента в массив. Если элемент такой элемент существует в табличной части, тогда параметр «Отказ» выставлю в истину, но система застывает в точке "ПриОкончанииРедактирования". Чем можно воспользоваться, что бы запретить добавление строки в табличную часть? Или возможны какие - то другие схемы реализации.
&НаКлиенте Процедура ПереченьУслугОбслуживанияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) ТекНом = Элемент.ТекущиеДанные.Номенклатура; РезултатПоиска = МассивЭл.Найти(ТекНом); Если РезултатПоиска <> Неопределено Тогда Отказ = Истина; Сообщить ("Такой элемент уже существует!"); Возврат; КонецЕсли; КонецПроцедуры
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2
Навскидку: в событии ПриИзменении колонки Номенклатура проверяйте её заполненность в текущей строке. Если заполнено - делаем поиск строк в табличной части по нужному условию. Если строк больше 1 - очищаем колонку в текущей строке.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Как пример, в событие ОбработкаВыбора колонки Номенклатура
&НаКлиенте Процедура ПереченьУслугНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если УжеЕстьВТаблице(ВыбранноеЗначение) Тогда СтандартнаяОбработка = Ложь; ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Выбранная номенклатура уже есть в табличной части"); КонецЕсли; КонецПроцедуры
&НаСервере Функция УжеЕстьВТаблице(Выбор) МассивНайденныхСтрок = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура",Выбор)); Возврат МассивНайденныхСтрок.Количество(); КонецФункции
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2
Цитата(Petre @ 14.01.15, 16:48)
Но здесь при проверке в "ОбработкаВыбора" выбранное значение еще не помещено в данные формы.
У меня были мысли, что оно может быть так, но проверять мне было лениво, так что я написал так, чтоб наверняка. Но даже если бы я был 100% уверен, что оно именно так, я бы всеравно написал подобное условие, т.к. неявное приведение одного типа к другому лично мне не очень нравится и на буквах я не экономлю
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!