![]() |
![]() |
![]() |
|
Неуникальный внутренний идентификатор документов в базе | ☑ | ||
---|---|---|---|---|
0
Alexx_MNH
19.10.07
✎
10:10
|
Доброе время суток!
При тестировании/исправлении появилась ошибка неуникальности вн. идентификатора с предложением исправить вручную. Посмотрев значения поля IDDOC таблицы 1SJOURN, обратил внимание, что значения идут не по-порядку. Поэтому два вопроса: 1. Подскажите пожалуйста какой номер лучше задать для дубликата, чтобы быть уверенным, что он будет уникальным. При этом - не собъется ли номератор для дачи нового внутренного идентификатора? 2. Из-за чего возникает такая ошибка? Может есть какие-нить способы профилактики такой ошибки? (База распределенная, если это имеет значение...) Если этот вопрос уже обсуждался ранее в форуме - прошу прощения. Буду признателен за ссылку по теме в этом случае. |
|||
1
ТелепатБот
гуру
19.10.07
✎
10:10
|
||||
2
Alexx_MNH
19.10.07
✎
11:23
|
Ребят, я понимаю, что пятница, но подскажите пожалуйста! В базе такие документы плодятся и крайне мешают.
Если этот вопрос считается слишком глупым на этом форуме - киньте ссылку где почитать про это плиз! |
|||
3
Sadovnikov
19.10.07
✎
11:30
|
(0) Не правь сам руками, если не до конца представляешь себе все связи в базе. Тебе надо поправить далеко не в одном метсе...
|
|||
4
GrayT
19.10.07
✎
11:32
|
Нет не глупым, как точно ответить я по крайней мере не знаю. УРБД смущает.
Ни чего там нештатно не шаманили? |
|||
5
Alexx_MNH
19.10.07
✎
12:00
|
(3) - дык сама 1с-ка просит:
"Проверка уникальности внутреннего идентификатора документов. РасходнаяНакладная. Номер PHK-.... Вн. идентификатор L9SU2 . Исправить вручную" А можно где-то посмотреть как править? Ведь явно же не у меня первого такая ошибка возникает... (4) - У нас конфигурация самописная. Так что только нештатно и шаманим :) Еще из нештатного - бывают временами отключения связи и в этом случае те соединения, которые подцеплены к серверу терминалом удаленно - отрубаются по таймауту - вполне возможно, что в это время 1с что-то делает еще. |
|||
6
Alexx_MNH
19.10.07
✎
12:01
|
Причем косяки такие наблюдаются на периферийной базе. В центральную передается только один из документов, которые имеют один вн. идентификатор.
|
|||
7
Alexx_MNH
19.10.07
✎
12:26
|
Причем при поиске документа с неуникальным вн. идентификатором - он находится. А если его выбрать - курсор устанавливается на втором доке с тем же идентификатором. Может тогда строку первого документа вообще удалить в таблице журнала, а затем запустить тестирование/исправление с параметром создавать доки? Тогда 1с-ка по идее должна создать новый док уже с другим вн. идентификатором, на скока я понимаю.
Прокатит такое? |
|||
8
Alexx_MNH
19.10.07
✎
16:21
|
(3) Связи можно по коду найти в файлах ДБФ-ных, в общем-то. Вопрос - какой номер поставить? Может кто-нить подсказать в каком месте 1с хранит текущий (последний) номер внутреннего идентификатора, как его узнать можно?
|
|||
9
КонецЦикла
19.10.07
✎
16:37
|
1С хранит последний ИД документов в 1SUIDCTL.DBF
Смотри значение в поле MaxId, где поле TypeId равно 0 Присвой новый ИД с записью туда значения увеличенного на 1 (в 36-чной системе) Потом поменяй ИД в журнале, потом DH***, DT***, потом регистры и проч. Хорошо если доки разного вида и проведены по разным регистрам, а то еще не то наменяешь, документов то > 1 :) |
|||
10
Alexx_MNH
19.10.07
✎
17:05
|
(9) Спасибо за пояснения.
По регистрам, к сожалению есть и такие доки, которые проведены по одинак. регистрам. Так что пожалуй я сделаю с регистрами проще - удалю все записи с таким вн.идом, а затем запущу перепроведение проведенных доков за период. А до этого - поменяю Ид-ы на новые и запущу ТиИ, кнечна же, с опцией восстановления данных. |
|||
11
Alexx_MNH
22.10.07
✎
16:02
|
Есть еще одна мысль, как починить базу. Ее я и применю как только возмущение юзеров или неточность отчетов превысит предел.
Так как в центральной базе такой проблемы нет, (вернее - есть дубли записей только в таблице 1srcdoc), то самое простое убить старую периферийную базу, пересоздать ее и сделать выгрузку в нее. Тогда после вставки данные будут в регистрах и в таблицах документов корректные. |
|||
12
Alexx_MNH
06.12.07
✎
15:58
|
ХЕЛП!!!
Неуникальный ид доков появился и в центральной базе. Из-за этого не идет автообмен в УРБД - при попытке выгрузить документ, который имеет одинаковый ид с другим - 1с вылетает. Причем ситуация достаточно простая - два дока с одинаковым идом одновременно указаны только в таблице 1SCRDOC. НО - очень требуется помощь - как я могу определить какая запись в этой таблице к какому из документов относится?! Неуникальный код встречается в поле CHILDID и в поле PARENTVAL, которое имеет сложную структуру. Подскажите пожалуйста как определить к какому же из документов относится та или иная запись в этой таблице. Очень нужно! Заранее большое спасибо! |
|||
13
Дядя Васька
06.12.07
✎
16:07
|
(12) Сделай выгрузку-загрузку. В конфигураторе которая..
|
|||
14
Alexx_MNH
06.12.07
✎
16:40
|
(13) Дак а смысл? Если в центральную базу не приходит ответ из периферии (загружать нечего) - он выгрузит опять те же самые документы (включая косячный). В периферию они загрузятся и будет та же ситуация.
|
|||
15
FreeFin
06.12.07
✎
16:43
|
удалить можно, только обоих, сделав копию того, который "высвечивается" на открываемой форме.
сначала взять ИД=ЗначениеВСтрокуВнутр(Доки.ТекущийДокумент()); и какнить так удалить: Процедура УдалениеДока() Док.ВыбратьДокументы(ДатаС,ДатаПо); Пока Док.ПолучитьДокумент()=1 Цикл ИДДок=ЗначениеВСтрокуВнутр(Док.ТекущийДокумент()); Если СокрЛП(ИДДок)=СокрЛП(ИД) Тогда Док.Удалить(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
16
Alexx_MNH
06.12.07
✎
16:45
|
Решил по-другому. Но временное решение... Сделал ТиИ в периферийной базе и после этого выгрузка из периферийной базы пошла нормально. По крайней мере кризис это снимет. Но в центральной базе так и остались два дока с одним идом. Очень хочется это поправить. Можно просто даже убить один из доков и все ссылки на него. Но мешает то, что в вышеуказанной таблице есть ссылки на оба дока. Вот я и прошу очччень - подскажите плиз как можно определить какая из строчек к какому доку относится в этой табличке ссылок документов.
Или киньте в меня докой где можно почитать по правилам организации ссылок в 1с-ке. Буду очень признателен. |
|||
17
Alexx_MNH
06.12.07
✎
16:47
|
(15) Спасибо за идею! Попробую. По результатам отпишу.
|
|||
18
FreeFin
06.12.07
✎
16:53
|
(17) это не идея, с "живой" обработки выдрано... Такшо, не уодного тебя задваиваются.)))
|
|||
19
FreeFin
06.12.07
✎
16:56
|
+(15) Для удаления обоих, два раза циклом прогонять (иногда) надоть. Почему иногда=для меня тайна, так только, догады есть.
|
|||
20
Alexx_MNH
06.12.07
✎
16:57
|
(15) В принципе - можно попробовать удалить только нужный - я же знаю и тип документа и ид его по результатам сообщения ТиИ. Лишь бы 1с-ка нашла его с помощью Док.ВыбратьДокументы(). Если этот оператор отбирает по таблице документов, а не по журналу, то есть шанс... А по журналу этот док я найти не могу.
|
|||
21
Alexx_MNH
06.12.07
✎
17:01
|
(18) То, что с живой - обнадеживает. Очень хоцца верить, что конец моих мучений с этой заморочкой близок. Спасибо за подсказку!!!
|
|||
22
FreeFin
06.12.07
✎
17:08
|
(20) Теоретически, чисто моими глупыми размышлениями), достаточно удалить из таблички 1sjourn второй задвоенный ID, тот что "ниже" при дефолтном открытии самой таблички. В формы списков доков он не попадает, как и в выгрузки, так и индекс за него не "цепляется. А многострочный часть, записи в регистрах и прочее, скорее всего только одну ссылку IDDOC в своих телах содержат...прочем это уже надо смотреть.
|
|||
23
Alexx_MNH
07.12.07
✎
11:22
|
(20) Возможно, если в таблице ссылок доков останутся ссылки от обоих доков, то даже и после чистки таблицы журнала в системе будет некорректное поведение... Ну, это моими глупыми размышлениями... :) Ладно, спасибо еще раз за помощь, попробую твой вариант на след. недельке и поделюсь результатами :)
|
|||
24
DrZombi
гуру
07.12.07
✎
11:33
|
(23)Че та ты чувак страдаешь с ИД номером :)...
Удали его полностью из базы... потом запусти исправление... Он его создаст :)))) Заполни его как надо... и сделай это в тестовой версии :) Эксперементируй :) |
|||
25
DrZombi
гуру
07.12.07
✎
11:34
|
+(24)А возможно предется перепроводить все документы от косячного номера №1 до тек даты :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |