|   |   | 
| 
 | Поиск схожих документов по товарам | ☑ | ||
|---|---|---|---|---|
| 0
    
        odines 17.08.16✎ 14:14 | 
        Есть документ, в нем тч Товары. Как найти документы, которые схожи по товарам на 80%? т.е. 80% товаров в 1ом документе, есть в 80% 2го документа...может запросом как-то можно...почитал про хэш - ясности не прибавилось.     | |||
| 1
    
        В тылу врага 17.08.16✎ 14:16 | 
        То есть пересечение множеств товаров должно быть не менее 80% от объединения?     | |||
| 2
    
        mkalimulin 17.08.16✎ 14:19 | 
        Когда-то делал так:
 тз=текзаказ.спецификация.выгрузить(,"товар,количество"); тз.Колонки.Добавить("связь1"); тз.ЗаполнитьЗначения(1,"связь1"); тз.Колонки.Добавить("связь2"); тз.ЗаполнитьЗначения(0,"связь2"); выб=документы.ЗаказПокупателя.Выбрать(датаначала); пока выб.Следующий() цикл если (выб.Спецификация.Количество()=0) или (тз.количество()=0) тогда доля=0; иначе т1=тз.скопировать(); т2=выб.Спецификация.Выгрузить(,"Товар,Количество"); для каждого стр из т2 цикл нстр=т1.добавить(); нстр.товар=стр.товар; нстр.количество=стр.количество; нстр.связь1=0; нстр.связь2=1; конеццикла; сч1=0; сч2=0; сч3=0; т1.свернуть("товар,количество","связь1,связь2"); для каждого стр из т1 цикл если (стр.связь1>0) и (стр.связь2=0) тогда сч1=сч1+1; иначеесли (стр.связь2>0) и (стр.связь1=0) тогда сч2=сч2+1; иначе сч3=сч3+1; конецесли; конеццикла; доля=мин(сч3/(сч3+сч1),сч3/(сч3+сч2)); конецесли; если доля>=ПроцентСовпадения/100 тогда рез.добавить(выб.Ссылка); конецесли; конеццикла; | |||
| 3
    
        odines 17.08.16✎ 14:19 | 
        (1) вроде как, ну допустим
 1 док: груша яблоко вишня 2 док: груша яблоко арбуз дыня 3 док груша дыня яблоко вишня 1 и 3 - похожи, 1 и 2 - тоже но только по 2м позициям... т.е. задача найти схожие тч по номенклатуре | |||
| 4
    
        odines 17.08.16✎ 14:23 | 
        (2) ты вроде как берешь спеку и ищешь ее в заказах, а мне надо между заказами поискать - эталона нет как такового...это и ломает мозг...     | |||
| 5
    
        RomanYS 17.08.16✎ 14:27 | 
        (0) соедини ТЧ саму с собой по номенклатура = номенклатура и ссылка > ссылка, а потом группируй и считай строки.     | |||
| 6
    
        odines 17.08.16✎ 14:28 | 
        (1) или проще - найти все доки, у которых по 3 позиции совпадают, если в доке меньше 3х - их не рассматриваем...     | |||
| 7
    
        odines 17.08.16✎ 14:28 | 
        (5) вот да, наверно поможет, попробую...     | |||
| 8
    
        sergeev-ag-1977 17.08.16✎ 14:34 | 
        (3) считай ковариацию ...     | |||
| 9
    
        odines 17.08.16✎ 14:38 | 
        (5) чет не то?
 ВЫБРАТЬ ЗаказТовары.Номенклатура КАК Номенклатура, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТовары.Ссылка) КАК Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТовары1.Ссылка) КАК Ссылка1 ИЗ Документ.Заказ.Товары КАК ЗаказТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Заказ.Товары КАК ЗаказТовары1 ПО ЗаказТовары.Номенклатура = ЗаказТовары1.Номенклатура И ЗаказТовары.Ссылка > ЗаказТовары1.Ссылка СГРУППИРОВАТЬ ПО ЗаказТовары.Номенклатура УПОРЯДОЧИТЬ ПО Номенклатура | |||
| 10
    
        sergeev-ag-1977 17.08.16✎ 14:45 | 
        Давай начнем с постановки - тогда и понятно будет что делать.
 80% товара что бы совпали - это как ? 1) Товар1 100 шт 100 руб. Товар2 1 шт 1 руб. 2) Товар1 1 шт 1 руб. Товар3 100 шт 100 руб. - на сколько %% они совпадают ? А если так: 1) Товар1 100 шт 100 руб. Товар2 1 шт 1 руб. 2) Товар1 100 шт 100 руб. Товар3 1 шт 100 000 руб. Тут как ? Что будет основой ковариации - ЕИ или сумма ? | |||
| 11
    
        sergeev-ag-1977 17.08.16✎ 14:46 | 
        А подсчет ковариации простой - полное соединение и отношение совпадений к общей части заказа. Как слева, так и справа.     | |||
| 12
    
        sergeev-ag-1977 17.08.16✎ 14:48 | 
        Перемножаем левую и правую.     | |||
| 13
    
        odines 17.08.16✎ 14:50 | 
        (10) блин эталон у меня все таки есть, снимается задача, всем спасибо     | |||
| 14
    
        odines 17.08.16✎ 14:51 | 
        в (2) как раз то что нужно     | |||
| 15
    
        В тылу врага 17.08.16✎ 14:59 | 
        ВЫБРАТЬ РАЗЛИЧНЫЕ
 ЗаказПокупателяТовары.Ссылка КАК Ссылка, ЗаказПокупателяТовары.Номенклатура ПОМЕСТИТЬ ТЗ ИЗ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары ГДЕ ЗаказПокупателяТовары.Ссылка.Дата >= &Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТЗ.Ссылка КАК Ссылка, КОЛИЧЕСТВО(ТЗ.Номенклатура) КАК Количество ПОМЕСТИТЬ ТЗСвернуто ИЗ ТЗ КАК ТЗ СГРУППИРОВАТЬ ПО ТЗ.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТЗ1.Ссылка КАК Ссылка1, ТЗ2.Ссылка КАК Ссылка2 ИЗ ТЗ КАК ТЗ1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ2 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗСвернуто КАК ТЗСвернуто2 ПО ТЗ2.Ссылка = ТЗСвернуто2.Ссылка ПО ТЗ1.Ссылка > ТЗ2.Ссылка И ТЗ1.Номенклатура = ТЗ2.Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗСвернуто КАК ТЗСвернуто1 ПО ТЗ1.Ссылка = ТЗСвернуто1.Ссылка СГРУППИРОВАТЬ ПО ТЗ1.Ссылка, ТЗ2.Ссылка, ТЗСвернуто1.Количество, ТЗСвернуто2.Количество ИМЕЮЩИЕ КОЛИЧЕСТВО(*) >= 0.8 * (ТЗСвернуто1.Количество + ТЗСвернуто2.Количество - КОЛИЧЕСТВО(*)) | |||
| 16
    
        odines 17.08.16✎ 15:11 | 
        (15) мегахит! спасибо, работает!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |