Имя: Пароль:
1C
 
Универсальный метод поиска одинаковых значений в колонке тч документа?
,
0 Обфускация
 
04.07.18
08:57
Как проще и быстрее найти по тч документа дубли?
1 Mankubus
 
04.07.18
08:58
(0) добавить колонку. заполнить ее единицей.
Свернуть. там где больше единицы в новой колонке - дубли
2 Ненавижу 1С
 
гуру
04.07.18
08:58
1. можно запросом, например
2. можно выгрузить в ТЗ, добавить колонку, заполнить ее 1, свернуть суммируя по ней и смотреть где значения больше 1
3 Мимохожий Однако
 
04.07.18
08:58
Добавить колонку с единичкой , Свернуть по номенклатуре. Где больше единицы, там дубль
4 Обфускация
 
04.07.18
09:02
большой выбор, спасибо
5 Serg_1960
 
04.07.18
09:11
Если внимательно прочитать ТЗ ТС, то можно родить третий вариант - выгрузить колонку(!) ТЧ документа...
6 ASU_Diamond
 
04.07.18
09:13
(5) а если ещё внимательнее прочитать, то там не написано что дубль по значению в одной колонке.
7 ManyakRus
 
04.07.18
09:14
//возвращает Истина если есть задвоенные
Функция ЕстьЗадвоенныеТЧ(Знач ТЧ, Знач ИмяКолонки) Экспорт
    Ответ = Ложь;
    
    ТЗ = ТЧ.Выгрузить();
    ТЗ.Колонки.Добавить("КоличествоЗадвоенных", Новый ОписаниеТипов("Число"));
    ТЗ.ЗаполнитьЗначения(1, "КоличествоЗадвоенных");
    ТЗ.Свернуть(ИмяКолонки, "КоличествоЗадвоенных");
    Для каждого ТЗ1 из ТЗ Цикл
        Если ТЗ1.КоличествоЗадвоенных >1 Тогда
            Сообщить("Есть задвоенные строки " + ИмяКолонки + " !");
            Ответ = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Возврат Ответ;
КонецФункции
8 ASU_Diamond
 
04.07.18
09:15
(7) можно ещё предварительно отсортировать
9 Buster007
 
04.07.18
09:16
чтобы найти в колонке достаточно использовать НайтиСтроки
10 ASU_Diamond
 
04.07.18
09:21
(9) скорость какая будет?
11 Малыш Джон
 
04.07.18
09:21
(7) чтобы понять сам факт наличия дублей, не обязательно так заморачиваться, достаточно сравнить количество строк до свертки и после свертки.

КоличествоДо = Таблица.Количество();
Таблица.Свернуть();
КоличествоПосле = Таблица.Количество();
ЕстьДубли = (КоличествоДо>КОличествоПосле);
12 Малыш Джон
 
04.07.18
09:23
(9) а что найти-то? Отбор какой?
13 ASU_Diamond
 
04.07.18
09:30
(12) значение из сроки. Цикл по всем строкам.
14 Малыш Джон
 
04.07.18
09:40
(13) неоптимально) и сложно)
найтистроки() для каждой строки из ТЧ. К тому же: или перед проверкой очередного значения проверять, была ли уже такая проверка(а значит где-то хранить уже проверенные значения), или мириться с тем, что по задвоенным значениям поиск будет проходит дважды, трижды и т.д.
15 ASU_Diamond
 
04.07.18
09:43
(14) очень неоптимально
16 Адинэснег
 
04.07.18
09:54
(0) Добавь колонку счетчик с единичками

Таблица.Колонки.Добавить("СчетчикСтрок");
    Таблица.ЗаполнитьЗначения(1,"СчетчикСтрок");

потом запросом

ИМЕЮЩИЕ
    СУММА(Таблица.СчетчикСтрок) > 1

Если Результат запроса не пустой - дубли
17 Адинэснег
 
04.07.18
09:57
хотя хрень с колонкой в таблице, сразу в запросе выбери поле счетчик и сгруппируй
18 Serg_1960
 
04.07.18
10:03
(9) Учитывая, что требуется поиск значений в колонке(ед.ч.) - можно использовать .Найти(), а не .НайтиСтроки().
19 Serg_1960
 
04.07.18
10:08
(16) "ИМЕЮЩИЕ КОЛИЧЕСТВО(Таблица.ИмяКолонки) <> КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таблица.Имяколонки)

(шутка)
20 dezss
 
04.07.18
10:11
ОФФ:
э...в топе все темы от нашего ТС...я не понял, что происходит? О_о
21 dezss
 
04.07.18
10:14
(20) тьфу..ошибся...фильтр выскочил :)
22 Serg_1960
 
04.07.18
10:16
(20) У ТС обострение синдрома дефицита внимания и гиперактивности :)))
23 Buster007
 
04.07.18
12:18
(10) побыстрее, чем добавить в таблицу колонку, заполнить, свернуть, проверить количество
(18) как определить, что есть дубли с использованием функции Найти()?
24 Вафель
 
04.07.18
12:20
Свертыванием не удобно, ибо теряется инфа о номерах строк
25 Малыш Джон
 
04.07.18
12:22
(24) а зачем она?
26 Вафель
 
04.07.18
12:28
(25) а пользователю что говорить. У вас в 10 000 строк есть дубли. е..сь с ними сами
27 ASU_Diamond
 
04.07.18
12:34
(26) а если это нужно, то дальше через НайтиСтроки()
28 SleepyHead
 
гуру
04.07.18
12:34
(0) Точнее формулируйте техническое задание.
29 Обфускация
 
04.07.18
12:35
да все сделано уже, всем спасибо
30 ASU_Diamond
 
04.07.18
12:35
(23) 1. Может проверишь?
100 раз запустить поиск по 100 срокам
или 1 раз заполнить значение в 100 строках (это делается без перебора строк) и свернуть?
31 Малыш Джон
 
04.07.18
13:15
(26) а зачем пользователю что-то говорить? может это удаление дублей из документа?
32 Buster007
 
04.07.18
13:23
(30) я предполагал поиск одной позиции в колонке, а не всех позиций
33 Tonik992
 
04.07.18
13:25
Можно внешнюю компоненту написать. Передать туда 2 ТЧ и пусть оно там сравнивает.
34 ASU_Diamond
 
04.07.18
13:27
(32) ну будет не 100 раз поиск запускаться, а хотя бы даже 20. Всё равно работать дольше будет, чем 1 раз свернуть.
35 Вафель
 
04.07.18
13:51
(31) пример документа, в котором нужно удалять (не сворачивать) дубли
36 Малыш Джон
 
04.07.18
13:53
(35) "Фиксация событий с камер наблюдения"
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший