Удаление строки из документа?

Форум 1С: Одинэс.Ру

Найти!

Удаление строки из документа?

volodja
04.06.2009 - 06:38
Пишу вот такой код в документе с табличной частью
Процедура ПриЗаписи()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
    Если Количество = 0 Тогда  
        УдалитьСтроку();
    КонецЕсли;
КонецЦикла;
КонецПроцедуры
 
Удаляет при каждой записи только по 1 строке
Почему ?
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
29.03.2024 - 01:46
Смотри также:
"Повисшая" проводка.
Ошибка сохранения отчета
Реквизит неопределенного типа теряет данные

Re: Удаление строки из документа?

roma n
1 - 04.06.2009 - 06:44
Потому что после удаления строки текущей (спозиционированной) становится следующая. Потом методом ПолучитьСтроку() ты перепозиционируешься на строку, следующую за следующей, пропуская таким образом одну из строк.
Что написал, то и получил

Re: Удаление строки из документа?

victuan
2 - 04.06.2009 - 06:44
(0) Потому что перебор с конца надо делать.
 
Процедура ПриЗаписи()
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
нСтр = ТЗ.КоличествоСтрок();
Пока нСтр > 0 Цикл
  Если ТЗ.ПолучитьЗначение(нСтр,"Количество") = 0 тогда
    ТЗ.УдалитьСтроку(нСтр)
  КонецЕсли;
  нСтр = нСтр - 1;
КонецЦикла;
ЗагрузитьТабличнуюЧасть(ТЗ)
КонецПроцедуры

Re: Удаление строки из документа?

victuan
3 - 04.06.2009 - 06:45
Или вариантов для дятлов, добавь к своему коду одну строчку:
Процедура ПриЗаписи()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
    Если Количество = 0 Тогда  
        УдалитьСтроку();
        ВыбратьСтроки(); //<------------ добавил
    КонецЕсли;
КонецЦикла;
КонецПроцедуры

Re: Удаление строки из документа?

Uho
4 - 04.06.2009 - 06:50
все проще:
  
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
    Пока Количество = 0 Цикл
        УдалитьСтроку();
    КонецЦикла
КонецЦикла;

Re: Удаление строки из документа?

volodja
5 - 04.06.2009 - 06:50
спасибо, попробую

Интересные темы

odines.ru
29.03.2024 - 01:46
Смотри также:
Как убедить начальника, что надо избавляться от отрицательных остатков в регистрах?
Проблема с уникальностью номеров документов
Помогите. Вопрос про УРБД - долгий простой

Re: Удаление строки из документа?

который не честный
6 - 04.06.2009 - 06:52
ВыбратьСТроки()
ПолучитьСТроку()
Пока НомерСтроки>0 Цикл
Если Количество = 0 Тогда 
 УдалитьСтроку();
Иначе
ПолучитьСТроку()
КонецЦикла

Re: Удаление строки из документа?

chief accountant
7 - 04.06.2009 - 06:52
Или можно так
КоличествоСтрок = КоличествоСтрок();
Для СчетчикЦикла = 1 По КоличествоСтрок Цикл
НомерСтр = КоличествоСтрок - СчетчикЦикла + 1;
ПолучитьСтрокуПоНомеру(НомерСтр);
Если Количество = 0 Тогда
  УдалитьСтроку();
КонецЕсли;
КонецЦикла;

Re: Удаление строки из документа?

Струнин
8 - 04.06.2009 - 06:58
А в боянах нет до сих пор этой темы? :)

Re: Удаление строки из документа?

USSR
9 - 04.06.2009 - 07:21
а лучше не записывать документ, пусть юзер удаляет если надо. и дисциплинирует, и изврата с удалением не надо

Re: Удаление строки из документа?

VZ
10 - 04.06.2009 - 09:49
Решение (9) самое грамотное.
Процедура ПриЗаписи()
....
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Количество=0 Тогда
Предупреждение("Уберите строки с нулевым количеством!",30);
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЦикла;
....
 
И никаких соплей. Десять раз уберет - приучиться.

Re: Удаление строки из документа?

victuan
11 - 05.06.2009 - 08:38
(10) Нет, ну что за привычка у людей расширительно, субъективно, толковать сабж. Ведь в (0) ни слов нет о том, что таким образом "поправляются" действия операторов. Может эта ситуация возникает после перезаполнения или изменения каких-то условий?
Напр., у меня такой код работал при записи документа Инвентаризация (после автоматического перезаполнения) на рознице у ИП (еще на 7.5).

Re: Удаление строки из документа?

roma n
12 - 05.06.2009 - 09:07
11-victuan > равно как в (0) нет ни слова о том каким образом правильно организовать перебор строк с их одновременным удалением :))

Re: Удаление строки из документа?

victuan
13 - 05.06.2009 - 09:12
(12) Всё правильно, задан вопрос, на который дан ответ в (2) и даже приведен пример, как сделать, чтобы удалялось не по одной строке.

Re: Удаление строки из документа?

roma n
14 - 05.06.2009 - 09:14
(13) в (2) есть ответ? то есть причина такого поведения - перебор в прямом порядке а не лишнее перепозиционирование?
На всякий записал...

Re: Удаление строки из документа?

victuan
15 - 05.06.2009 - 09:18
перебор в прямом порядке => лишнее перепозиционирование.
Один из вариантов решения: перебор в обратном порядке.
Таков мой ответ, что не так?

Re: Удаление строки из документа?

roma n
16 - 05.06.2009 - 09:20
(15) да всё так, только о решении в (0) не спрашивалось... ну что за привычка у людей расширительно, субъективно, толковать сабж...
:))

Re: Удаление строки из документа?

USSR
17 - 05.06.2009 - 09:23
(11)Часто людям нужен не сабж, а свосем другое. И что плохого, если на форуме найдут лучшее решение, а не помогут реализовать никому ненужное ?

Re: Удаление строки из документа?

Uho
18 - 05.06.2009 - 09:54
а у меня красивее, короче и лаконичнее :P

Re: Удаление строки из документа?

roma n
19 - 05.06.2009 - 10:01
(18) лень проверять, но с чем-то вроде была там закавыка...
после удаления последней строки позиционирование теряется. ПолучитьСтроку() в этом случае не матерится?

Re: Удаление строки из документа?

Uho
20 - 05.06.2009 - 10:34
(19) помню-помню, что-то было)))

Re: Удаление строки из документа?

Uho
21 - 05.06.2009 - 10:40
+20 проверил различные варианты на ТЗ - вроде все работает

Re: Удаление строки из документа?

USSR
22 - 05.06.2009 - 10:56
(19,21) Дети "лейтенанта" Кнута :)

Re: Удаление строки из документа?

victuan
23 - 05.06.2009 - 13:47
:-)

Re: Удаление строки из документа?

Ctrl P
24 - 06.06.2009 - 06:41
я так пользую:
пока тз.найтизначение(0,сСтрока,"количество") =1 цикл
тз.удалитьстроку(сСтрока)
КонецЦикла
имхо самый короткий код... если нулей нет то и обхода не будет лишнего ))
Зы правда это для таблицы значении

Re: Удаление строки из документа?

Ctrl P
25 - 06.06.2009 - 06:51
тест

Re: Удаление строки из документа?

Ctrl P
26 - 06.06.2009 - 06:54
а что должно происходить когда нажимаешь на ссылку номера поста на форуме?

Re: Удаление строки из документа?

Ctrl P
27 - 06.06.2009 - 06:56
а вот че забыл, сСтрока = 0 в цикле надо
К списку тем 1 > К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« Нумератор в ПУБ.Нужен совет Оформление полисов ОСАГО в v7 »
© 2009 Форум 1С: Одинэс.Ру