Имя: Пароль:
1C
1С v8
Удаление строки таб части документа
,
0 Adgjj
 
05.12.11
16:18
Процедура СписокПередУстановкойПометкиУдаления(Элемент, Отказ)  //установка и снятие пометки удаления
   для каждого СтрокаУслуги из Элемент.ТекущаяСтрока.Услуги Цикл
       если Элемент.ТекущаяСтрока.ПометкаУдаления = ложь тогда //установка пометки удаления
           Элемент.ТекущаяСтрока.ПолучитьОбъект().Услуги.Удалить(СтрокаУслуги.НомерСтроки-1);
       конецесли;
Надо при установке пометки удаления на документ удалять строки его табчасти. Скажите, пжл, почему мой код не удаляет строку, а просто помечает док на удаление. Ошибок не выдает.
1 Adgjj
 
05.12.11
16:18
в условие если Элемент.ТекущаяСтрока.ПометкаУдаления = ложь тогда  заходит
2 DrShad
 
05.12.11
16:19
Очистить()
3 Buster007
 
05.12.11
16:20
ну и код...
а записывать кто будет?
4 Eugene_life
 
05.12.11
16:21
(0) А при снятии пометки на удаление - что, восстанавливать строки надо будет?
5 netDog
 
05.12.11
16:21
ты не записываешь объект после удаления строки. А для чего такая потребность удалять строки документа при пометке на удаление? А если случайно пометку поставят?
6 Adgjj
 
05.12.11
16:24
тоже не удаляет:
Процедура СписокПередУстановкойПометкиУдаления(Элемент, Отказ)  //установка и снятие пометки удаления
   если Элемент.ТекущаяСтрока.ПометкаУдаления = ложь тогда //установка пометки удаления
           Элемент.ТекущаяСтрока.ПолучитьОбъект().Услуги.Очистить();
           Элемент.ТекущаяСтрока.ПолучитьОбъект().Записать();
       конецесли;
7 Buster007
 
05.12.11
16:25
(4) воскрешать будет)
Процедура ВоскреситьИзМертвых()
...
КонецПроцедуры
8 Buster007
 
05.12.11
16:25
(6) иди читай книги.
9 Adgjj
 
05.12.11
16:26
а как записать?
10 DrShad
 
05.12.11
16:27
(8) +100500
нахера каждый раз получать один и тот же объект и этим убивать изменения
11 netDog
 
05.12.11
16:29
Ты точно уверен в том что делаешь? Может не надо все строки удалять? Но если уж не в терпежь тебе, то делай хотя бы в модуле объекта. Например, процедура "ПередЗаписью" проверять на режим записи и пометку
12 netDog
 
05.12.11
16:32
(11) хотя перед записью и не проверишь)
13 netDog
 
05.12.11
16:41
(12) проверил, проверяется. Но вопрос - а на фига, остается открытым. У тебя от табличной части движения какие то делаются на прямую не зависимо от состояния?
14 Eugene_life
 
05.12.11
16:52
(0) Расшифровываю для автора. Автор, ты собираешься сделать большую, непоправимую бяку себе. Потому что любой пользователь подразумевает, что если он ошибочно поставил, а потом снял галку "Пометка удаления", то данные останутся на месте. А если ты очистишь их - то уже не вернешь.
Очистить можно так: ЭтотОбъект.Товары.очистить()
Для очистки цикл не нужен.
15 Adgjj
 
06.12.11
09:07
(14) при установке пометки на удаление вывожу:
ТекстВопроса = "При установке пометки на удаление СТРОКИ ДОКУМЕНТА УДАЛЯТСЯ! "+
       "Вы действительно хотите пометить на удаление?";
Удаление строк вот для чего:
В конф-ции UAT при заполнении таб части документа "Счет на оплату услуг покупателю" ТТД-шками (кнопка "Заполнить") выбираются все соответствующие указанному фильтру документы ТТД, в т. ч. и те, к-рые уже участвуют в других счетах. Пользователи просят, чтобы ТТД, к-рые были ранее выбраны в других счетах, не появлялись в таб части док-та "Счет ...".
Таб часть счета заполняется из регистра накопления, связанного с документом ТТД.
Для реализации просьбы пользователей решила в регистр накопления добавить измерение "Счет", куда записывать ссылку на "Счет" при попадании ТТД в Счет. При нажатии кнопки "Заполнить" в Счете выбираются строки регистра с пустой ссылкой в колонке счет. Если док-т помечен на удаление, то из регистра накопления ссылка на док-т "Счет" должна удаляться и строки тоже.
16 Adgjj
 
06.12.11
09:09
(14) а в (6) я разве не так очищаю, как у Вас написано? и цикл там нет - не удаляет
17 Adgjj
 
06.12.11
09:22
так удалилось
ДокСчет = Элемент.ТекущаяСтрока.ПолучитьОбъект();
           ДокСчет.Услуги.Очистить();
           ДокСчет.Записать();