Имя: Пароль:
1C
1С v8
Удалить строку из табличного поле 8,2
,
0 KonstantinK90
 
22.09.16
10:37
всем привет! Подскажите как можно удалить строку вот код
Процедура ПоисНоменклатурыПоГруппам(РеализТовары,СписокГрупп,ВидГруппы)
    
    ТЗМоя = РеализТовары.Выгрузить();       //ТЗМоя.Выбратьстроку()
    
    ////    
    Запрос = Новый Запрос;
    МенеджерВремТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенеджерВремТаблиц;
    Запрос.Текст = "ВЫБРАТЬ
         |  *
         | ПОМЕСТИТЬ ТаблицаДляОстатков
         |ИЗ
         |   &ТЗМоя КАК Таб
         |ГДЕ
         |   Таб.Номенклатура В ИЕРАРХИИ(&Номен);
         /////////////////
         |ВЫБРАТЬ
         |   *
         |ИЗ
         |   ТаблицаДляОстатков КАК ТаблицаДляОстатков";
    Запрос.УстановитьПараметр("ТЗМоя",ТЗМоя);
    Запрос.УстановитьПараметр("Номен",СписокГрупп);
    
    Результат = Запрос.Выполнить().Выбрать();
    
    МенеджерВремТаблиц.Закрыть();
    
    Количество = 0;    
    Пока Результат.Следующий() Цикл //Результат.Количество()  
             Если ВидГруппы = "АКБ" Тогда
                                     
                    НоваяСтрока = ДокАКБ.Товары.Добавить();
                    ЗаполнитьЗначенияСвойств(НоваяСтрока,Результат);    
                    РеализТовары.Удалить(Результат);
                //КонецЦикла;
            ИначеЕсли ВидГруппы = "Масла" Тогда
                       НоваяСтрока = ДокМасла.Товары.Добавить();
                       ЗаполнитьЗначенияСвойств(НоваяСтрока,Результат);
                       РеализТовары.Удалить(Результат);
                  // КонецЦикла;
              КонецЕсли;
                                            
            //КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
1 KonstantinK90
 
22.09.16
10:37
ошибка : {Форма.ФормаNEW.Форма(1205)}: Ошибка при вызове метода контекста (Удалить)
                       РеализТовары.Удалить(Результат);
по причине:
Несоответствие типов (параметр номер '1')
2 Defender aka LINN
 
22.09.16
10:43
Из таблицы обычно удаляют строки. А не выборку
3 Михаил Козлов
 
22.09.16
10:44
В Удалить для ТЗ параметр - либо строка ТЗ, либо индекс, а не выборка из запрос.
4 KonstantinK90
 
22.09.16
10:44
ну так выборка это и есть строка один в один
5 ovrfox
 
22.09.16
10:46
примерно так:
мУдаления = ТЗМоя.НайтиСтроки(Новый Структура("Номенклатура", Результат.Номенклатура));
Для каждого стр из мУдаления Цикл
   ТЗМоя.Удалить(Стр);
КонецЦикла;
6 KonstantinK90
 
22.09.16
11:01
ну вот к примеру делаю вот
Пока Результат.Следующий() Цикл //Результат.Количество()  
            Отбор = Новый Структура("Номенклатура",Результат.Номенклатура);
            НайденНоменклатура = РеализТовары.НайтиСтроки(Отбор);
            Если НайденНоменклатура <>  Неопределено Тогда
                //Если нашли АКБ или Масла тогда удалим из документа и добавим в новый документ
             Если ВидГруппы = "АКБ" Тогда
                 НоваяСтрока = ДокАКБ.Товары.Добавить();
                 ЗаполнитьЗначенияСвойств(НоваяСтрока,Результат);    
                 Для Каждого пСтр Из НайденНоменклатура Цикл
                    СуммаАКБ = СуммаАКБ + пСтр.Сумма;
                    РеализТовары.Удалить(пСтр);
                КонецЦикла;
            ИначеЕсли ВидГруппы = "Масла" Тогда
                 НоваяСтрока = ДокМасла.Товары.Добавить();
                 ЗаполнитьЗначенияСвойств(НоваяСтрока,Результат);
  
                Для Каждого пСтр Из НайденНоменклатура Цикл
                    СуммаМасел = СуммаМасел + пСтр.Сумма;
                    РеализТовары.Удалить(пСтр);
                   КонецЦикла;
              КонецЕсли;
                                            
            КонецЕсли;
    КонецЦикла;
7 KonstantinK90
 
22.09.16
11:03
в отладчике смотрю Результат.Количество() = 505 строк а на выходе созданного документа получается 4 тыс. 100 слиним это как так может быть? 
8 KonstantinK90
 
22.09.16
11:07
????
9 KonstantinK90
 
22.09.16
11:07
где косяк
10 Numerus Mikhail
 
22.09.16
11:09
В запросе
11 KonstantinK90
 
22.09.16
11:12
где имено подскажите
12 KonstantinK90
 
22.09.16
11:15
помогите?
13 KonstantinK90
 
22.09.16
11:23
??????????
14 Альбатрос
 
22.09.16
11:25
(13) Выборка и строка тз - не одно и то же какбэ...
15 KonstantinK90
 
22.09.16
11:34
вообще задача состоит в том что бы перед запись проверить документ на наличие моих строк (по условию) и если они есть эти строки то их нужно удалить из документа и добавить в другой новый
16 KonstantinK90
 
22.09.16
11:36
который запрос я выше скинул в него я передаю таб часть документа перед записью и проверяю эту таб часть на наличие строк по условие если они есть мне нужно их удалить и добавить в новый документ
17 Альбатрос
 
22.09.16
11:37
(16) ну и чего не получается? как удалить тебе подсказали.
18 KonstantinK90
 
22.09.16
11:38
ну да спасибо!
19 KonstantinK90
 
22.09.16
11:39
а как правильно добавить в новый документ
20 Альбатрос
 
22.09.16
11:40
(19) Ну ты правильно добавляешь, если у тебя поля ТЧ и выборки совпадают.
21 KonstantinK90
 
22.09.16
11:41
да совпадают
22 KonstantinK90
 
22.09.16
11:41
а сам запрос правильный?