Имя: Пароль:
1C
1С v8
Барабашка?
0 Интрудер
 
14.11.12
15:20
Возможно у меня в голове... Известно что в системе две РеализацияТоваровУслугТовары, в каждой по две строки с сылкой на нужный заказ покупателя. Код удаляет только первую строку и выходит из цикла "Для каждого"

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РеализацияТоваровУслугТовары.Ссылка
|ИЗ
|    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
|    РеализацияТоваровУслугТовары.ЗаказПокупателя = &ЗаказПокупателя
|    И РеализацияТоваровУслугТовары.Ссылка.Проведен";
Запрос.УстановитьПараметр("ЗаказПокупателя", Ссылка);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
   
   Объект = Выборка.Ссылка.ПолучитьОбъект();
   Для каждого СтрокаТовар Из Объект.Товары Цикл
       Если СтрокаТовар.ЗаказПокупателя = Ссылка Тогда
           Объект.Товары.Удалить(СтрокаТовар);
       КонецЕсли;
   КонецЦикла;
   
КонецЦикла;

глюки?
1 France
 
14.11.12
15:20
ща набегут - беги
2 Amra
 
14.11.12
15:21
(1) Тссс, не спугни
3 shuhard
 
14.11.12
15:21
(0) да, это они - тараканы в голове
4 France
 
14.11.12
15:21
(2) кхм, может одумается))
5 PR
 
14.11.12
15:22
(0) Может не Объект написать, а Объект2, например?
6 Интрудер
 
14.11.12
15:22
млин после цикла добавляю еще один
   Для каждого СтрокаТовар Из Объект.Товары Цикл
       Если СтрокаТовар.ЗаказПокупателя = Ссылка Тогда
           Объект.Товары.Удалить(СтрокаТовар);
       КонецЕсли;
   КонецЦикла;


удаляет обе строки
7 Фокусник
 
14.11.12
15:22
(0) удаляемые строки добавляешь в массив, потом обход этого массива для удаления каждой строки
8 France
 
14.11.12
15:23
блин.. ну вот, не успел сказать "Кто первым проговорится"... а ведь все так хорошо начиналось))
9 Интрудер
 
14.11.12
15:24
(5) после двух подряд циклов убеждаюсь, что Объект = нужная реализация, строки в ней удалены.
10 MrStomak
 
14.11.12
15:25
Есть более хитрый вариант!
   Для Счетчик=-Объект.Товары.Количество() по 0 Цикл
       Если Объект.Товары[-Счетчик].ЗаказПокупателя = Ссылка Тогда
           Объект.Товары.Удалить(Объект.Товары[-Счетчик]);
       КонецЕсли;
   КонецЦикла;
11 antixrus
 
14.11.12
15:25
ТЧ.очистить :)
12 Интрудер
 
14.11.12
15:25
(7) дык скока раз подобный код вроде использовал без кеша, работало всегда. таки барабашка...
13 pwei
 
14.11.12
15:27
Виталик, скажи честно. Тебе деньги платят за 1С8?
14 tdm
 
14.11.12
15:27
(0) перебираете строки и тут же при переборе её удаляете)))
"Для каждого СтрокаТовар Из Объект.Товары Цикл"
т.е. сначала первая строка, её удаляем; затем перескакиваем на вторую - а её нет, конецЦикла)
простите, но это быдлоКод =)))

(11) +100500
15 Интрудер
 
14.11.12
15:28
(10) -> (12)
понятно, откуда барашка,, должно работать же
(13) Нееее, я альтруист)
16 tdm
 
14.11.12
15:28
(12) прислушайтесь - он вам дело говорит) ваш же код с большими таб.частями и разными заказами будет творить вообще непредсказуемое)))
17 Spieluhr
 
14.11.12
15:30
конфигурация 1С:Барабашка
18 PR
 
14.11.12
15:30
(9) Может в объекте английские буквы есть?
19 asady
 
14.11.12
15:30
(0) В войске Чингисхана был закон - боевое подразделение за неудачи и по другим причинам подвергали децимации - перед общим строем казнили каждого десятого из этого подразделения.
Как ты думаешь как это было реализовано:
1. Берут 10-го выводят из строя и убивют, отсчитывают теперь 20-го выводят и т.д.

2. Берут сначала выводят из строя 10-го, 20-го, 30-го и т.д
и затем их казнят
20 Интрудер
 
14.11.12
15:30
(14)так и думал, но что-то в мозгах сидит что где то работало. видимо так работало... по ходу (10). Спасибо
21 Aprobator
 
14.11.12
15:31
(0) сразу в запросе отобрал ненужные (номера) строки. Отсортировал в обратном порядке. Итоги по Ссылка. И удаляй сразу при обходе результата запроса.
22 PR
 
14.11.12
15:31
Блин, не взлетела веточка :))
23 Spieluhr
 
14.11.12
15:32
(0) решение: переход на 7.7, там не было таких бесовских конструкций языка типа Для Каждого Из
24 Aprobator
 
14.11.12
15:32
садист
25 France
 
14.11.12
15:32
(22) да, Дмитрий поторопился))
26 НЕА123
 
14.11.12
15:32
не пятница, конечно, но скажу:
убери РАЗЛИЧНЫЕ!
27 Интрудер
 
14.11.12
15:33
(21) о как... красиво. тока пока так не умею(
28 Reset
 
14.11.12
15:33
Для каждого СтрокаТовар Из Объект.Товары.НайтиСтроки(Новый Структура("ЗаказПокупателя",Ссылка)) Цикл
           Объект.Товары.Удалить(СтрокаТовар);
   КонецЦикла;
29 tdm
 
14.11.12
15:33
(22) чего над семёрошниками издеваться)))
30 tdm
 
14.11.12
15:34
+(29) они и так 1с-ом обижены))))
31 Интрудер
 
14.11.12
15:34
(26) в запросевыборке будет 4 строки, смысл?
32 НЕА123
 
14.11.12
15:34
(21)
прибил, завалил ветку
33 Интрудер
 
14.11.12
15:34
(30)+1
34 Reset
 
14.11.12
15:35
(26) Тогда повторяться буду реализации - выборка идет из таб части
35 myk0lka
 
14.11.12
15:35
(20) В (19) тебе подробно объяснили как нужно делать.
36 DexterMorgan
 
14.11.12
15:35
Вечный вопрос по удалению строк из ТЗ=)
37 DexterMorgan
 
14.11.12
15:36
(19) зачет)
38 Aprobator
 
14.11.12
15:37
не по удалению, а по их внезапному исчезновению )
39 НЕА123
 
14.11.12
15:53
(34)
да. но удалится все что нужно.
40 НЕА123
 
14.11.12
15:55
(39)
+ оптимально для автора сделать (28)
41 Интрудер
 
14.11.12
16:17
(21)
           |УПОРЯДОЧИТЬ ПО
           |    НомерСтроки УБЫВ
           |ИТОГИ ПО
           |    Ссылка";
           Запрос.УстановитьПараметр("ЗаказПокупателя", Ссылка);




           Выборка = Запрос.Выполнить().Выбрать();

Как будет выглядеть второй параметр в "Выбрать()"

(40) разве не то-же самое, но оптимальней? вместо перебора со сравнением делаем отбор по найти. кажется. вторую строку все равно не удалит(14)
42 Интрудер
 
14.11.12
16:20
(41)+ не перебирал итоги никогда(
43 Aprobator
 
14.11.12
16:23

ВыборкаПоДокументам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоДокументам.Следующий() Цикл
    ДокументОбъект = ВыборкаПоДокументам.ИмяСсылкиНаДокумент.ПолучитьОбъект();
    ВыборкаПоСтрокам = ВыборкаПоДокументам.Выбарть();
    Пока ВыборкаПоСтрокам.Следующий() Цикл
    .......
    КонецЦикла;
КонецЦикла;

только сначала пройдись отладчиком в тестовом режиме без изменений проверь правильно ли сортировка отрабатывает.
44 НЕА123
 
14.11.12
16:23
(41)
не смотри на (40).
(21) самое верное.
не помню, попробуй без параметров. выглядеть должно типа

Пока Выборка.Следующий() Цикл
   ВЫборкаНомер = Выборка.Выбрать();
   Пока ВЫборкаНомер.Следующий() Цикл
45 Aprobator
 
14.11.12
16:24
(42) У меня сын тоже Сталкером зачитывался в свое время ). Прикольная книжка.
46 Интрудер
 
14.11.12
16:30
(43)то что искал. Спасибо, Aprobator.
47 Aprobator
 
14.11.12
16:33
на здоровье.