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

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Поиск одинаковых элементов справочника

v7: Поиск одинаковых элементов справочника
Я
   slimuz
 
20.07.18 - 08:37
Добрый день.
Подскажите как сравнить коды одного справочника для вывода в отчет одинаковых кодов (дубли)?
 
 
   1Сергей
 
1 - 20.07.18 - 08:43
вариантов куча. начиная от перебора и заканчивая покупкой готового решения на нимфостарте
   Мандалай
 
2 - 20.07.18 - 08:46
А запросом получить и сгруппировать по коду?
Или 77 так не умеет?
   1Сергей
 
3 - 20.07.18 - 08:47
(2) Умеет, вроде.
   slimuz
 
4 - 20.07.18 - 08:56
(2) Запросом, но мне нужно чтоб код был урезан до 8 символов (Формат(код, "С8") перед сравнением
   Ёпрст
 
5 - 20.07.18 - 09:11
(0)

select * from $Справочник.Нужный
where left(code,8) in (select left(code,8) from $Справочник.Нужный group by left(code,8) having count(*)>2)
   Djelf
 
6 - 20.07.18 - 21:10
А... ерунда... попробуйте
    ТекстЗапроса="
    |SELECT
    |    id [Номенклатура $Справочник.Номенклатура]
    |    ,code
    |    ,code8
    |    ,count
    |FROM (  SELECT
    |    id
    |    ,code
    |    ,substr(code,1,8) as code8
    |    ,count(*) OVER (PARTITION BY substr(code,1,8)) as count
    |FROM Справочник_Номенклатура
    |)
    |";
    База=СоздатьОбъект("SQLiteBase");
    База.Открыть(":memory:");
    Запрос=База.НовыйЗапрос();
    итДанные=СоздатьОбъект("ИндексированнаяТаблица");
    Запрос.ВыполнитьЗапрос(ТекстЗапроса,итДанные);


   Djelf
 
7 - 20.07.18 - 21:13
Зачем нужен OVER и PARTITION я понимаю, но как то не очень применил. Эта ситуация применима.
   Djelf
 
8 - 20.07.18 - 21:14
Решение в (5) будет тормозить жестоко.
   Djelf
 
9 - 20.07.18 - 21:23
(0) Если нет понимания зачем так и почему, это лучше делать перебором.
Возможно и после понимания "будет не быстрее", это зависит от конкретной ситуации.
   Злопчинский
 
10 - 20.07.18 - 23:46
 
 Рекламное место пустует

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