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

17.11.15

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

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

Скачать файлы

Наименование Файл Версия Размер
ВозможностиПеретаскивания
.epf 20,26Kb
140
.epf 1.0.0 20,26Kb 140 Скачать

Перетаскивание в 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 Платные (руб)

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

6000 руб.

16.01.2015    61794    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54401    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16696    21    4    

35

Версионирование объектов VS История данных

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

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

06.03.2023    18944    dsdred    54    

193

Шпаргалка по функциям АСИНХ

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

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

29.07.2022    41826    zeltyr    23    

194

Модель состояния для MVC

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

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

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Динамическое обновление - это зло?

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

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

09.05.2022    26862    Infostart    83    

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

Да уж. "тестирования тестирования" этому механизму явно не хватает, ибо косячит он давно и разнообразно. Про любой фрагмент вышенаписанного можно сказать "срабатывает не во всех случаях", а квинтэссенцией любых знаний на эту тему является "пробуйте сами, авось сработает".
KilloN; Светлый ум; +2 Ответить
2. Yashazz 4709 01.12.15 12:42 Сейчас в теме
Добавка в тему, наблюдал только что на релизе 8.3.6.2390: если в табличном поле нет ни одной строки, перетаскивание не срабатывает, иконка в виде значка запрета, хотя всё включено и в событиях отказов нет. А вот как только появляется хотя бы одна строка, сразу начинает нормально работать.
3. Alias 176 01.12.15 13:24 Сейчас в теме
(2) Yashazz, это актуально только для дерева значений. На обычном табличном поле всё нормально.
На примере этой обработки -- на первой вкладке иконка для пустой таблицы-приёмника будет разрешающая. На второй вкладке (где как раз дерево) -- иконка для пустого дерева будет запрещающая. Почему такое ограничение -- не знаю.
4. Yashazz 4709 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 679 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.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 69 27.10.22 20:25 Сейчас в теме
Можно добавить в шапку.
Если изменить Значение у ПараметрыПеретаскивания, то событие Перетаскивание тоже не наступает.
Например - вместо массива ссылок мы решили передать структуру или строку JSON-а.
В проверке перетаскивания структуру видно, а вот окончание не наступает.
Уточню - проверял при тесте между РАЗНЫМИ базами.
20. Serg2000mr 311 20.08.23 21:29 Сейчас в теме
Если в таблице-источнике указать свойство Режим выделения строк (РежимВыделения) - вместо Множественный -> Одиночный, то на таблице-приемнике курсор начнет принимать знак запрета.
Оставьте свое сообщение