Вход | Регистрация


1С:Предприятие ::

Метки: 

Ошибка при удалении строки табличной части

Я
   LeoKeyn
 
30.03.18 - 09:37
Получаю очень интересную ошибку при удалении строки табличной части.
Когда действие происходит впервые все удаляется нормально, делаешь
действие второй раз на этой же форме вылетает 

{Справочник.ФизическиеЛица.Форма.ФормаЭлемента1.Форма(284)}: Ошибка при вызове метода контекста (Удалить)
        Объект.КонтактнаяИнформация.Удалить(Элементы.КонтактнаяИнформация.ТекущаяСтрока);
по причине:
Недопустимое значение параметра (параметр номер '1')

Код процедуры на всякий случай приведу весь:

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

Подскажите, пожалуйста, что за ерунда:-)
 
 
   igorPetrov
 
1 - 30.03.18 - 09:44
(0) Что не понятно из  текста ошибки?
   FIXXXL
 
2 - 30.03.18 - 09:45
(0) ставь красную точку на строку
Объект.КонтактнаяИнформация.Удалить(Элементы.КонтактнаяИнформация.ТекущаяСтрока);
и смотри, что там в Элементы.КонтактнаяИнформация.ТекущаяСтрока
   hhhh
 
3 - 30.03.18 - 09:45
(0) в параметре должна быть строка
   LeoKeyn
 
4 - 30.03.18 - 09:54
(3) Там и так строка 
(2) Ставил, там номер строки-строка
То есть все правильно по идее. Первый раз отрабатывает и удаляет. делаешь добавление второй раз - ошибка.
   FIXXXL
 
5 - 30.03.18 - 10:07
(4) в первый и второй раз одно и то же в параметре?
   FIXXXL
 
6 - 30.03.18 - 10:11
ДанныеФормыКоллекция (FormDataCollection)
Удалить (Delete)
Вариант синтаксиса: По индексу

Синтаксис:

Удалить(<Индекс>)
Параметры:

<Индекс> (обязательный)

Тип: Число.
Индекс элемента в коллекции.

ТаблицаФормы (FormTable)
ТекущаяСтрока (CurrentRow)
Использование:

Чтение и запись.
Описание:

Тип: Произвольный.
Идентификатор текущей строки таблицы.

нужен индекс, ты суешь идентификатор
   FIXXXL
 
7 - 30.03.18 - 10:12
ты по идентификатору одной коллекции пытаешься удалять данные в другой коллекции
один разик видимо прокатывает :)
   hhhh
 
8 - 30.03.18 - 10:20
(4) там не строка, а идентификатор строки. Если ничего не делал, то идентификатор равен индексу, всё в порядке. Но если что-то делал с тч: удалял строки, менял их местами, то уже идентификатор другой.
   LeoKeyn
 
9 - 30.03.18 - 10:24
(7) (8) Хорошо, а как узнать идентификатор текущей строки?)
   Масянька
 
10 - 30.03.18 - 10:26
В экзамена на спеца уже давно пора сделать задачу на удаление строки из таблицы :(
 
 Рекламное место пустует
   LeoKeyn
 
11 - 30.03.18 - 10:28
(10) Так вот просветите не сдававшего еще:-)
   LeoKeyn
 
12 - 30.03.18 - 10:31
Причем все делаю то по инструкции :-)

http://v8.1c.ru/metod/faq2/answer.jsp?id=580
   Масянька
 
13 - 30.03.18 - 10:31
(11) А ты возьми на листочке нарисуй :)-
   LeoKeyn
 
14 - 30.03.18 - 10:33
(13) рисовал уже... Издеваться над только познающими не культурно
   Масянька
 
15 - 30.03.18 - 10:36
(14) Я не издеваюсь. Я пытаюсь толкнуть в правильном направлении. Учение на своих ошибках дает результат.
Значит плохо рисовал...
У тебя таблица в 10 строк. Ты удалил 6 строку. Что изменилось?
   Малыш Джон
 
16 - 30.03.18 - 10:38
(15) теперь в таблице нет 6-ой строки? :)
   LeoKeyn
 
17 - 30.03.18 - 10:41
(15) (16) так удаляю я не по номе 2, а беру строку из текущей позиции Элементы.КонтактнаяИнформация.ТекущаяСтрока
   LeoKeyn
 
18 - 30.03.18 - 10:41
(17) А следовательно в ней уже лежит правильный индекс(проверил отладчиком)
   Ц_У
 
19 - 30.03.18 - 10:46
Выгрузи КИ в таблицу, очисти КИ, заполни из таблицы по условию
   Масянька
 
20 - 30.03.18 - 10:55
(16) :(
(18) Это при открытии (или заполнении (что там у тебя)) сразу (!!!) правильный индекс. А после удаления "текущей строки" - что изменилось?
   Малыш Джон
 
21 - 30.03.18 - 10:56
(18) Твоя ошибка в том, что тебе тупо лень погуглить.
Один только поиск по форуму - уже кучу информации предлагает.

https://www.forum.mista.ru/topic.php?id=728713
   dchumak
 
22 - 30.03.18 - 11:08
1. Создаешь массив.
2. Перебираешь строки, которые подходят под условия добавляешь в массив.
3. Перебираешь массив, и делаешь удалить() передавая параметром строку массива.
Все.

А просто перебором удалять неправильно - при удалении строки таблица смещается, и не все строки могут быть удалены.
   DrZombi
 
23 - 30.03.18 - 11:10
(0) Могу предположить, что после удаления, у вас там значение "Неопределено", т.к. текущей строки нет :)
   DrZombi
 
24 - 30.03.18 - 11:12
+(0) Элементы.КонтактнаяИнформация.ТекущиеДанные
и
    Элементы.КонтактнаяИнформация.ТекущаяСтрока

Поместите лучше в переменные, и все же это разный способ доступа к данным, хотя ссылаются на одно и тоже :)
   hhhh
 
25 - 30.03.18 - 11:16
(23) нет, после удаления индекс будет 6, а идентификатор будет 7. В этом и проблема у автора.
   Масянька
 
26 - 30.03.18 - 11:19
(25) Садись! Отлично!
Только ТС понял почему? И в чем разница?
   hhhh
 
27 - 30.03.18 - 11:22
(26) я сам пока не понял.
а разница, что допустим там всего 6 строк, ва идентификатор допустим будет 20. Тогда ошибка будет.
   Масянька
 
28 - 30.03.18 - 11:23
(27) Блин... Мальвины на вас нет :)
   hhhh
 
29 - 30.03.18 - 11:28
если на опыте проверить. Создаем пять строк, тут же их удаляем, и потом опять создаем 5 строк. В отладчике смотрим: индексы 0,1,2,3,4, а идентификаторы строк: 5,6,7,8,9.
   FIXXXL
 
30 - 30.03.18 - 11:45
(29) идентификатор - это просто число на время работы формы
открыл - совпадает с индексом
удалил-добавил идентификатор+1
   LeoKeyn
 
31 - 30.03.18 - 12:14
Спасибо)



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует