Имя: Пароль:
1C
1С v8
Найти похожие документы в базе с учетом ТЧ
0 Garykom
 
гуру
12.01.23
13:15
Есть задачка при создании документов проверять а нет ли уже ранее загруженных (похожих) в базе.
Никакого уникального индекса/кода к сожалению нет.

Допусти ищем по реквизитам шапки:
Организация, Партнер, ДатаВходящегоДокумента, НомерВходящегоДокумента

Так же надо учитывать в ТЧ Расходы совпадение по строкам для реквизитов Содержание и Сумма

Каким образом лучше то сделать?
1 p-soft
 
12.01.23
13:16
(0) оптимально - индекс сформировать. остальное будет криво и медленно
2 Garykom
 
гуру
12.01.23
13:17
(1) Не хотелось бы
3 p-soft
 
12.01.23
13:17
(1) причем, индекс можно формировать отдельно от документа, например, выделив под него рс
4 p-soft
 
12.01.23
13:17
(3) в расширении..
5 p-soft
 
12.01.23
13:18
(2) почему не хотелось бы?
6 Garykom
 
гуру
12.01.23
13:18
(3) Хорошо как сформировать этот индекс-хеш?
7 Ryzeman
 
12.01.23
13:18
(0) выбрать по реквизитам шапки и свернуть где количество больше 1. Потом сравнить в цикле либо запросом
8 Ryzeman
 
12.01.23
13:19
(7) а, хотя не, тебе же надо при создании это делать, а не разово
9 p-soft
 
12.01.23
13:19
(6) зависит от данных. можно тупо хеш по строковой части формировать. если речь идет про строки - предварительно упорядочив их
10 Garykom
 
гуру
12.01.23
13:19
(7) ТЧ надо учитывать
11 Ryzeman
 
12.01.23
13:19
Голосую за контроль уникальности по доп реквизиту
12 p-soft
 
12.01.23
13:20
(9) или по уиду
13 p-soft
 
12.01.23
13:20
(12) т.к. наименования могут и поменять
14 Kassern
 
12.01.23
13:20
(6) Рядом же тема была про ТЧ справочника/документа)
15 p-soft
 
12.01.23
13:21
я просто это в клюшках решал на массе, других нормальных вариантов нет
16 Kassern
 
12.01.23
13:21
(0) Определите для вас ключевые поля, по которым вы определяете "схожесть", пол дела уже сделаете)
17 PLUT
 
12.01.23
13:22
(6) (10) какой-нибудь MD5 для строки "Организация+ Партнер +ДатаВходящегоДокумента +НомерВходящегоДокумента + ТЧ расходы

сцылочные типы по GUID, содержание и сумму из ТЧ выгрузить в массивы с сортировкой и тоже в строку

щас выяснится что содержание в произвольном виде и нужно вхожения искать :)
18 Garykom
 
гуру
12.01.23
13:23
(16) Это уже сделано
Загвоздка отбора похожих с учетом что не только реквизиты шапки но и ТЧ
19 Kassern
 
12.01.23
13:23
(14) Вот эта тема сравнение ТЧ
20 Ryzeman
 
12.01.23
13:23
(17) >>щас выяснится что содержание в произвольном виде и нужно вхожения искать :)
ну вот это как раз совсем не сложно, упорядочиваешь те же GUID
Но я против что бы каждый раз всё это на лету считать. При создании у новых записываешь это всё допреквизитом (или реквизитом), а при проверке нового - тебе надо вычислить этот хэш всего лишь 1 раз
21 Kassern
 
12.01.23
13:24
(18) Значит не сделано, раз вы не решили, что для вас значит со схожими ТЧ)
22 Kassern
 
12.01.23
13:24
(18) Почитайте (19) там в конце есть варианты реализации
23 PLUT
 
12.01.23
13:25
(20) содержание баба маня может ручками с ашипками написать. но даже ежу понятно, что это одно и тоже

"гусь лапчатый" и "лапчатый гусъ"
24 Kassern
 
12.01.23
13:26
(23) А это уже совсем другая задача и куда сложнее)
25 Garykom
 
гуру
12.01.23
13:26
(21) >со схожими ТЧ
1. Количество строк совпадает
2. Порядок строк не имеет значения
3. Колонки Содержание (строка) и Сумма (число) совпадают
26 Ryzeman
 
12.01.23
13:26
(23) у него содержание ТЧ - ссылки и числа, насколько я понял.
Если когда он пишет про "похожий" - это текст, то сюда только нейросеть прикручивать разве что :-D
27 Kassern
 
12.01.23
13:27
(25) Берете и создаете строку, которая включает в себя все 3 пункта и хешируете. А дальше уже по этому хешу и сравниваете
28 Garykom
 
гуру
12.01.23
13:27
(26) строка и число

для строк нечеткого поиска не надо
29 Garykom
 
гуру
12.01.23
13:27
(27) В запросе как?
30 PLUT
 
12.01.23
13:27
(25) ну тады прокатит такая магия для >Колонки Содержание (строка) и Сумма (число) совпадают

содержание и сумму из ТЧ выгрузить в массивы с сортировкой и тоже в строку и вычислить хэш
31 Garykom
 
гуру
12.01.23
13:27
(29)+ без предварительной функции хеширования кодом
32 Kassern
 
12.01.23
13:28
(29) Легко!
Выбрать МойРС.Док Из РегистрыСведений.МойРС ГДЕ МойРС.ХешСумма=&ХешСумма =)
33 PLUT
 
12.01.23
13:28
(31) микросервис на GO!
34 Ryzeman
 
12.01.23
13:28
(31) С этим то в чём проблема?...
35 vde69
 
12.01.23
13:29
(0) учитывая, что параметры поиска строковые и числовые - в индекс не попадешь.

у меня давно работает система группировки аналитик

1. делаем справочник "аналитика", у него ТЧ с ПВХ тех характеристик которые надо искать
2. добавляем реквизит в объекты поиска (в твоем случае в строки ТЧ документа), или можно сделать РС
3. при необходимости проверки берем из документа набор характеристик и ищем по ним элементы справочника "аналитика", при необходимости - создаем.
4. далее простой запрос....
36 Kassern
 
12.01.23
13:29
(29) Если вам разово надо, то проще в цикле обойти
37 Kassern
 
12.01.23
13:30
Если лень РС создавать, то можно типовой использовать, например ДополнительныеСведения.
38 PLUT
 
12.01.23
13:30
(35) в ERP у тебя идею с3.14тырили:)
39 Garykom
 
гуру
12.01.23
13:31
(36) угу
запросом отбираю документы по реквизитам шапки
далее цикл по отобранным документам для сравнения ТЧ
40 vde69
 
12.01.23
13:31
(38) я пользуюсь уже 7 лет :)
41 Garykom
 
гуру
12.01.23
13:32
(39)+ но хотел все одним запросом провернуть, не получается
42 Kassern
 
12.01.23
13:33
(39) Можете еще по количеству строк и Сумме отобрать. Гораздо меньше придется обходить в цикле
43 vde69
 
12.01.23
13:33
(41) почитай про "критерии отбора" может он подойдет
44 Kassern
 
12.01.23
13:33
Наверное можно и все остальное пихнуть, но зачем, если разово надо. А если часто и на постоянке, то проще через хеш. Куда быстрее будет.
45 Garykom
 
гуру
12.01.23
13:35
(42) Можно, но не обязательно дата и номер дают хорошее ограничение
46 mistеr
 
12.01.23
13:39
Чувствую знакомый запах... попытки решить орг. проьлему тех. средствами.
47 Kassern
 
12.01.23
13:39
(45) Как вариант - создать временную таблицу с ключевыми полями для поиска в ТЧ. И уже с ней соединять таблицу строк документа с отбором по реквизитам шапки.
48 Garykom
 
гуру
12.01.23
13:42
(46) Не совсем.
Классическая ситуация когда по просьбе клиента вручную в 1С создают приход услуг чтобы создать заявку на оплату и побыстрей оплатить.
А массовая загрузка документов прихода услуг из другой системы будет позже.
И будет включать и созданный вручную
49 Garykom
 
гуру
12.01.23
13:42
(48) *по просьбе поставщика
50 Kassern
 
12.01.23
13:45
(49) Есть номер входящего документа и дата входящего документа. По ним и синхронизируйте. То что введено вручную, должно иметь эту связку
51 Garykom
 
гуру
12.01.23
13:47
(50) Недостаточно
По одному поставщику в один день может быть несколько документов с разными содержимым в ТЧ
52 Garykom
 
гуру
12.01.23
13:48
(51)+ и оба "Б\Н"
53 Kassern
 
12.01.23
13:54
(51) А как вы банк сводите?) Если несколько документов за один день, то у каждого будет свой уникальный номер поставщика.
54 Kassern
 
12.01.23
13:54
Отбор будет по поставщику,дате,номеру
55 PLUT
 
12.01.23
14:00
(52) ну и качестве прикола поставщик будет присылать документы с разным содержимым в ТЧ (т.к. концепция поменялась, три документа объединили в два, один перенесли на другой период и все "б/н"
56 Garykom
 
гуру
12.01.23
14:10
57 Garykom
 
гуру
12.01.23
14:10
(53) Это не банк, а документы от поставщиков услуг
58 Garykom
 
гуру
12.01.23
14:11
(55) Если такая ситуация выявится то критерии поиска будут исправлены
59 mistеr
 
12.01.23
14:48
(48) Если фейковый приход услуг нужен только для оплаты (что само по себе странно пахнет), то после создания оплаты помечай его на удаление. Массовая загрузка загрузит его и проведет, все довольны.
60 Garykom
 
гуру
12.01.23
15:14
(59) Он не фейковый а вручную созданный вместо загрузки
Еще могут быть сбои при загрузке, например дважды тоже самое или произошел вылет при загрузке и недогрузилось
Повторно запускают надо чтобы нашел что уже создано и не делал дубли
61 PLUT
 
12.01.23
15:19
(60) а зачем вручную создавать? для резервов товаров штоле? виртуальный приход?
62 mistеr
 
12.01.23
15:20
(60) Как все запущено.

Ну если повторные загрузки это штатная ситуация, обеспечь какой-то ключ для сопоставления. Вот не верю, что поставщик присылает *документы* без идентифицирующих реквизитов.
63 PLUT
 
12.01.23
15:20
ну и вручную созданное содержание в ТЧ с большой вероятностью может не совпасть с содержанием от поставщика (регистр, пробелы, ачепятки)
64 Garykom
 
гуру
12.01.23
15:22
(63) может
но это уже другая задачка
65 Garykom
 
гуру
12.01.23
15:23
(62) до этого этапа еще не дошли
даже поиск дублей мое предложение, в ТЗ нет
66 PLUT
 
12.01.23
15:23
(62) для оплаты же достаточно заявку на расходование ДС. взаимозачетами потом можно сальдо с бульдой свести между реальным поступлением и оплатой
67 PLUT
 
12.01.23
15:24
(65) > до этого этапа еще не дошли

- жена! неси тазик...

- концепция поменялась, я обо.срался
68 Garykom
 
гуру
12.01.23
15:25
(67) это будни нового внедрения и работы на проектах
69 Garykom
 
гуру
12.01.23
15:29
В данном конкретном случае интересовало как только одним запросом найти "похожие" с учетом ТЧ документы

Ну там отобрать доки по шапке и соединить каким то местом с отобранными строками ТЧ
70 PLUT
 
12.01.23
15:33
(60) а количество документов какое при загрузке?

в таком случае нужно через промежуточную форму грузить - оператор глазками смотрит расхождения/коллизии и ручками подбирает нужный вручной документ в случае непонятной ситуёвины

ну т.е. для 100 документов при загрузке 10 сопоставилось, с остальными что делать? считать, что новые от поставщика? ну и сбоку список вручных документов несопоставленных должен болтаться, чтобы оператор баба Шура призадумалась и постаралась сопоставить

существо разумное должно быть разумнее автоматической загрузки
71 Garykom
 
гуру
12.01.23
16:09
(70) нафик-нафик сопоставление при загрузке еще делать
достаточно вывода в отчет/лог и отмены загрузки полностью