Имя: Пароль:
1C
1С v8
Не удаляется строка табличной части в управляемой форме
0 ChAlex
 
21.08.12
12:56
Очередной косяк. Как блин это уже задолбало !!

Управляемая форма документа. На форме есть табличная часть документа и реквизит в виде таблицы. При удалении строки табличной части мне нужно убрать видимость соответсвующей колонки таблицы. В событии ПередУдалением делаю вызов серверной функции

УдалитьСтатью(Элемент.ТекущиеДанные.ID)

В которой выполняется некий алгоритм и нужным колонкам реквизита таблицы устанавливаю Видимость=ложь. В результате удаляемая строка табличной части НЕ УДАЛЯЕТСЯ!!! А остается, как ни в чем не бывало. Если комментирую изменение видимости колонок - строка удаляется!
1 hhhh
 
21.08.12
13:02
отказ = истина видимо вставил.
2 ChAlex
 
21.08.12
13:03
да нету никакого отказа. Стоит закомментировать только изменеие видимости колонок - и строка удаляется.
3 hhhh
 
21.08.12
13:07
(2) стоп. Как же ты делаешь изменение видимости. Ты же уничтожаешь этим свой Элемент.ТекущиеДанные. Причеи прям перед его удалением.

Походу ты сам себя задолбал.
4 ChAlex
 
21.08.12
13:12
(3) еще раз поясню: на форме документа 2 (ДВЕ!!!) таблицы - одна - табличная часть документа, другая - ТАБЛИЦА (просто таблица значений, реквизит формы). Удаляю строку в табличной части документа, а видимость убираю в другой таблице. И что тут нелогичного?! При этом что не следует удалить строку?
5 ChAlex
 
21.08.12
13:16
механизм этого косяка я догадываюсь - просто при смене видимости сервер назад видимо возвращает удаляемую строку.
6 SUA
 
21.08.12
13:22
СП

Примечание:

В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
7 SUA
 
21.08.12
13:23
собственно все верно
перед удалением можно запомнить ИД удаляемой колонки
и в обработчике после удаления менять форму как угодно
8 ChAlex
 
21.08.12
13:28
(6) -  :) вы не поверите, я все тоже самое написал в самом обработчике : результат естественно тот-же.Тогда уже в документации следовало бы написать "В обработчике данного события нельзя использовать ВЫЗОВ сервера" - ибо ни одной процедуры не компилируется на сервере - а результат тот же (вызов сервера делается неявно).
9 SUA
 
21.08.12
13:30
(8)а как видимость реквизита формы не на сервере поменять?
именно "серверные методы формы" тут
10 SUA
 
21.08.12
13:31
получить данные с сервера не меняя формы как раз легко можно
11 ChAlex
 
21.08.12
13:43
(10) - ага, меня вот только все время мучает вопрос а нафиг изменение различного рода видимости и прочие интерфейсные вещи нужно делать на сервере? Просто сделали не совсем удачную модель управляемой формы - отсюда и все корни. Неужели управлять поведением окна формы не проще на самой станции. Ничего нового в оптимизации трафика 1С не придумала. Еще с самого появления С+ (подозреваю еще и раньше) известна технология DocView - только там нормально оптимизируется взаимодействие представления данных и их извлечением с сервера и никто не пытается на сервере строить саму форму. Ладно - это все равно в пустоту