|
как удалить строки тч документа | ☑ | ||
---|---|---|---|---|
0
dreamoff
03.05.12
✎
10:01
|
есть табл. часть обработки,в которой указаны нужные группы.как из табл. части документа корректно удалить строки номенклатуры, которые входят в эти группы с учетом иерархии?
|
|||
1
zak555
03.05.12
✎
10:05
|
перебор тч дока с конца
|
|||
2
Ненавижу 1С
гуру
03.05.12
✎
10:07
|
загрузка ТЧ в запрос, нахождение запросом нужные номера строк, создание массива нужных строк, удаление их из ТЧ
|
|||
3
dreamoff
03.05.12
✎
10:16
|
мне еще не понятно,как сделать,что бы отбор шел с учетом иерархии
|
|||
4
Ненавижу 1С
гуру
03.05.12
✎
10:20
|
(3)
1. в запросе есть оператор В ИЕРАРХИИ 2. в языке есть метод ПринадлежитЭлементу |
|||
5
dreamoff
03.05.12
✎
10:47
|
спУдаленых=новый СписокЗначений;
Пока рез.Следующий() Цикл спУдаленых.Добавить(рез.НомерСтроки); КонецЦикла; ТабличнаяЧастьДок = ДокКопия.Товары; Для каждого Строка Из спУдаленых Цикл ТабличнаяЧастьДок.Удалить(Строка); КонецЦикла; Ошибка при вызове метода контекста (Удалить) ТабличнаяЧастьДок.Удалить(Строка); по причине: Несоответствие типов (параметр номер '1') что не так?(( |
|||
6
Cube
03.05.12
✎
10:48
|
ТабличнаяЧастьДок.Удалить(Строка.Значение);
|
|||
7
ДенисЧ
03.05.12
✎
10:49
|
(5) Документацию не читаешь?
|
|||
8
Cube
03.05.12
✎
10:49
|
И зачем тебе вообще этот список значений нужен - не понятно.
|
|||
9
dreamoff
03.05.12
✎
10:51
|
глупая ошибка)
|
|||
10
dreamoff
03.05.12
✎
10:51
|
теперь он выходит индекс за границу
|
|||
11
dreamoff
03.05.12
✎
10:51
|
(8) а как грамотно сделать?
|
|||
12
catena
03.05.12
✎
10:52
|
(10)Потому что индекс и номер строки - два разных человека.
|
|||
13
Cube
03.05.12
✎
10:52
|
(10) Есть индекс строки, а есть номер строки. Индексы нумеруются с 0, а номера строк с 1...
|
|||
14
Wobland
03.05.12
✎
10:53
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
док=ДокументУстановкиЦен.ПолучитьОбъект(); й=док.Товары.Количество()-1; Пока й>=0 Цикл Состояние(""+й+"/"+док.Товары.Количество()); стр=док.Товары.Получить(й); Если стр.ЦенаВРознице=0 Тогда док.Товары.Удалить(й); КонецЕсли; й=й-1; КонецЦикла; Попытка док.Записать(); Сообщить("документ записан"); Исключение Сообщить("ошибка записи"); КонецПопытки; КонецПроцедуры |
|||
15
catena
03.05.12
✎
10:53
|
+(12)Ну и еще потому, что строк-то меньше становится в процессе удаления...
|
|||
16
Cube
03.05.12
✎
10:53
|
(11) Ну, хотя бы так:
ТабличнаяЧастьДок = ДокКопия.Товары; Пока рез.Следующий() Цикл ТабличнаяЧастьДок.Удалить(рез.НомерСтроки - 1); КонецЦикла; |
|||
17
Cube
03.05.12
✎
10:54
|
(15) +1
(14) +1 |
|||
18
dreamoff
03.05.12
✎
11:00
|
(16) выдает ошибку выхода за границу
|
|||
19
Zmich
03.05.12
✎
11:01
|
(18). Удаляй строки с конца, см. (15)
|
|||
20
catena
03.05.12
✎
11:02
|
Или создай массив строк и удаляй Строки, а не по индексу.
|
|||
21
Cube
03.05.12
✎
11:02
|
(18) Да потому что, скорее всего, ты пытаешься удалить строку, которой уже нет в ТЧ. Допуцстим, есть ТЧ с 5-ю строками. Нужно удалить 3-ю и 5-ю. Ты удаляешь сначала третью. Строки сдвигаются и пятая строка становится четвертой. И теперь ты пытаешься удалить строку номер пять... Занавес.
|
|||
22
fisher
03.05.12
✎
11:02
|
Если работать напрямую со ссылками на строки табличной части, тогда никакие номера строк и прочие извращения не нужны. Просто удаляешь по ссылкам без оглядки и всё. Если всё-таки по индексам нужно (по результатам запроса, например), тогда просто начиная с последних индексов удаляешь.
|
|||
23
НЕА123
03.05.12
✎
11:03
|
(14)+1
|
|||
24
Deon
03.05.12
✎
11:04
|
(22) У строк ТЧ нет ссылки
|
|||
25
Cube
03.05.12
✎
11:05
|
Посмотри тут: v8: Удаление проводок из регистра бухгалтерии
|
|||
26
fisher
03.05.12
✎
11:07
|
(24) В БД - да, нету. А в объекте "ТабличнаяЧасть" - есть. Это по сути есть коллекция ссылок на элементы, содержащие данные строк.
|
|||
27
catena
03.05.12
✎
11:08
|
(24)Не сработает?
СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("Номенклатура", ЧтоТоНенужное); МассивСтрок = ТЧ.НайтиСтроки(СтруктураОтбора); Для Каждого СтрокаТЧ из МассивСтрок Цикл ТЧ.Удалить(СтрокаТЧ); КонецЦикла; |
|||
28
hhhh
03.05.12
✎
11:23
|
(27) так у него иерархия еще.
|
|||
29
fisher
03.05.12
✎
11:23
|
(18) Просто еще в запросе отсортируй результат по убыванию номеров строк.
|
|||
30
catena
03.05.12
✎
11:27
|
(28)Я пример привела, я не собираюсь автору решение писать - у меня отпуск :)
|
|||
31
dreamoff
03.05.12
✎
11:55
|
"ВЫБРАТЬ
| УстановкаЦенНоменклатурыТовары.Номенклатура, | УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки |ИЗ | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары |ГДЕ | УстановкаЦенНоменклатурыТовары.Номенклатура.Родитель В ИЕРАРХИИ(&спНом) | |УПОРЯДОЧИТЬ ПО | НомерСтроки скажите,где ошибка,номер строк неверные |
|||
32
Cube
03.05.12
✎
11:58
|
(31) Сделай хотя бы так:
|УПОРЯДОЧИТЬ ПО | НомерСтроки УБЫВ |
|||
33
dreamoff
03.05.12
✎
11:58
|
(32) это я не целиком скопировал)
|
|||
34
dreamoff
03.05.12
✎
11:59
|
например позиция,которая в тч имеет номер 3154, у меня идет под номер 1
|
|||
35
Grobik
03.05.12
✎
12:04
|
Мне месяца три назад так подсказали (сработало):
МасСтрок = Новый Массив; Для каждого Строка из табЗагрузки Цикл Если Строка.сумма_квыплате="0,00" Тогда МасСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Для каждого Строка из МасСтрок Цикл табЗагрузки.Удалить(Строка); КонецЦикла; |
|||
36
Cube
03.05.12
✎
12:06
|
(34) Да ну на! Ты в запросе просто выбрал все документы. Отфильтруй по одному, что-то вроде:
|ГДЕ | УстановкаЦенНоменклатурыТовары.Номенклатура.Родитель В ИЕРАРХИИ(&спНом) | И УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка |
|||
37
Cube
03.05.12
✎
12:07
|
+(36) А лучше так:
|ГДЕ | УстановкаЦенНоменклатурыТовары.Номенклатура В ИЕРАРХИИ(&спНом) | И УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка |
|||
38
dreamoff
03.05.12
✎
12:09
|
чет я сегодня слишком много лажаю(
(36) а какая разница между этими конструкциями? |
|||
39
Eugene_life
03.05.12
✎
12:11
|
(38) одна из них ведет к пробуждению, а вторая - к забвению :)
|
|||
40
Cube
03.05.12
✎
12:12
|
(38) Во втором варианте можно в &спНом засунуть список, в котором идут группы с элементами вперемешку. И запрос это отработает нормально, в отличии от первого варианта...
|
|||
41
dreamoff
03.05.12
✎
12:42
|
спасибо всем, теперь все это надо закрепить)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |