Каталог решений - Drag & Drop строк документа

Drag & Drop строк документа

Drag & Drop строк документа

В наличии

Простой способ включить возможность переноса мышкой строк из одного документа в другой

Категория:

Описание

Для включения простого переноса строк из документа в документ нужно внести изменения в модуль формы документов для которых планируется включить такую возможность.

В модуль формы документа необходимо добавить две процедуры:

	 Процедура ОбщееПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
   
    СтандартнаяОбработка = Ложь;
    ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Копирование;
    Если Тип(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда
        //
        Для каждого ПеретаскиваемаяСтрока из ПараметрыПеретаскивания.Значение Цикл
            ДобавляемаяСтрока = ЭтотОбъект[Элемент.Имя].Добавить();
            ЗаполнитьЗначенияСвойств(ДобавляемаяСтрока, ПеретаскиваемаяСтрока);
        КонецЦикла;
    Иначе
        ДобавляемаяСтрока = ЭтотОбъект[Элемент.Имя].Добавить();
        ЗаполнитьЗначенияСвойств(ДобавляемаяСтрока, ПараметрыПеретаскивания.Значение);
    КонецЕсли;
   
КонецПроцедуры

Процедура ОбщаяПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
   
    СтандартнаяОбработка = Ложь;
    ПараметрыПеретаскивания.Действие        = ДействиеПеретаскивания.Копирование;
    ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.Копирование;
   
КонецПроцедуры

В процедуру ПриОткрытии модуля формы документа добавить вызов процедуры

 
ПодключитьВозможностьПеретаскивания(ЭтаФорма);

из общего модуля

 
Процедура ПодключитьВозможностьПеретаскивания(НужнаяФорма) Экспорт   
   
    // переопределим процедуры и установим разрешения
    Для каждого ЭлементФормы из НужнаяФорма.ЭлементыФормы Цикл
        Если ТипЗнч(ЭлементФормы) = Тип("ТабличноеПоле") Тогда
            ЭлементФормы.РазрешитьНачалоПеретаскивания     = Истина;   
            ЭлементФормы.РазрешитьПеретаскивание         = Истина;
            ЭлементФормы.РежимВыделения                    = РежимВыделенияТабличногоПоля.Множественный;
            ЭлементФормы.УстановитьДействие("Перетаскивание", Новый Действие("ОбщееПеретаскивание"));
            ЭлементФормы.УстановитьДействие("ПроверкаПеретаскивания", Новый Действие("ОбщаяПроверкаПеретаскивания"));
        КонецЕсли;
    КонецЦикла;
   
КонецПроцедуры

Все.

Минусы метода:

  • заменяет стандартные действия при перетаскивании в документе
  • ограничения в действиях при переносе — можно только копировать (при желании можно легко доработать по аналогии).
  • необходимо изменять модуль формы документа (при использовании типовых конфигураций после обновления нужно будет повторно добавлять эти изменения)

Плюсы:

  • простота реализации
  • универсальность
  • удобства от использования
has been added to your cart:
Оформление заказа