Удаление строки табличной части документа из обработки #724898


#0 by kissolo
Подскажите, плиз. Только начал изучать 8ку. Задание - выбрать в обработке документ, удалить из табличной части строки, подходящие по условию. Но строка не удаляется. "Объект недоступен для изменения." ЧЯДНТ?
#1 by ДенисЧ
Я. Всегда. Буду. Получать. Объект. Для Изменения! (с) Барт Симпсон
#2 by kissolo
А теперь по-русски? Говорю ж, только начал изучать :(
#3 by Фокусник
Объект.ДокументРеализация - это ссылка, а работать нужно с объектом:
#4 by kissolo
Спасибо большое, сейчас попробую!!!!
#5 by Андрюха
Что такое "Объект.ДокументРеализация"? Где ты его берешь?
#6 by Рэйв
НЕ слушай плохих дядей. .НайтиСтроки в СП Можешь не благодарить :-)
#7 by Рэйв
Если условие  одно, то можно просто .Найти Там проще
#8 by ДенисЧ
А теперь удалим строку из ссылки. Это будет упражнением на дом, когда мы протрезвеем...
#9 by Фокусник
и как условие Цена < 150 впихнуть в НайтиСтроки? ;)
#10 by Рэйв
А уж . Удалить что нужно аоди сам сможешь
#11 by Рэйв
Да легко. Массив перебираем с условием. А есть другие предложения?:-)
#12 by kissolo
Из реквизита обработки. Пользователь выбирает. Вот удалить и не получается :(
#13 by Chameleon1980
Объект.ДокументРеализация.Товары кто это? Тебе правильно говорили, что нужно получитьОбъект чтобы у него что-то менять. Если ты имеешь ссылку на документ получи объект вот так: ДокОбъект=СсылкаНаДок.ПолучитьОбъект поработай с ним (именно с ДокОбъект) - поудаляй там. Потом сохраняй именно ДокОбъект как ты будешь удалять строки это уже второй вопрос, но первоначальный  твой подход неверный. т.к. после удаления даже первой ненужной строки у тебя нарушается цикл для каждого. Есть разные способы.
#14 by Управление торговлей
никакой цикл не нарушается, это же не семерка
#15 by Chameleon1980
ну как считаете
#16 by kissolo
ДокументРеализация - это реквизит обработки, его тип - ДокументСсылка.РеализацияТоваровУслуг. Объект.ДокументРеализация.Товары - это соотв-нно табличная часть документа. (Наверное надо было сразу сказать, это типовая БП).
#17 by ДенисЧ
"это реквизит обработки, его тип - ДокументСсылка" Сколько дятла не корми, а у слона всё-равно толще....
#18 by kissolo
Тормознул. Сейчас поправил код, строка удалилась, док записался. вот код: Осталось проверить, как будет удалять строки в середине таблицы - не будет ли пропускать строки после удаления строки...
#19 by ДенисЧ
будет. Зуб даю. Последний...
#21 by kissolo
Ну, собссно, я и не сомневался, в 7ке так же пропускает следующую строку после удаленной. Спасибо, это рабочий вариант! :) Скажите, а если по моему варианту работать, но спозиционироваться после удаления на одну строку назад - такое возможно? Какой командой?
#22 by Управление торговлей
Вот код:     сообщить("Количество строк документа: "+д.товары.Количество); Количество строк документа: 8 Количество после удаления: 4 Пропусков нет
#23 by kissolo
Угу. А если будет подряд две строки с Количеством=2? Или три? Если они идут хотя бы через одну - то да, все нормально. А вот если подряд хотя бы две - то увы, облом. Тут, по идее, как вариант - множественное прохождение цикла по строкам, когда при хотя бы единственном удалении - включать флажок повторного прохождения, и опять крутить цикл... Но я хотел обойтись без этого, а просто после удаления строки спозиционироваться на текущейстроке - 1. как-то так. Просто синтаксис в 8ке не знаю еще, вот и спрашиваю - такое возможно?...
#24 by GreatOne
Немного потерял суть вопроса, но думаю, что дело все еще в удалении строк из тч, удовлетворяющему некоему условию. ""Просто синтаксис в 8ке не знаю еще, вот и спрашиваю - такое возможно?... Для синтаксиса есть синтаксис помощник. Для много другого - глобальный поиск. Вот к примеру сочетание букв "удалитьстрок" в глобальном поиске открывает кучу методов, первый в списке найденных является решением вопроса.
#25 by GreatOne
Кстати недавно опять ей пользовался. Сокращенный вариант:
#26 by Prog-AL
В Гринатом задание?
#27 by Управление торговлей
Да хоть в порядке чисел Фибоначчи. При удалении строк выборка не сбивается.
#28 by Управление торговлей
Опровергаю, был не прав. Затупил и имел в виду обработку результата .найтистроки
#29 by kissolo
Нет, как удалить строки, я уже понял, вопрос еще один задал - как спозиционироваться на конкретной строке в таблице (это если использовать мой вариант кода из )? Вы уже на вопрос ответили в коде. про синтаксис помощник знаю, но как он поможет, если не знаю, как пишется команда? (Посмотрел на него, там иная совершенно структура, по сравнению с 7кой, к ней еще привыкнуть надо). Я про позиционирование на конкретной строке. За "глобальный поиск" спасибо - редко пользовался, забыл тут использовать. и Вопрос. Вот у вас Инд = 2. Вы удалили эту строку. Теперь на следующем шаге цикла, с Инд=3, у вас какая строка будет? ИМХО (исходя из опыта на 7ке), это уже не 4я оригинальная, а 5я, т.е. одну строку Вы пропустили из проверки. Я не прав? Туда. Пытался сам справиться, но слишком мало знаю :( А что, Вы там работаете? Вот то-то и оно :) Получается, что надо использовать счетчик, как в или , и при удалении строки - уменьшать его на единицу.
#30 by Крошка Ру
>>Вот у вас Инд = 2. Вы удалили эту строку. Теперь на следующем шаге цикла, с Инд=3, у вас какая строка будет? ИМХО (исходя из опыта на 7ке), это уже не 4я оригинальная, а 5я, т.е. одну строку Вы пропустили из проверки. Я не прав? Цикл перебирает строки с конца. Удалил 4-ю строку - цикл переходит на 3-ю и пофиг, что вместо удаленной 4-й встала 5-я.
#31 by МимохожийОднако
Выгрузить из ТЧ, Очистить, загрузить в ТЧ то, что отвечает условию.
#32 by kissolo
Точно. В общем, еще один рабочий вариант. В общем, всем спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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