Обработка событий таблицы формы #765812


#0 by clean_kirill
Господа. Поделитесь, пожалуйста, опытом на заданную тему. Проблема такая: по событию окончания редактирования строки таблицы формы необходимо произвести ряд манипуляций (изменить) с некими реквизитами этого объекта. В событии запрещено вызывать процедуры &НаСервере, можно только без контекста, а есть необходимость использовать уже написанные и именно серверные процедуры. Это как-нибудь решается ?
#1 by Nuobu
передачей параметров в серверные процедуры.
#2 by clean_kirill
Это очевидно. Но нужно передать весь объект и загонять его целиком в параметры - это как-то называется, наверное... Я о другом. Есть ли где-то событие, которое среагирует на изменение данных и в котором можно законно вызывать &НаСервере.
#3 by Zhuravlik
почему "В событии запрещено вызывать процедуры &НаСервере, можно только без контекста", что за событие?
#4 by Zhuravlik
а, понял. А нельзя воспользоваться событием "ПриИзменении" поля таблицы?
#5 by clean_kirill
Хорошая мысль. Надо пробовать. Процедура вешается на изменение всей строки целиком потому как любое изменение в любом поле вызывает пересчет всей строки таблицы и часть этих событий вызывают друг друга, а при окончании редактирования мы уже имеем подготовленный для дальнейшей обработки результат.
#6 by clean_kirill
Любопытно, что событие: ТаблицаФормы (FormTable) ПриИзменении (OnChange) Синтаксис: ПриИзменении Описание: Возникает при изменении данных. ... на самом деле возникает только при добавлении или удалении строки, но никак не при изменении данных таблицы.
#7 by singlych
Имеется в виду событие поля таблицы (т.е. колонки), а не самой таблицы. Там уже можно получить всю строку и передать ее в процедуру, где происходит пересчет. И так для всех полей, изменение к-х должно вызвать пересчет строки.
#8 by clean_kirill
Да, у так и написано - поля таблицы. Я уж так, до кучи. Для общего понимания логики разработчиков платформы.
#9 by singlych
ну дык не удивительно, меняя данные в строке, ты меняешь данные строки, а не данные таблицы. Вассал моего вассала - не мой вассал.
#10 by clean_kirill
А как быть с изменением табличной части у объекта, который становится модифицированным ?
#11 by singlych
А вот хз, засомневался, посмотрел, у меня при изменении поля таблицы оба события срабатывают. Все-таки вассал.
#12 by Nuobu
То потому что у тебя нету строчки "СтандартнаяОбработка = Ложь;" а у автора - скорее всего есть.
#13 by clean_kirill
А где СтандартнаяОбработка в ПриИзменении ?
#14 by clean_kirill
ПриИзменении срабатывают сначала у поля, потом у таблицы, но это не означает завершение редактирования. И на такое промежуточное состояние вешать пересчет всего объекта как-то нелогично.
#15 by clean_kirill
Вдогонку к своему посту: при изменении поля таблица реагирует (ПриИзменении), при завершении редактирования не реагирует.
#16 by DmitrO
это решается очень просто развязкой через таймер При окончании редактирования подключается обработчик ожидания, однократно с минимальными таймаутом. И в его процедуре делается контекстный серверный вызов.
#17 by clean_kirill
Спасибо, обязательно попробую. Так, глядишь, пользователи построят собственную событийную модель :)
#18 by DmitrO
Сдается мне, Билли, нас кто-то тут назвал пользователями!
#19 by clean_kirill
Сорри, если прозвучало некорректно. Однако, я таковым себя и ощущаю, пользуя этот ... интерпретатор, в котором очень часто, вместо того, чтобы просто открыть дверь, надо ломиться через огороды и задние дворы. Кстати, способ применил, работает, еще раз спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С