|
Алгоритм поиска совпадающих договоров | ☑ | ||
---|---|---|---|---|
0
Oz11
29.01.12
✎
16:19
|
Ребята, помогите идеями. есть задача, при записи договора контрагента проверять его на совпадение по некоторым свойствам с уже записанными договорами и не записывать в случае нахождения хотя бы одного договора с такими свойствами. конфа УТП. у договоров есть свойства, которые можно создавать через ПланВидовХарактеристик и писать в регистр сведений. был дописан регистр сведений в котором можно настроить какие свойства необходимо проверять при записи договора. (причем все разбито по группам, то есть можно настроить условия проверки, например, так: ((Свойство1 И Свойство2) ИЛИ Свойство3). Свойство1 и Свойство2 относятся к первой группе, СВойство3 - к второй. выходит что внутри групп свойства проверяются через И, группы между собой через ИЛИ). при реализации всей этой ахинеи дошел до того что имею таблицу значений с колонками = названию свойств, и строками с уже записанными договорами, у которых значение свойства совпадает со значением свойства у договора который проверяем при записи:
Свойство1 Свойство2 СвойствоН ссылка11 ссылка21 ссылкаН1 ссылка12 ссылка22 ссылкаН2 ссылка1М ссылка2М ссылкаНМ выходит такая таблица. (Н - порядковый номер свойства, М - порядковый номер уже имеющегося в системе договора). теперь вопрос, как имея условие проверки, например, Свойство1 + Свойство2 ИЛИ Свойство3, проверить можно ли записывать договор? сам думал как-то запросом это делать, но решил спросить совета. может есть другое решение или какие-то идеи. |
|||
1
IamAlexy
29.01.12
✎
16:25
|
пляя.. как у тебя так получается.. вроде все слова знакомые а хренпоймешь что ты там понаписал...
|
|||
2
IamAlexy
29.01.12
✎
16:27
|
запросом, запросом...
делается все просто... добавляешь в запрос параметры типа: выбор когда а=&значение1 тогда истина иначе ложь конец как СовпадениеПоПараметруА выбор когда b=&значение2 тогда истина иначе ложь конец как СовпадениеПоПараметруБ ну и сколько там у тебя этих условий.. на выходе получаешь таблицу совпадений.. ну и далее сортируй ее и выводи пользователю... |
|||
3
Oz11
29.01.12
✎
16:27
|
(1) талант. )))
|
|||
4
Oz11
29.01.12
✎
16:28
|
(2) что-то не пойму что передавать в эти параметры.
|
|||
5
IamAlexy
29.01.12
✎
16:29
|
еп.. у тебя есть справочник договоры.
делаешь к нему запрос тупо по справончику и добалвяешь новые поля в запрос как я написал в (3) передавая в параметры запроса те реквизиты по которым тебе поиск нужен... если на совпадение номера то равенство.. если на вхождение наименование то в поле не равенство а подобно ставь... |
|||
6
Oz11
29.01.12
✎
16:32
|
задачу проверки совпадения реквизитов я уже реализовал. сейчас задача проверять свойства.
|
|||
7
IamAlexy
29.01.12
✎
16:33
|
(6) в чем принципиальная разница?
в том что запрос не к справочнику а к значениям свойств? |
|||
8
Oz11
29.01.12
✎
16:39
|
(7) сейчас пробую немного переделать таблицу. хочу сделать так: Договор (ссылка) и Свойство - это колонки. а потом ее запросом тягать. а то выходит что мне несколько раз нужно будет перебирать регистр сведений (ЗначенияСвойств), когда заполняю таблицу и когда ищу совпадения. а так у меня на выходе уже есть таблица, в которой есть все договора у которых свойства совпадают, а тут их будет гарантировано меньше чем в регистре.
|
|||
9
Oz11
29.01.12
✎
16:48
|
тут наверное вопрос больше в том как выстроить итоговую таблицу так чтобы потом в ней можно было просто найти нужный договор по заданным условиям. сейчас уже есть идея сделать таблицу вида: колонки (Договор, Свойство1, Свойство2, .... , СвойствоН), потом ее свернуть как-то по договору и тогда из нее запросом выбирать данные.
|
|||
10
IamAlexy
29.01.12
✎
16:50
|
(9) зачем?
сделай запрос выводящий все значения свойств договоров (договор там кстати владелец) затем по этим значениям ровно так же как по реквизитам договора пройдись там где есть совпадения - иерархия по владельцу и вывод на экран все... |
|||
11
Oz11
29.01.12
✎
17:06
|
(10) подумал и таки да. то что вы предлагаете действительно самый логичный вариант. спасибо за совет. но я сейчас добился формирования таблицы, как описал в (9) и свернул ее уже. попробую свой способ и отпишусь.
|
|||
12
Oz11
29.01.12
✎
18:58
|
все таки сделал так как описал в (11). вариант (10) выглядит логичней, но помоему работать будет дольше. хотя я могу ошибаться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |