Перетаскивание со списка значений на другой список
При перетаскивании со списка в другой список получаю ошибку что я вышел за границы массива, тк при перетаскивании удаляю по индексу то что было перенесено в другой список. Если с конца перетаскивать то все ок, но при перетаскивании с любой позиции получаю такую ошибку, запоминает все индексы. Как решить такую задачу. Не хотелось бы выгрузить загрузить.
По теме из базы знаний
- Консоль Программиста 8.3. Управляемые формы, тонкий/толстый клиент
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Таблица = ЭтаФорма[ПараметрыПеретаскивания.Имя];
ЗначениеЭлементаСписка = ПараметрыПеретаскивания.ТекущиеДанные.Значение;
ПредставлениеЭлементаСписка = ПараметрыПеретаскивания.ТекущиеДанные.Представление;
ТекущаяСтрока = ПараметрыПеретаскивания.ТекущаяСтрока;
Индекс = Таблица.Индекс(Таблица.НайтиПоЗначению(ЗначениеЭлементаСписка));
ЭтаФорма[Строка].Добавить(ЗначениеЭлементаСписка, ПредставлениеЭлементаСписка);
ЭтаФорма[ПараметрыПеретаскивания.Имя].Удалить(?(Индекс = ТекущаяСтрока, ТекущаяСтрока, Индекс));
Показать
(4) значение перетаскивания можно изменять/обрабатывать по своему алгоритму.
&НаКлиенте
Процедура СЗ1НачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
ЗначениеПеретаскивания = Новый Структура;
ЗначениеПеретаскивания.Вставить("Таблица", "Таблица1");
ЗначениеПеретаскивания.Вставить("Значение", ПараметрыПеретаскивания.Значение);
ПараметрыПеретаскивания.Значение = ЗначениеПеретаскивания;
КонецПроцедуры
&НаКлиенте
Процедура СЗ2ПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
ВозможноПеретаскивание = ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Структура") И ПараметрыПеретаскивания.Значение.Свойство("Таблица") И ПараметрыПеретаскивания.Значение.Таблица = "Таблица1";
Если Не ВозможноПеретаскивание Тогда
ПараметрыПеретаскивания.ДействиеПеретаскивания = ДействиеПеретаскивания.Отмена;
КонецЕсли;
КонецПроцедуры
// далее обработка значения перетаскивания как ПараметрыПеретаскивания.Значение.Значение.
Показать
&НаКлиенте
Процедура ПроверкаПеретаскивания(ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
ИндексТаблицы = Число(Прав(ПараметрыПеретаскивания.Имя, 1));
КонецПроцедуры // ()
&НаКлиенте
Процедура ОкончаниеПеретаскивания(ПараметрыПеретаскивания, СтандартнаяОбработка)
Если ИндексТаблицы <> Число(Прав(ПараметрыПеретаскивания.Имя, 1)) Тогда
ПоказатьПредупреждение(Новый ОписаниеОповещения("ПоказатьПредупреждениеЗавершение", ЭтотОбъект),"Нельзя добавить в эту таблицу" ,, "Предупреждение");
Возврат;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот