Имя: Пароль:
1C
1С v8
НайтиСтроки и удаление строки из ТЗ
0 toypaul
 
гуру
18.06.13
13:36
Код очень примерно такой

Строки = ТЗ.НайтиСтроки()
ТЗ.Удалить(Строки[0])
Сообщить(Строки[1].Поле)

не "съедет" ли ссылка Строки[1] на соот-щую строку в ТЗ?
1 zak555
 
18.06.13
13:37
надо удалить определённые строки из ТЗ ?
2 acsent
 
18.06.13
13:37
строки - это массив
3 acsent
 
18.06.13
13:38
А вот строки[0] - уже непонятно что будет
4 toypaul
 
гуру
18.06.13
13:38
(1) надо да.
(2) да ладно :)
5 mikecool
 
18.06.13
13:39
(3) первая запись в массиве
6 toypaul
 
гуру
18.06.13
13:39
(3) меня строки[0] не интересует. туда уже не будет обращения. интересует не съедут ли другие ссылки из массива на оригинальные строки в ТЗ.
7 mikecool
 
18.06.13
13:39
(4) недавно же пробегало
ТЗ.Удалить(ТЗ.НайтиСтроки(отбор));
8 Лефмихалыч
 
18.06.13
13:40
(0) не съедет, т.к. ты удаляешь не эелмент массива из массива.
9 toypaul
 
гуру
18.06.13
13:40
(7) вопрос не в этом.
10 toypaul
 
гуру
18.06.13
13:41
(8) вот мне пытаются доказать, что съедет. чтобы не съехало у строки должен быть какой-то свой внутренний идентификатор, а не просто индекс в ТЗ.
11 mikecool
 
18.06.13
13:42
(10) а, вон о чем - съехать не должна, в нулевой записи массива будет пустая ссылка или неопределено(тут уточнить надоть)
12 toypaul
 
гуру
18.06.13
13:45
(11) мне пофиг до 0й строки в массиве. главное понять съедут след. ссылки на строки или нет.
13 mikecool
 
18.06.13
13:45
(12) нет
14 toypaul
 
гуру
18.06.13
13:45
(13) ну ОК :)
15 mikecool
 
18.06.13
13:46
(14) поверил? )))
16 Slon747
 
18.06.13
13:48
(12) а проверить?
17 toypaul
 
гуру
18.06.13
13:48
(15) поверил :)
(16) лень :)
18 Sereja
 
18.06.13
13:52
(7) Так работать не будет
19 toypaul
 
гуру
18.06.13
13:54
ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("ПростоЧисло");
   ТЗ.Колонки.Добавить("Поиск");
   
   Строка = ТЗ.Добавить();
   Строка.ПростоЧисло = 1;
   Строка.Поиск = 1;
   Строка = ТЗ.Добавить();
   Строка.ПростоЧисло = 2;
   Строка.Поиск = 1;
   Строка = ТЗ.Добавить();
   Строка.ПростоЧисло = 3;
   Строка.Поиск = 1;
   
   Строки = ТЗ.НайтиСтроки(Новый Структура("Поиск",1));
   ТЗ.Удалить(Строки[0]);
   Сообщить(Строки[1].ПростоЧисло);

выдает 2

то есть все ОК

Строка[0] содержит строку значений, к которой нельзя обратится. в отладчике пишет, что строка удалена.
20 Рэйв
 
18.06.13
13:59
(19) Строка[0] содержит не строку а ссылку на строку. Которую ты удалил.Поэтому и нет доступа, там получается битая ссылка
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший