|
Поиск схожих документов по товарам | ☑ | ||
---|---|---|---|---|
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) мегахит! спасибо, работает!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |