|
РАУЗ. Ключи Аналитики. РИБ. | ☑ | ||
---|---|---|---|---|
0
Maxus43
29.11.12
✎
09:59
|
Приветствую господа!
Как мы знаем - Ключи аналитики просто справочник. Информация о нём - в Соответствующих регистрах. Имеем РИБ, много узлов. Ситуация - в разных узлах в производство списывают Доски, первый раз в жизни базы. Ключа такого нет, он формируется новый. В обоих базах свой ключ, но одинаковый по сути. Идут обмены, в итоге запись в регистре есть только об ОДНОМ ключе, а в движениях РАУЗа 2 ключа Если ещё раз списать доски в узле - подхватит ключ о котором есть запись в регистре, т.е. второй ключ. Имеем в РАУЗ 2 записи одинаковые по смыслу (и визуально одинаковые), но с разными ключами. Если перед расчетом себестоимости провести все доки - всё выровняется, но это просто нереально на больших объёмах, причем собственно и одно из достоинств РАУЗа - не надо ничего перепроводить Обработка ТИИ ключей - не исправляет данную ситуацию. Кто думал о такой ситуации вобще? Как бороться по феншую чтоб? |
|||
84
Maxus43
29.11.12
✎
12:11
|
(83) уволится?)
|
|||
85
shuhard
29.11.12
✎
12:12
|
(80) верю (с)
и решение ТС-у надо искать архитектурное возможно не передавать Рг РАУЗ в центр совсем и узнать это можно только из целей консолидации |
|||
86
neckto
29.11.12
✎
12:13
|
На существующих типовых объектах УПП вряд ли что-то получится. Как вариант: отключить обмен справочниками Ключи аналитик и регистрами Аналитики учета. В переферии перед обменом изменившиеся Ключи аналитики сливать в дубль-справочник, значения регистров Аналитик в дубль-регистры. Закачиваем дубль-справочники и дубль-регистры в центр, после отого запускаем постобработку по соединению справочников и регистров в типовые справочники Ключи аналитик и типовые регистры Аналитик учета.
|
|||
87
Maxus43
29.11.12
✎
12:14
|
(85) в систему заложен постулат что не должно быть разницы между узлами и данными в центре, т.е. проведение дока в центре должно благополучно отразится и на узле, поведение системы должно быть одинаково в рамках всех узлов РИБа
|
|||
88
Bober
29.11.12
✎
12:14
|
(84) это полумера. передай получение ключа на md5 и все. можно даже оставить эти грабли с РС. Главное, чтобы гиуд ключа (ссылка на объект) в любой точке была одинаковой.
|
|||
89
Bober
29.11.12
✎
12:15
|
(88) передай -> переделай
|
|||
90
Maxus43
29.11.12
✎
12:15
|
(88) да, интересная идея, буду брать в расчет
|
|||
91
neckto
29.11.12
✎
12:16
|
>>проведение дока в центре должно благополучно отразится и на >>узле
писец |
|||
92
Bober
29.11.12
✎
12:16
|
(88) а одинаковой она может быть толко с хеш-функцией и все.
|
|||
93
Maxus43
29.11.12
✎
12:17
|
(91) почему?
|
|||
94
Bober
29.11.12
✎
12:18
|
(90) при этом ты даже не нужно делать какие-то быстрые обены этими ключами. Ну нету в узле этого ключа, так он сделает его с аналогичным гуидом и при обменах все пройдет гладко.
Даже если сотня узлов одновременно сделает этот ключ, он все равно будет одинаковый. |
|||
95
neckto
29.11.12
✎
12:19
|
Как будешь отрабатывать ситуацию по одновременному проведению дока по одинаковым аналитикам в центре и на переферии?
|
|||
96
Bober
29.11.12
✎
12:20
|
(70) к сожалению не нашел в закромах такой старый релиз. Но по описанию уже и так понял как это сделано в этой редакции.
|
|||
97
Serg_1960
29.11.12
✎
12:20
|
(про себя, молча) А ведь истиную проблему возникновения дублирования ключей так и не озвучили. Если убрать все наслоения - то имеем классическое "Хаос невозможно автоматизировать"(с) Решение - административное.
|
|||
98
Maxus43
29.11.12
✎
12:21
|
(95) РИБ делаёт это за нас, т.е. вариант центра при обмене будет истинный.
Это не значит что в центре сидим проводим за всех, просто есть такая возможность |
|||
99
Maxus43
29.11.12
✎
12:21
|
(94) да, я оценил уже подход
|
|||
100
Cube
29.11.12
✎
12:21
|
100
|
|||
101
Bober
29.11.12
✎
12:21
|
(97) решение на уровне платформы а не административное.
Так как дубли ключей могут появиться, если одновременно провести два документа с отсутствующими ключами с системе. |
|||
102
Bober
29.11.12
✎
12:22
|
(99) теперь когда ты оценил, ты понимаешь что все остальное это просто полумера.
|
|||
103
Maxus43
29.11.12
✎
12:22
|
(97) какое именно? на примере (76) не вижу административного решения...
|
|||
104
Bober
29.11.12
✎
12:23
|
(103) добавлю, что на больших базах специально выносят упр. расчеты на отдельный узелю
|
|||
105
Maxus43
29.11.12
✎
12:23
|
(102) две полумеры ведут к гарантии, т.е. 1.быстрые обмены + 2. замена ссылок. Но делать конечно геморней
|
|||
106
Bober
29.11.12
✎
12:24
|
(105) оцени доработки двух костей и их последующее администрирование.
|
|||
107
Bober
29.11.12
✎
12:24
|
(105) особенно в части замени. так как после замены потребуется перерасчет.
|
|||
108
Базис
naïve
29.11.12
✎
12:46
|
В любом случае перепроведение открытого периода перед РСВ мне кажется полезным.
|
|||
109
Maxus43
29.11.12
✎
15:38
|
(106) хм, MD5 получается сразу подходит для генерации ссылки по гуиду?
|
|||
110
Maxus43
29.11.12
✎
16:25
|
Если юзать идею по генерации гуида для новых элементов - есть риск напороться на то, что элемент с таким гуидом уже есть в базе, и селяви. Пока не придумал как обойти можно
|
|||
111
Bober
29.11.12
✎
17:37
|
(110) уже проверил?
|
|||
112
Maxus43
29.11.12
✎
17:38
|
(111) нет, пока умозаключения, ибо мы делаем свой порядок генерации ссылки. Кто гарантирует что такой уже нет? МД5 как раз подходит для гуида, 32 символа в виде 16-чном.
|
|||
113
Maxus43
29.11.12
✎
17:39
|
(112) тьфу, т.е. не подходит немного)
|
|||
114
Bober
29.11.12
✎
17:59
|
(113) и что не подходит?
|
|||
115
Maxus43
30.11.12
✎
11:30
|
||||
116
Maxus43
30.11.12
✎
11:32
|
ответ 1с:
Мы рассматривали такую идею в самом начале, но нам не удалось найти приемлемого решения. Преобразование гуидов по математическим формулам не может дать 100% гуид. |
|||
117
Maxus43
30.11.12
✎
11:34
|
(116) у кого доступа нет - ответ был на вопрос:
а не хотите-ли вы генерировать гуид ключа на основании значений ключа например: гуид партнера + гиуд организации + гуид контрагента - md5 = гуид ключа. тогда можно будет и в РИБе это использовать. (с) |
|||
118
Maxus43
30.11.12
✎
11:35
|
правда я сам не понял пока почему мы не получим 100% гуид.
|
|||
119
Maxus43
30.11.12
✎
11:44
|
хотя может и понял...
Если у двух строк хеш-коды разные, строки гарантированно различаются, если одинаковые — строки, вероятно, совпадают. (с) вики т.е. одинаковый |
|||
120
Maxus43
30.11.12
✎
11:45
|
(119) + одинаковый хэш-код возможен у разных входных данных
|
|||
121
Maxus43
30.11.12
✎
12:01
|
а вот и Bober пришёл)
на партнёрке тоже обсуждали, йс отказалась от идеи короче, хоть и красиво, но не 100% |
|||
122
Bober
30.11.12
✎
12:02
|
(121) не знаю, почему отказались, делал. работает.
|
|||
123
Maxus43
30.11.12
✎
12:03
|
(122) работать будет, но нет гарантии просто. Теоретически возможна бяка, когда один гуид сгенерится на разные данные
|
|||
124
Bober
30.11.12
✎
12:03
|
(120) да, такое возможно, но вероятность маленькая. Еще как вариант написать свою хеш-фукнцию и спасть спокойно.
|
|||
125
Maxus43
30.11.12
✎
12:04
|
а 1с ничего не делает, если нет 100% уверенности, допущений не допускают, и делают по своему через опу
|
|||
126
Bober
30.11.12
✎
12:04
|
(123) зато сейчас гарантий полно -)
|
|||
127
Bober
30.11.12
✎
12:04
|
(125) делает, поэтому мы и обсуждаем как это переделать.
|
|||
128
Maxus43
30.11.12
✎
12:04
|
(126) ну разгребать овно в РИБе они разрешают самим...
|
|||
129
Bober
30.11.12
✎
12:06
|
(128) дубль ключа возможен и в одной базе при параллельном вводе данных, только вероятность этого намного меньше (если только не накладывать исключительную блокировку перед создание нового ключа).
|
|||
130
Maxus43
30.11.12
✎
12:11
|
(129) короче великие наши внедренцы последовали совету 1с так не делать. будем мучатся с комплексом затычек: быстрые обмены, замена ссылок, перепроведение
|
|||
131
Bober
30.11.12
✎
12:12
|
вот как делал MD5(НРЕГ(СтрЗаменить(XMLСтрока(Ключ.знч1) + XMLСтрока(Ключ.знч2) + XMLСтрока(Ключ.знч3)), "-", "")). Далее все это в ссылку. Полет нормальный.
PS - Если значение ключа составной тип, то обязательно добавлять гуид тип объекта и следить за тем, чтобы значение было заполнено. - если значение ключа пустое, то все рано передавать гуид (00000000-0000-0000-000000000000). - если количество аналитики меняется, то потребуется все переделывать. |
|||
132
Maxus43
30.11.12
✎
12:14
|
(131) можешь поделится функцией MD5? для себя
|
|||
133
Bober
30.11.12
✎
12:16
|
||||
134
Maxus43
30.11.12
✎
12:19
|
(133) это видел) я имею ввиду использовал читсый алгоритм этот, без дополнительных доработок?
|
|||
135
Bober
30.11.12
✎
12:20
|
с генерацией ключа?
|
|||
136
Maxus43
30.11.12
✎
12:20
|
(135) для генерации гуида
|
|||
137
Maxus43
30.11.12
✎
12:25
|
(136) + тупой вопрос, дефисы вставить только)
|
|||
138
Bober
30.11.12
✎
12:30
|
(137) нужно подождать, сейчас пример сделаю.
|
|||
139
Bober
30.11.12
✎
12:55
|
(137) тебе всю мини конфу или только кусок кода?
|
|||
140
Bober
30.11.12
✎
12:55
|
(137) накатал пример
ТекстДляКлюча = НРег(СтрЗаменить(XMLСтрока(Объект.Номенклатура) + XMLСтрока(Объект.Характеристика) + XMLСтрока(Объект.Склад), "-", "")); ХешТекста = ОбработкаОбъект.MD5(ТекстДляКлюча); ГуидТекст = Сред(ХешТекста, 1, 8) + "-" + Сред(ХешТекста, 9, 4) + "-" + Сред(ХешТекста, 13, 4) + "-" + Сред(ХешТекста, 17, 4) + "-" + Сред(ХешТекста, 21, 12); Объект.КлючАналитики = XMLЗначение(Тип("СправочникСсылка.КлючАналитики"), ГуидТекст); //идет в транзакции для блокировки спр НачатьТранзакцию(); ЗаблокироватьСправочникПоСсылке(Объект.КлючАналитики); Если Не КлючСоздан(Объект.КлючАналитики) Тогда СоздатьКлючАналитики(Объект.КлючАналитики, Объект.Номенклатура, Объект.Характеристика, Объект.Склад); КонецЕсли; ЗафиксироватьТранзакцию(); |
|||
141
Maxus43
30.11.12
✎
12:57
|
(140) мини конфу на мыло можно, если не трудно)
впринципе понятно конечно |
|||
142
Serg_1960
30.11.12
✎
13:55
|
Я не тупой или упрямый, я - упорный :)
Пример ситуаций, плиз, порождающих дублирование ключей. С учетом, что узлы - различные организации, различные подразделения и каждый со своим складом. |
|||
143
Maxus43
30.11.12
✎
13:56
|
(142) всмысле? какой пример?
|
|||
144
Serg_1960
30.11.12
✎
13:57
|
ТС, как тебе идея: генерировать заранее набор ключей, при добавлении новой номенклатуры в справочник?
|
|||
145
Maxus43
30.11.12
✎
13:58
|
(142) пример - АналитикаУчетаЗатрат, там запросто
|
|||
146
Maxus43
30.11.12
✎
14:02
|
(144) тоже как вариант, только ТИИ ключей убъёт их, ибо они не используются
|
|||
147
Serg_1960
30.11.12
✎
14:14
|
(145) Для новой номенклатуры ключ создаётся при первом поступлении(оприходовании) в организацию. Как ключ ухитряется дублироваться? Вы сразу на нескольких узлах поступление(оприходование) вбиваете?
(146) Запуск ТиИ ключей можно зарегламентировать - запускать не тогда, когда хочется, а тогда - когда можно :) В алгоритм можно внести условия(ограничения) по удалению неиспользуемых ключей. |
|||
148
Bober
30.11.12
✎
14:15
|
||||
149
Maxus43
30.11.12
✎
14:17
|
(147) номенклатура - там десятки тыщ наименований. заветси её могут давно заранее, когда запланируют
|
|||
150
Maxus43
30.11.12
✎
14:18
|
(148) спс. заценю на днях
|
|||
151
Bober
30.11.12
✎
14:22
|
(142) (147) детсад какой-то.
|
|||
152
Maxus43
30.11.12
✎
14:23
|
(147) убрать эту функцию из обработки можно конечно... но, как ты себе это представляешь? на ВСЕ сочетания номенклатур, характеристик, статей, серий, качество и т.д. создавать ключи? боюсь распухнет справочник до неприличных размеров
|
|||
153
Serg_1960
30.11.12
✎
15:30
|
У меня, наверное, какая-то неправильная УПП: для позиции номенклатуры пара-тройка записей, ну максимум 5-6 в аналитике учета затрат.
|
|||
154
Maxus43
30.11.12
✎
15:33
|
(153) это не все варианты, а те которые ты используешь... ты предлагал все варианты создать, ибо кто значет что введут и какой ключ понадобится
|
|||
155
Serg_1960
30.11.12
✎
16:06
|
Вообще-то я имел ввиду, говоря про "набор", что это не всевозможные варианты. Например: "набор" основные производственные материалы. Статья затрат - определена и не изменяется. Качество - новое или брак (допустим). Пришло на склад - ушло в производство. Всё.
|
|||
156
Maxus43
30.11.12
✎
16:08
|
(155) характеристики, серии и т.д.? чтоб не было кучи дублей - надо при поступлении создавать сразу и аналогичные производственные. А если сразу после поступления списали в производство до обменов? получаем (0) опять)
|
|||
157
Serg_1960
30.11.12
✎
16:12
|
Ладно, уговорил. Не универсальное решение.
Другая идея: специально выделенный план обмена только по этим справочникам и регистрам. Обмен по событию (по мере надобности - по факту добавления новой записи в справочник). Как тебе это? |
|||
158
Bober
30.11.12
✎
16:14
|
(157) да, еще костыльков да побольше. вот кто будет весь этот зоопарк админить.
|
|||
159
Maxus43
30.11.12
✎
16:14
|
(157) идея быстрых обменов по этим объектам в первых постах, так и решили делать впринципе наши большеголовые, тока не по появлению записи, они тоже могут скопом создаватся.
|
|||
160
Maxus43
30.11.12
✎
16:16
|
(158) самое смешное что это фпнач-внедренец у нас делает, т.е. ему лишь бы сделать, кто поддерживать будет - не их проблема
|
|||
161
Maxus43
30.11.12
✎
16:16
|
*франч
|
|||
162
Bober
30.11.12
✎
16:16
|
(161) бррррр. звери а не люди
|
|||
163
Serg_1960
30.11.12
✎
16:20
|
(159) Ну, в принципе... новая запись справочника может быть только "спусковым курком" - сам обмен начнется через несколько секунд допустим. Одна или куча записей туда войдет уже не важно. Тот кто не успеет - вновь взведет курок.
|
|||
164
Maxus43
30.11.12
✎
16:22
|
(163) как организовать не суть, смысл предложения - обмениваться быстрей. к сожалению Гарантии тоже не даёт, приходится совмещать с другими костылями
|
|||
165
Serg_1960
30.11.12
✎
16:23
|
Bober, кстати, мне твоя идея тоже нравится. Можно генерировать уникальный идентификатор по уникальному наименованию. В риб-базах будет исключено дублирование наименований так, как при обмене это будет одна единственная запись.
|
|||
166
Maxus43
30.11.12
✎
16:26
|
(165) ответ 1с на такой подход в (116), и наши франчи согласились с ним( хотя в реальной жизни вероятность совпадения стремится к 0. Но раз "может" такое быть - значит нельзя
|
|||
167
Serg_1960
30.11.12
✎
16:31
|
Я в курсе. Всё дело в вероятности. Точнее - насколько она низкая :)
Между прочим: если новый ключ обменом будет распространяться, скажем, за пять-десять секунд - то можно, имхо, обойтись без прочих костылей. А такая скорость обмена - вполне реальна. |
|||
168
Serg_1960
30.11.12
✎
16:36
|
А по поводу генерации "неуникального" идентификатора - надуманная проблема (имхо) Перед выдачей нового идентификатора его можно проверить на предмет существования в базе и сгенерировать ещё раз (другой).
|
|||
169
Maxus43
30.11.12
✎
16:37
|
делают костыли чтоб была гарантия 100%. хз чо у них получится
|
|||
170
Maxus43
30.11.12
✎
16:37
|
(168) если генерить другой - то по какому алгоритму? и другая база должна знать что ты в узле1 сменил алгоритм
|
|||
171
Bober
30.11.12
✎
16:41
|
(170) посмотри, сколько сейчас ключей в базе
|
|||
172
Maxus43
30.11.12
✎
16:41
|
(171) каких именно? затрат?
|
|||
173
Bober
30.11.12
✎
16:46
|
Всех различных
|
|||
174
Maxus43
30.11.12
✎
16:47
|
Ключи аналитики вида учета 10 136
Ключи аналитики распределения затрат 4 705 Ключи аналитики учета затрат 170 868 Ключи аналитики учета партий 71 211 Ключи аналитики учета прочих затрат 2 541 такая петрушка |
|||
175
Maxus43
30.11.12
✎
16:48
|
Группа риска как раз "Ключи аналитики учета затрат"
|
|||
176
Serg_1960
30.11.12
✎
16:49
|
(170) Если есть один, общий для всех, генератор - почему бы у него не может быть другого, запасного алгоритма - тоже общего для всех? :)
Не нужно второй базе "знать" об этом. Предположим в первой базе уникальное наименования порождает неуникальный ключ - будет генерится другой ключ. Во второй базе, в аналогичной ситуации - тоже будет гериться ключ по запосному алгоритму. |
|||
177
Maxus43
30.11.12
✎
16:51
|
(176) Это если обмен уже прошёл. А если между обменами создадим элемент1 и при попытке создать 2-й - токая же ссылка - то вернёмся к (0) :)
|
|||
178
Maxus43
30.11.12
✎
16:52
|
это всё на самом деле ОЧЕНЬ маловероятно. и легче сделать один из вариантов, чем пытаться делать АБОСЛЮТНО гарантированную систему
|
|||
179
Serg_1960
30.11.12
✎
16:59
|
(177) Не согласен. Вероятность повторной генерации - очень низкая(но есть). А повторной генерации номеров в период между обменами - стремится к 0.000(0)
|
|||
180
Maxus43
30.11.12
✎
17:00
|
(179) дак и по MD5 - стремится к 0 вероятность... но возможно :(
|
|||
181
Serg_1960
30.11.12
✎
17:09
|
Возможно? "Будь мужиком"(с) - сделай так и докажи обратное :)
|
|||
182
Serg_1960
30.11.12
✎
17:10
|
я - афк, бб.
|
|||
183
Maxus43
30.11.12
✎
17:12
|
(181) теоретически возможно. опровергать логику я не научился
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |