|
v7: Как по "<Объект не найден>(/)" найти документ в не битой базе? | ☑ | ||
---|---|---|---|---|
0
lukinskiy
26.10.12
✎
18:11
|
Есть две базы, связанные по УРБД. В периферийной пропала часть документов в движениях регистров.
Ищу ссылки на пропавшие документы по всем регистрам: Для Ин = 1 По Метаданные.Регистр() Цикл РегВид = Метаданные.Регистр(Ин).Идентификатор; Рег = СоздатьОбъект("Регистр." + РегВид); Рег.ВыбратьДвижения(,); Пока Рег.ПолучитьДвижение()=1 Цикл ТекДок = Рег.ТекущийДокумент(); Если ПустоеЗначение(ТекДок) = 0 Тогда Состояние("Регистр=""" + РегВид + """ дата=" + ТекДок.ДатаДок); Если ТекДок.Выбран() = 0 Тогда Сообщить("Регистр=""" + РегВид + """ текущий документ=" + ТекДок); КонецЕсли; КонецЕсли; Для Ин = 1 По Метаданные.Регистр(РегВид).Измерение() Цикл ИдентИзмерения = Метаданные.Регистр(РегВид).Измерение(Ин).Идентификатор; ЗначИзмерения = Рег.ПолучитьАтрибут(ИдентИзмерения); Если ТипЗначенияСтр(ЗначИзмерения) = "Документ" Тогда Если ПустоеЗначение(ЗначИзмерения) = 0 Тогда Если ЗначИзмерения.Выбран() = 0 Тогда Сообщить("Регистр=""" + РегВид + """ измерение=""" + ИдентИзмерения + """ значение=""" + ЗначИзмерения + """"); КонецЕсли; КонецЕсли; КонецЕсли;; КонецЦикла; КонецЦикла; КонецЦикла; Теперь вопрос - как (естественно, в центральной, не испорченной, базе) найти соответствующие документы? Знаю, что в сообщении "<Объект не найден>(X/Y)" X - внутренний ID объекта. Но, чтобы его найти с помощью ЗначениеИзСтрокиВнутр() нужен еще ID вида объекта. Где его взять? (ЗначИзмерения.Вид() выдает пустую строку) И второй вопрос - что такое Y. В части случаев у меня там появляется код центральной базы, но есть документы, в которых Y пустой, а они тоже пришли из центральной. |
|||
1
Mikeware
26.10.12
✎
18:29
|
x - собственно ид объекта в десятеричном представлени. а y - идентификатор иб создания объекта.
_idToStr(x)+y даст тебе собственно их "как в базе" вида ты не получишь никак |
|||
2
Mikeware
26.10.12
✎
18:29
|
да, и "просто так документы не пропадают"
|
|||
3
lukinskiy
26.10.12
✎
18:35
|
Как-то странно получается - система помнит ID документа, но при этом теряет часть информации - какого вида это был документ?
|
|||
4
aleks-id
26.10.12
✎
18:37
|
(3) нажми в списке документов Shift+del и удивись
|
|||
5
Mikeware
26.10.12
✎
18:40
|
(3) система уже не помнит ид документа. :-) Это хвосты где-то не в системе...
По большому счету, для существующего документа иддокдеф пофигу, его всегда можно определить по иду. а для отсутсвующего документа тем более пофиг - какая разница, какой он _был_, если его уже _нету_ |
|||
6
lukinskiy
26.10.12
✎
18:53
|
(4) В каком списке?
(5) А где же они - в мировом разуме что ли? :) Как раз ID-то она прекрасно помнит. И именно такой ID имеют эти документы в центральной базе, где они сохранились (я проверял). Но как их искать без этого дурацкого ID вида объекта, непонятно. Разве что перебором... |
|||
7
Mikeware
26.10.12
✎
18:59
|
(6) ну если они где-то есть, найди документ по иду, и возьми у него иддокдеф. это и будет твой вид
|
|||
8
lukinskiy
26.10.12
✎
19:06
|
Так чтоб его автоматизированно найти, мне и нужен ID вида объекта. Так-то я его просто вручную находил.
|
|||
9
lukinskiy
26.10.12
✎
19:06
|
Да и вообще - зачем отвечать, толком не читая вопрос?
|
|||
10
Mashinist
26.10.12
✎
19:19
|
"В части случаев у меня там появляется код центральной базы, но есть документы, в которых Y пустой, а они тоже пришли из центральной"
Возможно он был сделан еще тогда, когда база была не распределенной. А вообще коды и центральной и периферийных баз можно же посмотреть |
|||
11
Mikeware
26.10.12
✎
20:06
|
(8) получи ид, и "автоматизированно найди" по иду. зачем задавать вопросы, если ответов в интернете на них навалом.
(10) не "возможно", а именно "тогда" |
|||
12
lukinskiy
29.10.12
✎
13:54
|
В итоге написал обработку для поиска в движениях регистров битых ссылок на документы (<объект не найден>) и их пометки, как измененных, в другой базе для переноса по УРБД - http://infostart.ru/public/158505.
Так что, если вдруг у кого-то возникнет похожая проблема, берите-пользуйтесь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |