Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему при добавлении строки в ТабПоле срабатывает событие перетаскивание?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Small sa
Доброго времени суток. Помогите понять:
У табличного поля в обработке определены события: Начало перетаскивания, Проверка перетаскивания и Перетаскивание. При перетаскивании строк между элементами формы эти события отрабатывает корректно.
Но они так же вызываются и при стандартном добавлении строки в Табличном поле. Я считала, что добавление строки не попадает под понятие перетаскивание. Я не права?
Vofka
Это, скорее, вопрос к разработчикам платформы smile.gif
Ziam
Создал обработку. Вставил в нее ТабличноеПоле (ТипЗначения = Таблица значений).
Добавил колонку Валюта(отфонаря).
Определил события: НачалоПеретаскивания, ПроверкаПеретаскивания, ОкончаниеПеретаскивания, Перетаскивание. Поставил в них точки остановки.

При вводе новой строки ни одно из перечисленных событий не возникло. Так что смотрите код. Может у вас там програмно создается новая строка, не знаю. У меня отрабатывались точки остановки лишь при перетаскивании.
Small sa
Цитата(Vofka @ 23.05.12, 14:19) необходимо зарегистрироваться для просмотра ссылки
Это, скорее, вопрос к разработчикам платформы smile.gif

А вдруг кто-то читал про такое в умных книжках, написанных разработчиками..=)

Цитата(Ziam @ 23.05.12, 14:24) необходимо зарегистрироваться для просмотра ссылки
Создал обработку. Вставил в нее ТабличноеПоле (ТипЗначения = Таблица значений).
Добавил колонку Валюта(отфонаря).
Определил события: НачалоПеретаскивания, ПроверкаПеретаскивания, ОкончаниеПеретаскивания, Перетаскивание. Поставил в них точки остановки.

При вводе новой строки ни одно из перечисленных событий не возникло. Так что смотрите код. Может у вас там програмно создается новая строка, не знаю. У меня отрабатывались точки остановки лишь при перетаскивании.

Помимо стандартного добавления строк в ТП есть добавление строки программно: по кнопке и при перетаскивании из другого элемента формы. Но как это влияет на обработку стандартного добавления строки и срабатывании события перетаскивания?
Вот моя обработка (конфа не стандартная, но код посмотреть можно и так..)
необходимо зарегистрироваться для просмотра ссылки
Cnhtkjr
"ДобавитьСтроку()" в ТЧ, если мне не изменяет память, вызывает интерактивный метод добавления строки.
По описанию проблемы конечно сложно понять, что именно вы имели ввиду, но попробую проявить свои телепатические способности:
Вы не пробовали вместо
ЭлементыФормы.<Табличное>.ДобавитьСтроку();

использовать
ЭтотОбъект.<Табличное>.Добавить();

?

мало ли, а вдруг.

Small sa
Cnhtkjr, я "использую" метод платформы - правой кнопкой мыши на табличном поле, появляется стандартная менюшка (добавить, копировать, удалить). Выбираю добавить и происходит добавление строки - признаться я не знаю, каким методом это делает платформа - Добавить() или ДобавитьСтроку(). Но во время добавления строки срабатывает событие ПЕРЕТАСКИВАНИЕ. О причинах захода в стандартную процедуру Перетаскивание() я и спрашивала...
logist
Цитата(Small sa @ 25.05.12, 8:32) необходимо зарегистрироваться для просмотра ссылки
О причинах захода в стандартную процедуру Перетаскивание() я и спрашивала...

А посмотреть в справке не пробовали? Cnhtkjr сказал верно, именно потому что вы работаете с формой (ЭлементыФормы.) и возникает событие Перетаскивание, оно возникает при работе с ЭлементыФормы, в новой строке не зависимо от того каким образом появилась эта строка (добавлением по правой кнопке, добавлением через insert...)
Small sa
Цитата(logist @ 25.05.12, 10:48) необходимо зарегистрироваться для просмотра ссылки
А посмотреть в справке не пробовали?

Пробовала, не помогает! =)
Цитата
ТабличноеПоле (TableBox)
Перетаскивание (Drag)
Синтаксис:
Перетаскивание(<Параметры перетаскивания>, <Стандартная обработка>, <Строка>, <Колонка>)
Параметры:
<Параметры перетаскивания>
Тип: ПараметрыПеретаскивания. Содержит перетаскиваемое значение, тип действия и возможные действия при перетаскивании.
<Стандартная обработка>
Тип: Булево. В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина
<Строка>
Строка, над которой находится объект.
<Колонка>
Тип: КолонкаТабличногоПоля. Колонка, над которой находится объект.
Описание:
Возникает при окончании перетаскивания в табличном поле - приемнике данных.


Цитата
ТабличноеПоле.ДобавитьСтроку (TableBox.AddRow)
ТабличноеПоле (TableBox)
ДобавитьСтроку (AddRow)
Синтаксис:
ДобавитьСтроку()
Описание:
Добавляет строку в табличное поле, аналогично выполнению команды "Добавить".
Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Если табличное поле связано с набором записей регистра сведений, то новые записи можно вводить "вручную" только если для регистра установлен режим записи "Независимый" (задается при конфигурировании). Если набор записей принадлежит регистру накопления либо для регистра сведений установлен режим записи "Подчинение регистратору", то добавление новых "ручных" записей не допускается.

Цитата
ЭлементыФормы (Controls)
Добавить (Add)
Синтаксис:
Добавить(<Тип>, <Имя>, <Видимость>, <Поместить на>)
Параметры:
<Тип> (обязательный)
Тип: Тип. Тип добавляемого элемента управления
Индикатор
ПолеКалендаря
Кнопка
КоманднаяПанель
Надпись
Панель
Переключатель
ПолеТабличногоДокумента
ПолеHTMLДокумента
ПолеТекстовогоДокумента
ПолеВвода
ПолеВыбора
ПолеСписка
ПолеКартинки
ПолосаРегулирования
Разделитель
РамкаГруппы
ТабличноеПоле
Флажок
ПолеГрафическойСхемы
ПолеГеографическойСхемы
<Имя> (обязательный)
Тип: Строка. Имя создаваемого элемента управления. Имя должно быть указано в соответсвии с правилами написания имен системы 1С:Предприятие 8. В противном случае выполнение метода вызовет исключение.
<Видимость> (необязательный)
Тип: Булево. Определяет, создавать новый элемент управления формы видимым или нет. Истина - элемент создается видимым.
Значение по умолчанию: Истина
<Поместить на> (необязательный)
Тип: Панель, ПолеТабличногоДокумента. Определяет, какой панели формы или какому табличному документу принадлежит создаваемый элемент. Если указана панель, то добавляемый элемент размещается на текущей странице панели. Если не указан, создаваемый элемент будет принадлежать непосредственно форме.
Возвращаемое значение:
Элемент управления формы.
Описание:
Добавляет элемент управления на форму.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.


Уважаемый logist, расскажите пожалуйста, где я упустила в справке связь ДОБАВЛЕНИЕ - ПЕРЕТАСКИВАНИЕ. По моей ограниченной женской логике: Перетаскивание в форме - это взяли существующий элемент с формы и куда-то его перетащили; добавление - это с позиционировались в каком - то месте формы и добавили туда откуда-то (не из этой формы) объект..

В чем нюанс? wink.gif
logist
Цитата(Small sa @ 25.05.12, 10:49) необходимо зарегистрироваться для просмотра ссылки
В чем нюанс?

Нюанс в том, что событие Перетаскивание возникает в приемнике, а приемник не знает каким образом в него началось добавление, поэтому и отрабатывает событие перетаскивание.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.