Возможности перетаскивания, примеры использования, помощь в понимании и отладке механизма работы (8.3, управляемые формы)

17.11.15

Разработка - Работа с интерфейсом

Механизм перетаскивания используется редко, а ведь его использование может помочь в реализации интуитивно понятных функций, которые могут весьма ускорить работу пользователя, и получить в итоге более дружественный интерфейс.
Данная обработка не содержит копированного из Синтакс-Помощника текста (его вы сможете прочитать и сами). Она показывает примеры использования перетаскивания; позволяет прямо в режиме Предприятия протестировать, проверить и отладить основные приёмы работы; понять принцип вызова событий и увидеть состав их параметров.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ВозможностиПеретаскивания
.epf 20,26Kb ver:1.0.0
148
148 Скачать (1 SM) Купить за 1 850 руб.

Перетаскивание в 1С представлено 4-мя событиями, которые доступны для следующих объектов:

  • поле формы/Расширение календаря
  • поле формы/Расширение картинки
  • поле формы/Расширение планировщика
  • поле формы/Расширение табличного документа
  • таблица формы/ТаблицаФормы
  • декорация формы/Расширение картинки


События НачалоПеретаскивания (стартовое) и ОкончаниеПеретаскивания (финишное) возникают в Источнике,  доступны при установке признака "Разрешить начало перетаскивания".

События ПроверкаПеретаскивания (первое промежуточное)и Перетаскивание (второе промежуточное) возникают в Приёмнике, доступны при установке признака "Разрешить перетаскивание".

В каждом событии доступны ПараметрыПеретаскивания, состоящие из Действие, ДопустимыеДействия, Значение.
Действие (тип ДействиеПеретаскивания) оказывает влияние на вид курсора (три варианта -- обычный, с плюсиком и отмена) и принимает четыре возможных значения:

  • Выбор (при перетаскивании правой кнопкой -- будет открыто всплывающее меню; срабатывает не во всех случаях), 
  • Копирование (при перетаскивании левой кнопкой с нажатым Ctrl), 
  • Отмена, 
  • Перемещение (при перетаскивании левой кнопкой).

ДопустимыеДействия (тип ДопустимыеДействияПеретаскивания) задаёт доступные действия в приёмнике и принимает значения:

  • Копирование, 
  • КопированиеИПеремещение, 
  • НеОбрабатывать, 
  • Перемещение. 


Событие Перетаскивание может не возникать в приёмнике -- если ДопустимыеДействия в НачалеПеретаскивания установлены в "НеОбрабатывать" или в событии ПроверкаПеретаскивания Действие установлено в "Отмену". Также Перетаскивание не возникает при несовместимости типов приёмника и источника (когда иконка курсора уже имеет вид "Отмена", независимо от параметров).

По умолчанию типы считаются совместимыми, если в качестве приёмника выступает ТаблицаФормы или ПолеТабличногоДокумента.

 

В источнике:
Изменение Действия не вызовет ошибки, но ни на что не влияет и смысла не имеет.

Изменение ДопустимыхДействий имеет смысл только в событии НачалоПеретаскивания, значение будет доступно во всех событиях, но нигде больше не может быть изменено. Задаёт первоначальный вид курсора (Перемещение, Копирование или Отмена) и набор доступных действий в приёмнике.
В случае установки значения "НеОбрабатывать" гарантированно не будет вызвано событие Перетаскивание, а в событие ОкончаниеПеретаскивания автоматически уйдёт Действие="Отмена".
В случае установки значения "Копировать" в событие ОкончаниеПеретаскивания автоматически уйдёт Действие="Копирование", даже если Ctrl не нажата.

В приёмнике:
Изменение Действия в ПроверкеПеретаскивания может влиять на вид курсора в случае понижения (Перемещение -> Копирование -> Отмена). В случае установки "Отмена" не будет вызвано событие Перетаскивание, в событие ОкончаниеПеретаскивания автоматически уйдёт Действие="Отмена".
Изменение Действия в Перетаскивании (только в случае понижения) уйдёт в событие ОкончаниеПеретаскивания.

Изменение ДопустимыхДействий не вызовет ошибки, но ни на что не влияет и смысла не имеет.

NB! По собственному опыту -- при работе с перетаскиванием возможны падения 1С:Предприятия, видимо, сказывается факт редкого использования (и как следствие -- недостаточного тестирования тестирования) этого механизма в типовых конфигурациях. Неоднократно воспроизводились, в частности, на платформе 8.3.6 при действиях на вкладке "Поддерживаемые по умолчанию элементы".

Возможно в каких-то выводах о работе механизма есть неточности -- не судите строго, пишите, исправлю. Обработка внутри содержит данный текст.

Ссылки по теме:
http://kb.mista.ru/article.php?id=326 (TormozIT, "v8:Глобальное перетаскивание") -- немного устарело в плане поддерживаемых элементов форм.
http://its.1c.ru/db/v83doc/bookmark/dev/TI000000433 (ИТС, "7.6.13. Механизм перетаскивания")

перетаскивание

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63088    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18955    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10311    7    7    

10

Механизмы платформы 1С Программист Платформа 1С v8.3 Бесплатно (free)

Давайте разберемся в механизме «История данных» и поэкспериментируем для наглядности. Сравним «Версионирование объектов» и «Историю данных».

06.03.2023    32558    dsdred    74    

216

Механизмы платформы 1С Программист Платформа 1С v8.3 Россия Бесплатно (free)

При знакомстве с новой механикой работы с асинхронностью (обещание, ждать и асинх) делал пометки, которыми и хочу поделиться. Ничего сверхъестественного в них нет, просто небольшие примеры и некоторые всплывшие нюансы использования.

29.07.2022    67383    zeltyr    25    

214

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    6038    kalyaka    6    

33

Механизмы платформы 1С Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Копнем глубже в тему "Что же такое динамическое обновление" и почему оно может привести к проблемам. И может ли?

09.05.2022    34490    Infostart    84    

248
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4794 19.11.15 11:58 Сейчас в теме
при работе с перетаскиванием возможны падения 1С:Предприятия, видимо, сказывается факт редкого использования (и как следствие -- недостаточного тестирования тестирования) этого механизма в типовых конфигурациях.

Да уж. "тестирования тестирования" этому механизму явно не хватает, ибо косячит он давно и разнообразно. Про любой фрагмент вышенаписанного можно сказать "срабатывает не во всех случаях", а квинтэссенцией любых знаний на эту тему является "пробуйте сами, авось сработает".
KilloN; Светлый ум; +2 Ответить
2. Yashazz 4794 01.12.15 12:42 Сейчас в теме
Добавка в тему, наблюдал только что на релизе 8.3.6.2390: если в табличном поле нет ни одной строки, перетаскивание не срабатывает, иконка в виде значка запрета, хотя всё включено и в событиях отказов нет. А вот как только появляется хотя бы одна строка, сразу начинает нормально работать.
3. Alias 176 01.12.15 13:24 Сейчас в теме
(2) Yashazz, это актуально только для дерева значений. На обычном табличном поле всё нормально.
На примере этой обработки -- на первой вкладке иконка для пустой таблицы-приёмника будет разрешающая. На второй вкладке (где как раз дерево) -- иконка для пустого дерева будет запрещающая. Почему такое ограничение -- не знаю.
4. Yashazz 4794 01.12.15 13:33 Сейчас в теме
(3) именно. Причём получатель-дерево может находиться даже в режиме отображения "список", а всё равно пофигу.
10. sh18 22.11.18 09:05 Сейчас в теме
(2) Легко решается:
СтандартнаяОбработка = Ложь
5. Eskimos 26 13.04.16 17:17 Сейчас в теме
Что за хитрая конструкция?\

Выполнение = Ложь;
6. Alias 176 18.04.16 15:47 Сейчас в теме
(5) Eskimos, Выполнение -- это стандартный третий параметр события НачалоПеретаскивания, С-П говорит о нём, что он "управляет выполнением перетаскивания. Если в теле процедуры-обработчика установить данному параметру значение Ложь, перетаскивание не начнется. Значение по умолчанию: Истина."
В данном примере Выполнение=Ложь; используется для отмены самой возможности начала перетаскивания в некоторых примерах (вообще нельзя ничего перетащить, можно только нажав Ctrl , можно только правой кнопкой мыши).
7. bestuzhev 684 17.05.17 14:19 Сейчас в теме
По умолчанию типы считаются совместимыми, если в качестве приёмника выступает ТаблицаФормы или ПолеТабличногоДокумента.

А можно как-то самому указать какие типы совместимы а какие нет, я например хочу перетащить картинку одну на другую и при этом потом поменять их местами?
8. Alias 176 17.05.17 15:35 Сейчас в теме
(7) Обычно поведение системы "по умолчанию" можно изменить(отменить), используя СтандартнаяОбработка=Ложь. В данном случае -- в событии ПроверкаПеретаскивания у приёмника.
Однако я приложил обработку -- почему-то не смог добиться правильного поведения. Если я использую СтандОбр=Ложь, переопределяя тем самым картинку курсора в приемнике, то сразу перестаёт вызываться событие ОкончаниеПеретаскивания в источнике (возможно, это недоработка платформы?).

И получается что всё работает, но со старого места картинка не удаляется. Конечно, можно очистить её в событии приёмника, но это будет неправильно -- т.к. в нём мы не знаем откуда именно пришло перетаскивание. В случае двух элементов такой вариант будет допустим, но не более.
Прикрепленные файлы:
ПоменятьМестамиКартинки.epf
9. Alias 176 05.06.17 14:02 Сейчас в теме
(8) описал ошибочное поведение в ветке https://partners.v8.1c.ru/forum/topic/1611250 , ответов не было, видимо тема не очень популярная. Однако судя по тому что в разных версиях (8.2-8.3) платформы обработка выполняется по разному, очень может быть ошибка платформы 8.3.
11. пользователь 15.02.19 12:11
Сообщение было скрыто модератором.
...
12. andy_zhav 197 05.04.19 10:38 Сейчас в теме
Пытаюсь реализовать перетаскивание между строк одной таблицы формы. В принципе решение нашел, как это сделать, но остается вопрос с формой курсора. Он всегда такой как при отмене. Как можно управлять этим процессом?

Как сделать правильно? я обработчике ПроверкаПеретаскивания получаю строку источник и строку приемник, записываю текущее значение в реквизит формы и при окончании перетаскивания выполняю действия по переносу строки. Курсор всегда в виде отмены независимо от значения действия перетаскивания
13. andy_zhav 197 05.04.19 10:44 Сейчас в теме
(12) Сам нашел свою ошибку. Нужно было написать СтандартнаяОбработка = ложь;
14. user605516 21.11.19 18:48 Сейчас в теме
Перетаскивание не работает, когда источник - табличный документ. Как можно решить проблему?
15. Alias 176 25.11.19 11:24 Сейчас в теме
(14) Уточните, пожалуйста: версию платформы, тип форм (обычные/управляемые), тип элемента приёмника, код событий, и что именно не работает.
Не работать может по многим причинам -- например, в проверке перетаскивания не указали СтандартнаяОбработка = Ложь;
В общем -- всё должно работать (за исключением некоторых случаев, например сейчас не работает перетаскивание файлов в ТД из проводника - https://partners.v8.1c.ru/forum/t/1864762/m/1864762).

P.S. Статья требует правок... Фраза "по умолчанию типы считаются совместимыми, если в качестве приёмника выступает ТаблицаФормы или ПолеТабличногоДокумента" не совсем корректна, там более сложная зависимость.
16. Vidz 11 11.08.20 06:10 Сейчас в теме
Товарищи, а кто пробовал перетаскивание в Планировщик из Табличной части (внешняя обработка) на управляемых формах? У меня не получается в событии Перетаскивание отловить в какое именно измерение было произведено перетаскивание. Платформа 8.3.15.1700
18. Shar4ik 16.01.21 17:55 Сейчас в теме
(16) В событии ПроверкаПеретаскивания элемента Планировщик указать стандартнаяОбработка = Ложь;, тогда активируется событие Перетаскивание(в элементе Планировщик если планируете его как приемник использовать) и пропадает курсор запрета.
17. user595437_denvoru 14.10.20 20:51 Сейчас в теме
Как автоматически (программно) организовать перетаскивание в ТабличномДокументе на управляемой форме. По умолчанию оно открывается ТолькоПросмотр = Истина, программно изменить только просмотр нельзя, помогает только меню Таблица-Редактирование. Надо запретить редактирование таблицы, но разрешить перетаскивание ячеек внутри. в толстом клиенте это решалось ТолькоПросмотр = Ложь в событии начало перетаскивание и Истина в окончании. Но в упр. форме это сделать не возможно?
19. 7OH 70 27.10.22 20:25 Сейчас в теме
Можно добавить в шапку.
Если изменить Значение у ПараметрыПеретаскивания, то событие Перетаскивание тоже не наступает.
Например - вместо массива ссылок мы решили передать структуру или строку JSON-а.
В проверке перетаскивания структуру видно, а вот окончание не наступает.
Уточню - проверял при тесте между РАЗНЫМИ базами.
20. Serg2000mr 691 20.08.23 21:29 Сейчас в теме
Если в таблице-источнике указать свойство Режим выделения строк (РежимВыделения) - вместо Множественный -> Одиночный, то на таблице-приемнике курсор начнет принимать знак запрета.
Оставьте свое сообщение