Имя: Пароль:
1C
1С v8
Как удалить повторяющиеся значения из колонки в таблице значений
,
0 curys
 
16.11.11
12:40
Доброе время суток.

есть 2 колонки позиция и адрес
подскажите как удалить повторяющиеся значения из колонки адрес не трогая колонку позиция, причем в колонке адрес удаляется второе значение, а не первое и все последующие элементы смещаются на позицию вверх
1 izekia
 
16.11.11
12:41
свернуть?
2 Starhan
 
16.11.11
12:43
Нельзя так как ТС хочет удалить только значение в одной колонке. Оставив прежнее количество строк.

Я вот только не пойму чаво он спрашивает.
Как удалить значение в строке в одной из колонок или ему алгоритм поиска нарисовать.
3 izekia
 
16.11.11
12:44
(2) выгрузить-свернуть-загрузить
4 Starhan
 
16.11.11
12:47
вообщем создаешь массив.
Начинаешь обходить ТЧ (или ТЗ) неважно.
Сравниваешь есть ли адресс в твоем  массиве. Если нет добавляешь его в массив. Если есть очищаешь колонку с дрессом в строке.

(3) Представь табилчку

Поз1 Адрес1
Поз2 Адрес1
Поз3 Адрес2

Я телепатировал что в итоге автору нужна во такая табилчка

Поз1 Адрес1
Поз2 Пусто
Поз3 Адрес2
5 Reset
 
16.11.11
12:48
(1) (3) Вторая колонка - адрес. Как ты ее собрался сворачивать? Будет потеряны значения.
6 Reset
 
16.11.11
12:49
:) или позиция.
7 aka AMIGO
 
16.11.11
12:49
выгрузить во вторую тз
в неё добавить колонку "Кол","Число", заполнить значением 1
свернуть вторую ("Адрес","Кол")
перебирать вторую, если Кол>2 найти в первой, удалять со второй
наслаждаться
8 izekia
 
16.11.11
12:50
(4) "причем в колонке адрес удаляется второе значение, а не первое И ВСЕ ПОСЛЕДУЮЩИЕ ЭЛЕМЕНТЫ СМЕЩАЮТСЯ НА ПОЗИЦИЮ ВВЕРХ"
9 aka AMIGO
 
16.11.11
12:50
* Кол>2 = Кол>1, извините..
10 Reset
 
16.11.11
12:51
Ну то есть это таки свертка, но не методом, а своим алгоритмом
+(5)
11 Reset
 
16.11.11
12:51
(10) "не методом свернуть()"
12 Starhan
 
16.11.11
12:52
(8)
"из колонки адрес не трогая колонку позиция"
"а не первое и все последующие элементы смещаются на позицию вверх"

Согласен, на лицо - противоречие в вопросе.
13 Starhan
 
16.11.11
12:53
Или можно расценить как все адресса снизу должны поднятсья на 1 строчку вверх
14 aka AMIGO
 
16.11.11
12:54
елкины зеленые.. они и так поднимутся на 1 вверх при удалении строки..
или отсортировать по Адресу..
15 izekia
 
16.11.11
12:56
(5) пля, без кода не обойдемся:
времТз = тз.СкопироватьКолонки("Адрес");
времТз.ЗагрузитьКолонку(тз.ВыгрузитьКолонку("Адрес"), "Адрес");
времТз.Свернуть("Адрес");
тз.ЗаполнитьЗначения(Неопределено, "Адрес");
тз.ЗагрузитьКолонку(времТз.ВыгрузитьКолонку("Адрес"), "Адрес");

в последней строчке не совсем уверен, вроде должно все ок быть, в крайнем случае в цикле заполнить
16 curys
 
16.11.11
12:56
Вот исходная таблица:
1    "v8.1c.ru"
2    "v8.1c.ru"
3    "v8.1c.ru"
4    "v8.1c.ru"
5    "v8.1c.ru"
6    "v8.1c.ru"
7    "v8.1c.ru"
8    "v8.1c.ru"
9    "games.1c.ru"
10    "v8.1c.ru"
11    "v8.1c.ru"
12    "v8.1c.ru"
13    "1c-usoft.ru"
14    "www.1cbit.ru"
15    "www.1ab.ru"
16    "www.gigansk.ru"
17    "www.1c-victory.ru"
18    "job.sarbc.ru"

Вот должно получится так:
1    "v8.1c.ru"
2    "games.1c.ru"
3    "1c-usoft.ru"
4    "www.1cbit.ru"
5    "www.1ab.ru"
6    "www.gigansk.ru"
7    "www.1c-victory.ru"
8    "job.sarbc.ru"
17 izekia
 
16.11.11
12:58
(16) зачем тебе тогда позиция?
предопределенного НомерСтроки вполне хватит
18 Starhan
 
16.11.11
12:59
Так бы и сказал что позиция - номер строки, и что свернуть неполучается?
19 izekia
 
16.11.11
13:01
(16) смотри (15) в общем, только еще хвост почистить не забудь
20 Sintez123
 
16.11.11
13:18
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Линк");

... тут ТЗ заполняется ...

ТЗ.Свернуть("Линк");
21 izekia
 
16.11.11
13:42
(20) что времТз.ЗагрузитьКолонку(тз.ВыгрузитьКолонку("Адрес"), "Адрес");
не осилил?
22 curys
 
16.11.11
13:53
Всем спасибо за помощь=), исходя из всех примеров сделал по другому:
вот код:

   МассивПроверки = Новый Массив;
   МассивСтрокКУдалению = Новый Массив;
   Для Каждого СтрокаТаблицы Из ТаблицаПар Цикл
       Если МассивПроверки.Найти(СтрокаТаблицы.Адрес) <> Неопределено Тогда
           МассивСтрокКУдалению.Добавить(СтрокаТаблицы);
       Иначе
           МассивПроверки.Добавить(СтрокаТаблицы.Адрес);
       КонецЕсли;
   КонецЦикла;
   
   Для Каждого СтрокаКУдалению Из МассивСтрокКУдалению Цикл
       ТаблицаПар.Удалить(СтрокаКУдалению);
   КонецЦикла;
   
   НомерД = 0;
   Для Каждого СтрокаТаблицы Из ТаблицаПар Цикл
       НомерД = НомерД + 1;
       СтрокаТаблицы.Позиция = НомерД;    
   КонецЦикла;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн