|
Перетаскивание в дереве | ☑ | ||
---|---|---|---|---|
0
Gossar1C
10.03.15
✎
10:35
|
Здравствуйте! Подскажите пожалуйста как сделать проверку на заполненность поля ТаблицаДереваПоставщик?
&НаКлиенте Процедура ТаблицаДереваПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) Если Поле <> Неопределено Тогда Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.Номенклатура) Тогда Если Поле.Имя <> "ТаблицаДереваПоставщик" Тогда ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; СтандартнаяОбработка = Ложь; КонецЕсли; Иначе ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; СтандартнаяОбработка = Ложь; КонецЕсли; Иначе ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры Тоесть я реализую такую возможность чтобы номенклатуру можно было перетащить в колонку ТаблицаДереваПоставщик и только в строку с заполненым значением (аля родитель) |
|||
1
Gossar1C
10.03.15
✎
10:59
|
up
|
|||
2
Fedor-1971
10.03.15
✎
11:07
|
Используй ПриНачалеПеретаскивания - начал тащить, проверь, что тащим и можно ли оное тащить.
Прочитай в доках о порядке и месте появления событий при перетаскивании, там есть свои особенности. |
|||
3
vde69
10.03.15
✎
11:08
|
для начала в отладчике смотри "ПараметрыПеретаскивания"
|
|||
4
Gossar1C
10.03.15
✎
11:13
|
(3) параметры содержат действие, допустимые действия и перетаскиваемое значение. Т.е. по сути мне это ничего не даст.
(2) опять же зачем мне значение перетаскиваемого элемента? мне нужно проверить именно ту строку куда я буду перетаскивать элемент, проверить на заполненность. Подумываю получить элементы дерева и найти строку, только вот единственный вопрос возникает параметр "строка" по сути это та строка откуда мы тащим элемент, а не принимающая. |
|||
5
Fedor-1971
10.03.15
✎
11:25
|
(4) На сколько я помню:
ПроверкаПеретаскивания - СтандартнаяОбработка=Ложь; тут ещё нет информации конкретно куда притащили (строка, колонка), потому останавливаем стандартную обработку. Перетаскивание - тут уже есть место назначения куда притащили (твоя строка). |
|||
6
Gossar1C
10.03.15
✎
11:42
|
(5) спасибо большое, да тут уже именно номер строки куда передаем, а далее я уже смогу сделать проверку на эту строку. Вообщем буду пробовать :)
|
|||
7
Gossar1C
10.03.15
✎
12:26
|
(7) сделал по такому принципу, работает. (5) Спасибо огромное за наводку :)
&НаКлиенте Процедура ТаблицаДереваПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) ЭлементыДереваСклады = ТаблицаДерева.ПолучитьЭлементы(); Для Каждого Стр Из ЭлементыДереваСклады Цикл ЭлементыДереваПоставщики = Неопределено; ЭлементыДереваПоставщики = Стр.ПолучитьЭлементы(); Для Каждого Стр1 Из ЭлементыДереваПоставщики Цикл ЭлементыДереваНоменклатура = Неопределено; ЭлементыДереваНоменклатура = Стр1.ПолучитьЭлементы(); // Здесь ищем индетификатор и проверяем его с номером строки Для Каждого Стр2 Из ЭлементыДереваНоменклатура Цикл ИдентификаторСтроки = Стр2.ПолучитьИдентификатор(); Если ИдентификаторСтроки = Строка Тогда ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; СтандартнаяОбработка = Ложь; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |