Перетаскивание со списка значений на другой список

1. El_Ninio 05.04.24 16:39 Сейчас в теме
При перетаскивании со списка в другой список получаю ошибку что я вышел за границы массива, тк при перетаскивании удаляю по индексу то что было перенесено в другой список. Если с конца перетаскивать то все ок, но при перетаскивании с любой позиции получаю такую ошибку, запоминает все индексы. Как решить такую задачу. Не хотелось бы выгрузить загрузить.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 05.04.24 18:20 Сейчас в теме
(1) отсортировать индексы по убыванию перед удалением.
3. El_Ninio 06.04.24 09:17 Сейчас в теме
(2)
    Таблица                                          = ЭтаФорма[ПараметрыПеретаскивания.Имя];
    ЗначениеЭлементаСписка           = ПараметрыПеретаскивания.ТекущиеДанные.Значение;
    ПредставлениеЭлементаСписка = ПараметрыПеретаскивания.ТекущиеДанные.Представление;
    ТекущаяСтрока                              = ПараметрыПеретаскивания.ТекущаяСтрока;
        
    Индекс = Таблица.Индекс(Таблица.НайтиПоЗначению(ЗначениеЭлементаСписка));    
    ЭтаФорма[Строка].Добавить(ЗначениеЭлементаСписка, ПредставлениеЭлементаСписка);
    ЭтаФорма[ПараметрыПеретаскивания.Имя].Удалить(?(Индекс = ТекущаяСтрока, ТекущаяСтрока, Индекс)); 

Показать
4. El_Ninio 06.04.24 09:25 Сейчас в теме
Теперь как запретить перемещение чтоб перемещение работала только по горизонтали как на картинке. Параметрах перетаскивания нет данных с какой таблицы приходят данные
Прикрепленные файлы:
8. spacecraft 06.04.24 19:23 Сейчас в теме
(4) значение перетаскивания можно изменять/обрабатывать по своему алгоритму.
&НаКлиенте
Процедура СЗ1НачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
	ЗначениеПеретаскивания = Новый Структура;
	ЗначениеПеретаскивания.Вставить("Таблица", "Таблица1");
	ЗначениеПеретаскивания.Вставить("Значение", ПараметрыПеретаскивания.Значение);
	ПараметрыПеретаскивания.Значение = ЗначениеПеретаскивания;
КонецПроцедуры

&НаКлиенте
Процедура СЗ2ПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	ВозможноПеретаскивание = ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Структура") И ПараметрыПеретаскивания.Значение.Свойство("Таблица") И ПараметрыПеретаскивания.Значение.Таблица = "Таблица1";
	Если Не ВозможноПеретаскивание Тогда
		ПараметрыПеретаскивания.ДействиеПеретаскивания = ДействиеПеретаскивания.Отмена;
	КонецЕсли;
КонецПроцедуры

// далее обработка значения перетаскивания как ПараметрыПеретаскивания.Значение.Значение.
Показать
El_Ninio; +1 Ответить
5. chemezov 49 06.04.24 12:58 Сейчас в теме
ПриАктивизацииСтроки скорее всего можно будет сохранить имя списка значений, из которого идет перемещение, а в обработчике перетаскивание обработать правильное это имя источника или нет
6. stepan13 06.04.24 14:51 Сейчас в теме
ПриНачалеПеретаскивания запиши активный элемент и в ПроверкаПеретаскивания проверь и запрети если он неподходящий
7. El_Ninio 06.04.24 16:44 Сейчас в теме
&НаКлиенте
Процедура ПроверкаПеретаскивания(ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
    ИндексТаблицы = Число(Прав(ПараметрыПеретаскивания.Имя, 1));
КонецПроцедуры // ()

&НаКлиенте
Процедура ОкончаниеПеретаскивания(ПараметрыПеретаскивания, СтандартнаяОбработка) 
    Если ИндексТаблицы <> Число(Прав(ПараметрыПеретаскивания.Имя, 1)) Тогда
        ПоказатьПредупреждение(Новый ОписаниеОповещения("ПоказатьПредупреждениеЗавершение", ЭтотОбъект),"Нельзя добавить в эту таблицу" ,, "Предупреждение");
        Возврат;    
    КонецЕсли;

Показать
9. El_Ninio 08.04.24 15:57 Сейчас в теме
Еще последний вопрос, как мне сделать поле поиска одну, чтобы оно искала по всем спискам. Как стандартный поиск в списке
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот