![]() |
![]() |
![]() |
|
ID в справочнике Контрагентов | ☑ | ||
---|---|---|---|---|
0
vva
27.03.06
✎
12:30
|
Есть 2 базы: Бух-я и Рарус.Альфа-Авто:Автосалон. Требуется выгружать проводки из Авто в Бух. В проводках присутствуют контрагенты. Проблема с тем как сопоставлять контрагентов. Так как наименование у них может заполняться по разному, в т.ч. с ошибками. Для юр.лиц использую реквизит "ИНН", а для физ.лиц как?
ФИО могут заполнять с ошибками, паспортные данные не всегда возможно заполнить. Может какой-то уникальный реквизит добавить, только от чего он должен зависеть? |
|||
1
child
27.03.06
✎
12:33
|
(0) Пытаемся совместить несовместимое? да к тому же автоматом? чето мне подсказывает что без ВК "Опытный бухгалтер и пользователь" тутва не обойтись. Авот добавлять реквизит иль нет - вопрос чисто риторический.
|
|||
2
selenat
27.03.06
✎
12:38
|
(1) Ну почему? Можно синхронизировать справочники. Если не удается воспользоваться существующим реквизитом (ИНН), можно добавить свой. Технически выполнимо, проблем нет.
|
|||
3
child
27.03.06
✎
12:42
|
Ну добавить он реквизит. а все равно, как его заполнить, если однознчного соответствия между базами нет? конечно часть, наверное, можно булет синхронизовать по ИНН, часть может и по наименованию прокатит, но не факт, что это будет полная синхронизация. так что все равно придется часть элементов (может быть даже большую часть) синхронизировать ручками.
|
|||
4
smaharbA
27.03.06
✎
12:47
|
child - прав, толко если не делать "жесткое" заведение справочников в одной базе и синхронизацию при перекачке(и/или регламентно)...
|
|||
5
selenat
27.03.06
✎
12:51
|
(3) "часть элементов (может быть даже большую часть) синхронизировать ручками."
Никто не спорит. Придется. Ну и что? Достаточно сделать это 1 раз, а потом указывать соответствия для вновь создаваемых элементов. При регулярных выгрузках это более оправдано, чем каждый раз проделывать это вручную. |
|||
6
Lendy
27.03.06
✎
12:53
|
В твоем случае никак по-другому и не сделать. Я бы посоветовал занесение данных только в одну базу, а в другую чтобы попадали только при переносе.
|
|||
7
selenat
27.03.06
✎
12:55
|
Завести справочник соответствий контрагентов двух баз (соответствий ID или собственного уникального реквизита).Один раз его заполнить и пользоваться...
|
|||
8
child
27.03.06
✎
12:57
|
(+7) Завели новый, потом еще один и еще. а через полгода, эта таблица уже не актуальна...
|
|||
9
child
27.03.06
✎
13:00
|
Может лучше пересмотреть структуру ведения справочника? ну например назначить базу где заводятся новые и редактируются старые элементы. В остальных базах настроить обмен данными с центральной.
Но даже в этом случае не избежать ручной синхронизации. |
|||
10
selenat
27.03.06
✎
13:00
|
(8) Если выгружается элемент, для кот нет соответствия в справочнике, можно предложить интерактивно ввести соответствующего контра, и пополнить справочник соответствий.
|
|||
11
child
27.03.06
✎
13:04
|
(10) Тоже вариант, но не исключает ошибок пользователей. Причем порой нелепых. как то если в родительской базе один элемент будет в дочерней определен 2-мя реквизитами.
|
|||
12
selenat
27.03.06
✎
13:04
|
+10 Тогда в рабочем режиме мы постоянно обновляем справочник соответствий. Каждый раз это будет в худшем случае указание нескольких новых соответствий.
|
|||
13
child
27.03.06
✎
13:06
|
(+11) читать не "2-мя реквизитами" а "2-мя элементами"
|
|||
14
selenat
27.03.06
✎
13:07
|
(11) Не проблема. Дать возможность пользователю интерактивно переназначать соответствие любому выбранному контру. Тогда он будет исправлять ошибки по мере их обнаружения.
|
|||
15
selenat
27.03.06
✎
13:09
|
(13) Можно предупреждать, что соответствие для этого элемента уже есть. Кроме того, можно сознательно устанавливать соответствия так, чтобы два контра одной базы выгружались в 1 контра в другой.
|
|||
16
selenat
27.03.06
✎
13:18
|
Я давно собираюсь написать такую обработку синхронизации контров и номенклатуры. Все руки не дойдут.
|
|||
17
romix
модератор
27.03.06
✎
13:22
|
||||
18
child
27.03.06
✎
13:25
|
(17) А как это к разным базам прикрутить?
|
|||
19
у лю 427
27.03.06
✎
13:26
|
(17) ты лучше у меня во дрове ветры попускал - высохли бы лужи...
|
|||
20
selenat
27.03.06
✎
13:29
|
(19) Ну вот. Пришел поручик и все изгадил. :))
|
|||
21
у лю 427
27.03.06
✎
13:32
|
в 7-ке уже есть уникальные ИД во всех справочниках... и документах...
|
|||
22
child
27.03.06
✎
13:34
|
(21) И что? Уникльные в пределах одной базы. А ведь задача изначально стоит в синхронизации справочников.
|
|||
23
romix
модератор
27.03.06
✎
13:34
|
(21) Они не уникальные для разных баз, если не применяется УРБД.
|
|||
24
у лю 427
27.03.06
✎
13:36
|
Сделать их уникальными не просто, а очень просто....
Но это дятлы не поймут.... |
|||
25
у лю 427
27.03.06
✎
13:37
|
Уникальными для разных баз...
|
|||
26
romix
модератор
27.03.06
✎
13:37
|
В 8-ке в качестве кодов синхронизации задействованы GUID-ы; вероятность их совпадения (при нормальных сетевых картах на каждой машине) равна строго 0.
|
|||
27
selenat
27.03.06
✎
13:37
|
А зачем уникальность для разных баз. Для разных баз достаточно справочника их соответствий, а в пределах базы они вроде как уникальны?
|
|||
28
romix
модератор
27.03.06
✎
13:39
|
(24,25) Зато получение GUID-это ОДИН системный вызов WinAPI. И не надо лезть руками в таблицы (вот уж за что ты точно не получишь ни один сертификат).
|
|||
29
child
27.03.06
✎
13:40
|
(25) Ну тады скажи нам не сведующим, каким образом твой уникальный ключ покажет, что элемент справочника в базе А = элементу в справочнике в базе Б?
|
|||
30
у лю 427
27.03.06
✎
13:40
|
В семерке для уникальности нет гуидов...
Вероятность совпадения в одной базе равна нулю... P.S. уже много раз налетал на сетевухи с одинаковыми мас-адресами (по науке такого быть не должно)... Вот такой случай попадется ромиксу и будет он сушить весла... |
|||
31
у лю 427
27.03.06
✎
13:41
|
(29) ответ на этот вопрос есть выше... Если ты его не видишь - .... новая сосна не спасет дятла...
|
|||
32
у лю 427
27.03.06
✎
13:41
|
кстати, синхронизация на этом принципе у меня работает уже лет пять...
|
|||
33
romix
модератор
27.03.06
✎
13:42
|
(30) В пакете обмена достаточно передавать мак-адрес, чтобы выявить эту ошибку.
Но к сожалению не всем представителям пернатых это дано... |
|||
34
selenat
27.03.06
✎
13:50
|
(29) Похоже, они о чем-то своем... Я тоже не понимаю - зачем им уникальность для разных баз.
|
|||
35
romix
модератор
27.03.06
✎
13:52
|
(32) В 8-ке применили синхронизацию основанную на GUID-ах. Лично я не вижу причин чтобы не делать так же. Все равно придется переходить на нормальные системы.
(34) Чтобы при выгрузке-загрузке контрагента, который есть в разных базах под немного разными наименованиями, он не задвоился. |
|||
36
у лю 427
27.03.06
✎
13:54
|
Другие представители пернатых долбят гнилые деревья, ибо достаточно передавать не мак адрес, а идентификатор базы, в которой порожден элемент. И мак адрес и совпадение маков при этом по .... барабану...
P.S. Также для некоторых других представителей дятлообразных хочется заметить, что мак адрес - вещь непостоянная и при смене сетевой платы изменится... Но БАЗА - ИСТОЧНИК НЕ ИЗМЕНИЛАСЬ то.... Ладно, долбите деревья дальше... Желательно гнилые - лес будет чище... |
|||
37
selenat
27.03.06
✎
13:55
|
(35) Я же говорю, использовать справочник соответствий ID, которые в каждой базе свои.
|
|||
38
у лю 427
27.03.06
✎
13:57
|
(35) синхронизация по чистому гуиду не содержит информации о базе-владельце элемента... А это важно... Чтобы инфа из некоторых баз не попадала в ненужные...
|
|||
39
у лю 427
27.03.06
✎
13:58
|
(37) он не поймет... Его идея - если нужно 3 льва, то ловим 10 и потом 7 выгоняем...
|
|||
40
romix
модератор
27.03.06
✎
13:58
|
(36) Достаточно проверять уникальность мак-адресов при выгрузке ПБ-ЦБ.
(38) Префикс ИБ (НомерДок, Код должен содержать префикс ИБ). |
|||
41
romix
модератор
27.03.06
✎
13:59
|
(37) Как думаешь, почему так не сделали в 8-ке? Может быть, решили, в отличие от некоторых, не долбить гнилые деревья?
|
|||
42
selenat
27.03.06
✎
14:07
|
(41) Я не знаю 8ку. Насколько я понимаю, этот метод хорош для обмена между двумя конкретными базами, для него требуется справочник соответствий ID и инструмент интерактивной установки этих соответствий. Вряд ли это стали бы делать универсальным способом, встроенным в конфигурацию.
|
|||
43
romix
модератор
27.03.06
✎
14:09
|
(42) Не нужен там никакой справочник соответствий. Элементу справочника в двух разных базах присвоен один и тот же GUID - это означает, что это один и тот же элемент.
|
|||
44
у лю 427
27.03.06
✎
14:12
|
Префикс ИБ и есть идентификатор базы ... Префиксы в номерах доков и кодов - это об базы-владельца не зависит... а зависит только от потребностей клиента...
т.к. передается префикс БД - по сути, азработчики выполнили все, что сказано в (36)... Но некоторые дятлы этого не понимают... (40) "Достаточно проверять уникальность мак-адресов при выгрузке ПБ-ЦБ." ты так не шути, а то я сдохну от смеха... чуть бутерброд с маслом не уронил на клаву... |
|||
45
у лю 427
27.03.06
✎
14:15
|
не копал 8 так глубоко - а можно в 8 указать свой гуид при записи элемента справочника? Если можно - то будут одни проблемы, если нет - тогда нужен справочник соответствий...
P.S. в 77 указать нельзя... |
|||
46
romix
модератор
27.03.06
✎
14:16
|
(44-2) В смысле чтобы мак-адреса не повторялись в разных ИБ. А то что там карты могут менять - это по барабану, адреса по любому останутся разными.
|
|||
47
selenat
27.03.06
✎
14:16
|
(43) Можно так. Я делал в 7ке поиск соответствующих доков двух баз, правда по введенному мной общему уникальному реквизиту (кот совпадает в двух базах), а не ID. Но это ведь не единственный вариант.
|
|||
48
у лю 427
27.03.06
✎
14:18
|
(47) через таблицу соответствий такое делается элементарно...
|
|||
49
selenat
27.03.06
✎
14:20
|
(48) Знаю. Просто это был первый опыт в этом направлении. Не все было продумано. Сейчас я и это стал бы делать через справочник соответствий...
|
|||
50
romix
модератор
27.03.06
✎
14:21
|
||||
51
romix
модератор
27.03.06
✎
14:23
|
И почему только в 8-ке не поюзали справочник соответствий?
А в любой нормальной системе можно ли представить себе такой "справочник"? |
|||
52
selenat
27.03.06
✎
14:30
|
(50-51) Че-то я не понял. Если ты ведешь справочники в двух базах (а не только выгружаешь из одной), как это ты умудришься сделать у них одинаковые GUID?
|
|||
53
у лю 427
27.03.06
✎
14:43
|
(50) Если записать гуид реально - тогда можно отказаться от справочника соответствий. Это удобнее...
Но вот ситуация, в которой в базах АА и ББ создано по элементу с одинаковым гуидом и затем отправлено через УРБД в базу СС... В этом случае будет интересная коллизия... Причем ошибку хрен просто так найдешь... P.S. вероятность такой коллизии не нулевая... Мк адреса тоже в принципе не должны повторяться (их производителям выдает спец комитет и делит их правильно)... А по факту - есть дубликаты... И очень интересная ситуация, когда налетаешь на два одинаковых мак адреса в одной сетке... |
|||
54
selenat
27.03.06
✎
14:46
|
(53) Если я правильно понял, гуид можно назначать только новому не записанному элементу справочника. Это возможно, только если элементы справочника могут создаваться только в одной базе, а в другую выгружаться. Но если нам надо вести справочники независимо в двух базах - ничего из этого не выйдет
|
|||
55
rsv
27.03.06
✎
14:53
|
(0) Да поготь ты деньги разносить в бухии на конторв :) Да погодиже когда начисления из ОУ приедут с аналитикой . Ферштейн ?
|
|||
56
romix
модератор
27.03.06
✎
15:03
|
(53) Коллизии мак-адресов в пределах одной Ethernet-сети невозможны (сеть начнет выдавать ошибки, что уже есть такой мак-адрес).
Для разных сетей совпадение возможно (более того, его можно выставить вручную). Поэтому центральная ИБ при загрузке может проверять мак-адреса удаленных баз на несовпадение. А как она узнает, какие там мак-адреса? В пакете обмена их можно слать. |
|||
57
romix
модератор
27.03.06
✎
15:05
|
(52) Можно либо вручную сопоставлять (что долго), либо (что лучше всего) изначально заводить элементы не руками по телефону, а методом выгрузки-загрузки из базы-источника.
|
|||
58
selenat
27.03.06
✎
15:13
|
(57) Как это сопоставлять вручную? Из (50) я так понял, что если элемент создан и записан, то его гуид уже не изменишь. А если элементы создавать только при помощи выгрузки, то это накладывает серьезные ограничения на использование базы (в базе приемнике могут быть свои элементы, кот вообще не нужны в базе источнике, не говоря уже о практических трудностях при срочности использования элемента, кот еще не было возможности выгрузить из источника).
|
|||
59
у лю 427
27.03.06
✎
15:23
|
(56) можно слать МАК... но ведь не шлют.... Тогда все твои рассуждения псу под хвост....
(58) Эти ограничения - не проблемы. Они элементарно решаются... |
|||
60
selenat
27.03.06
✎
15:28
|
(59) ИМХО Это зависит от организации работы у клиента и его (клиента) возможностей организации работы так, чтоб можно было решить эти ограничения. При работе через соответствия таких проблем вообще не возникает.
|
|||
61
romix
модератор
27.03.06
✎
17:36
|
(58) Вписываешь ручками нужный GUID, и все. Чтобы просто указать, что в разных базах - один и тот же объект.
(59) Даже при общих мак-адресах вероятность коллизий очень мала (1/2^80) или 0,0000000000000000000000000827181 |
|||
62
romix
модератор
27.03.06
✎
17:37
|
(+61) Хотя конечно нормальная сетевуха сводит это вероятность вообще до 0.
|
|||
63
selenat
27.03.06
✎
17:43
|
(61) А не получится, что при таком вписывании образуется не уникальный гуид в пределах одной базы?
|
|||
64
rsv
27.03.06
✎
17:46
|
А если в станции (сервере) 2 сетевухи ?????????????
|
|||
65
romix
модератор
27.03.06
✎
17:59
|
(63) Контроль в ПриЗаписи() надо поставить, чтобы GUID был уникальный.
(64) Первую наверное берет. |
|||
66
selenat
27.03.06
✎
20:03
|
(65) И что? ПриЗаписи определили, что гуид не уникальный. Но нам нужен именно такой, чтобы элементы справочника были синхронизированы. Вообще ненадежный по-моему способ - вмешиваться в механизм автоформирования гуид. Слишком много ситуаций надо продумывать, чтобы у нас гуид был уникальный каждый в своей базе и чтобы он был одиаковый для соответствующих друг другу элементов справочников.
|
|||
67
romix
модератор
28.03.06
✎
00:47
|
(66) Мы сейчас про 1С 7.7 говорим? Так там вообще нету гуидов. А есть внутренние (скрытые от пользователя) идентификаторы, состоящие из 2 частей. Их расшифровка описана, например, здесь:
Нетипичное использование компоненты УРБД в системе 1С:Предприятие 7.7 Вмешиваться в них никто не собирается. ГУИД, который выглядит, например, вот так: {71602BEA-1BEA-4FB8-B03F-6C2E3390C748} может служить дополнительным средством синхронизации, чтобы программа могла находить объекты, независимо от кода или наименования, номера или даты документа. Юзера любят назначать слегка разные названия, ошибаться с кодами, править номера и даты доков и т.п., и уникальность теряется. Гуид помогает найти тот же самый объект. А почему именно гуид, а не числовой идентификатор наподобие IDD в МОД - потому что его удобнее создавать, и можно не беспокоиться насчет того, а не сбойнет ли счетчик. Т.е. больший, так сказать, запас надежности. |
|||
68
romix
модератор
28.03.06
✎
00:59
|
Вероятностный подход кажется стремным. Ну что же, для таких случаев ничто не мешает комбинировать подходы GUID и IDD. Тогда они просто усилят полезные качества друг друга.
|
|||
69
selenat
28.03.06
✎
09:49
|
(67) Давай немного обстрагируемся. Пусть у нас есть некоторый внутренний код для идентификации объектов. Сейчас не важно - уникален он в пределах типа метаданных (как ИД в 7ке), или уникален в пределах всех объектов метаданных (как ГУИД). Предположим даже, что мы можем сами присваивать ему какие-то значения. Если мы хотим синхронизировать элементы справочника при помощи ОДИНАКОВЫХ внутренних кодов, то в одной из баз нам придется присваивать этот внутренний код самостоятельно (чтоб он был такой же как в другой базе). Тогда возникает опасность, что этот код будет не уникален (опять же не важно - в пределах типа метаданных или среди всех объектов базы). Такая ситуация недопустима и я не увидел ответа на вопрос - как ее обходить. Если же использовать справочник соответствия элементов, то такой проблемы нет вообще, причем все очень легко реализуется. В чем я не прав?
(68) Не понял - какой вероятностный подход? |
|||
70
аля скунки
28.03.06
✎
09:58
|
ночь была тяжелой?
|
|||
71
selenat
28.03.06
✎
10:01
|
(70) Спал как убитый. Ты это кому?
|
|||
72
romix
модератор
28.03.06
✎
12:36
|
(69) Я выношу GUID-ы в отдельный справочник. Он содержит колонку GUID (она же - наименование) и ссылку на объект. В этом справочнике легко находить объект по GUID-у. Если вдруг в выгрузке придет ссылка на совершенно другой объект (например, объект не того типа, с другим кодом, с другим наименованием и т.п.) то программа имеет возможность высветить этот косяк, и прекратить обмен. Т.е. имхо резко повышается устойчивость к любым сбоям и программным и "человеческим" ошибкам. Если использовать гуид как дополнение к любой другой технологии обмена, то с этим, я думаю, никто спорить не будет, а надежность обмена резко повысится.
|
|||
73
child
28.03.06
✎
12:41
|
(72) Насколько я понял - GUID есть все-го лишь уникальный ключ доступа к элементам, а где его хранить (в самом элементе или в справочнике соответствий) особо разницы нет. Но все равно, для более корректной работы необходимо справочник центролизовать, т.е. определить базу владельца данного справочника, а по другим уже рассылать?
|
|||
74
romix
модератор
28.03.06
✎
12:44
|
(73) В справочниках обычно достаточно префиксов ИБ (в кодах), чтобы было видно, где создали тот или иной элемент.
|
|||
75
child
28.03.06
✎
12:47
|
(74) Это понятно. Но все же как GUID поможет решить проблему в 0? Все равно необходимо установить какую либо базу как истину, а в другой провести соответствие, что является новым элементом, а что исковерканным старым.
|
|||
76
selenat
28.03.06
✎
13:11
|
(72) И как ты отслеживаешь, что объект СОВЕРШЕННО ДРУГОЙ? Может возникнуть ситуация, что тип объекта тот же, а объекты разные. Код и наименование не показатель, их может изменить пользователь.
"программа имеет возможность высветить этот косяк, и прекратить обмен". Да. Может. И что дальше? Не обмениваться после такой ошибки? Пользователь не справится с этим. Да и программисту повозиться придется... |
|||
77
selenat
30.03.06
✎
16:08
|
Ну вот. Дошли руки. :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |