|
контроль повтора ввода в управляемых формах | ☑ | ||
---|---|---|---|---|
0
wwwqwert2014
26.06.13
✎
17:11
|
Есть ТЧ Проекты, в которой всего одна колонка Проект. Необходимо осуществить контроль, чтобы один и тот же проект не был введен 2 раза.
Как правильно такое сделать? Я писал несколько вариантов, но у меня то в одном месте ошибка, то в другом. В данном случае не позволяет передать Элемент как аргумент процедуры: &НаСервере Перем МассивПроекты экспорт; &НаКлиенте Процедура ПроектыПриИзменении(Элемент) ПроектыПриИзмененииНаСервере(Элемент); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) // Вставить содержимое обработчика. МассивПроекты = Новый Массив; КонецПроцедуры &НаСервере Процедура ПроектыПриИзмененииНаСервере(Элемент) // Вставить содержимое обработчика. ЕстьПовторения= ложь; Если Элемент.ТекущиеДанные.Проект = Справочники.Проекты.ПустаяСсылка() Тогда Возврат; конецЕсли; Для Каждого Строка из Объект.Проекты Цикл Если Строка.Проект = Элемент.ТекущиеДанные.Проект Тогда ЕстьПовторения = Истина; КонецЕсли; КонецЦикла; Если ЕстьПовторения = Ложь Тогда МассивПроекты.Добавить(Элемент.ТекущиеДанные.Проект); Иначе Сообщить("Проект " + Элемент.ТекущиеДанные.Проект + " был уже введен"); Возврат; КонецЕсли; КонецПроцедуры // ПроектыПриИзмененииНаСервере() |
|||
1
wwwqwert2014
26.06.13
✎
17:16
|
up up
|
|||
2
wwwqwert2014
26.06.13
✎
17:28
|
up up up up
|
|||
3
SherifSP
26.06.13
✎
17:28
|
(0) Ты не элемент передавай, а ЭлементыФормы.МояТЧ.ТекущиеДанные и не перебирай все строки тч, а пользуйся методом найти или найти строки.
|
|||
4
SherifSP
26.06.13
✎
17:30
|
&НаКлиенте
Процедура ПроектыПриИзменении(Элемент) МойЭлемент = Элемент; ПроектыПриИзмененииНаСервере(МойЭлемент); КонецПроцедуры Попробуй так |
|||
5
zladenuw
26.06.13
✎
17:31
|
а не проще ли в запрос передать и сгруппировать и условие если количество больше двух. тогда ахтунг
|
|||
6
wwwqwert2014
26.06.13
✎
17:53
|
(5) Попробовал сделать как ты сказал.
&НаСервере Перем МассивПроекты экспорт; &НаКлиенте Процедура ПроектыПриИзменении(Элемент) ПроектыПриИзмененииНаСервере(ЭлементыФормы.Проекты); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) // Вставить содержимое обработчика. МассивПроекты = Новый Массив; КонецПроцедуры &НаСервере Процедура ПроектыПриИзмененииНаСервере(Элемент) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Массив.Проекты |ПОМЕСТИТЬ ВТ_Проекты |ИЗ | &Массив КАК Массив |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Проекты.Проекты, | СУММА(1) КАК Количество |ИЗ | ВТ_Проекты КАК ВТ_Проекты | |СГРУППИРОВАТЬ ПО | ВТ_Проекты.Проекты"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи Если ВыборкаДетальныеЗаписи.Количество > 1 тогда Сообщить("Присутствуют одинаковые проекты"); Возврат; Конецесли; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры // ПроектыПриИзмененииНаСервере() &НаКлиенте Процедура ПроектыПроектПриИзменении(Массив) // Вставить содержимое обработчика. //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! КонецПроцедуры Ругается на Процедура ПроектыПриИзменении(Элемент) ПроектыПриИзмененииНаСервере(ЭлементыФормы.Проекты); КонецПроцедуры Ошибка: {Документ.ПриходДенег.Форма.ФормаДокумента.Форма(6,31)}: Переменная не определена (ЭлементыФормы) ПроектыПриИзмененииНаСервере(<<?>>ЭлементыФормы.Проекты); (Проверка: Тонкий клиент) |
|||
7
МихаилМ
26.06.13
✎
18:10
|
||||
8
zladenuw
26.06.13
✎
18:23
|
у меня так получилось
&НаКлиенте Процедура ТабличнаяЧасть1Реквизит1ПриИзменении(Элемент) МояФ(); КонецПроцедуры &НаСервере Функция МояФ() ТекущаяСтрока = Объект.ТабличнаяЧасть1[Элементы.ТабличнаяЧасть1.ТекущаяСтрока]; МассивНайденных = Объект.ТабличнаяЧасть1.НайтиСтроки(Новый Структура("Реквизит1",ТекущаяСтрока.Реквизит1)); Если МассивНайденных.количество()>1 Тогда СообП = Новый СообщениеПользователю; СообП.Текст = "дубль значения"; СообП.ПутьКДанным = "ТабличнаяЧасть1["+Объект.ТабличнаяЧасть1[Элементы.ТабличнаяЧасть1.ТекущаяСтрока].ПолучитьИдентификатор()+"].Реквизит1"; СообП.УстановитьДанные(Объект); СообП.Сообщить(); КонецЕсли; КонецФункции // () |
|||
9
Поросенок Петр
26.06.13
✎
21:54
|
"ТекущаяСтрока = Объект.ТабличнаяЧасть1[Элементы.ТабличнаяЧасть1.ТекущаяСтрока]; "
Садись, два. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |