Имя: Пароль:
1C
1С v8
Остатки с битыми ссылками в измерениях
,
0 Alexey87
 
19.09.12
17:38
Совершенно случайно наткнулся на остатки в регистре, где измерениями являются битые ссылки, причем права полные, RLS нет, база нераспределенная.
Сделал ТИИ со следующими настройками: Галки сверху все, тестирование и исправление; при наличии ссылок на несуществующие объекты - создавать объекты; при частичной потере данных объектов - создавать объекты. В результате создались документы - регистраторы, но они даже не проведены и внутри пустые.
Как найти все остатки с битыми ссылками и как их корректно убрать?
1 vmv
 
19.09.12
17:43
загуглить мисту, чувак
2 IronDemon
 
19.09.12
17:44
3 Alexey87
 
19.09.12
18:29
(2)Отмечаю галками, выбираю период - пишет "Ничего не нашли"...хотя на остатках в консоли запросов:

Заказ поставщику                                              Остаток

<Объект не найден> (121:b4d1003048c3573a11e0b419a4e3c521)        15  
<Объект не найден> (121:b4d1003048c3573a11e0b419a4e3c521)         9
<Объект не найден> (121:b4d1003048c3573a11e0a7042a709492)         6

и т.д.
4 Alexey87
 
19.09.12
21:36
up
5 rs_trade
 
19.09.12
21:40
поставь - грохать битые ссылки. нах тебе пустые документы?
6 Alexey87
 
19.09.12
21:45
(5)при наличии ссылок на несуществующие объекты - Очищать ссылки
при частичной потере данных объектов - Удалять объекты

так?
7 Alexey87
 
20.09.12
09:04
еще подниму
8 Serg_1960
 
20.09.12
09:28
(0) "Как найти все остатки с битыми ссылками и как их корректно убрать"

"Как найти?" Книга знаний: Пустые ссылки - почитай, подумай, напиши алгоритм.

"Как убрать?" - убрать что?

Если "убрать" --> "удалить", то (6) "при наличии ссылок на несуществующие объекты - Очищать ссылки". "...Удалять объекты" - не надо. Это совсем для других целей.

Если "убрать" --> "восстановить", то нужны копии базы данных, где эти ссылки - не битые.


PS: в поиск форума забей строку "<Объект не найден>" - достаточно информативно :)
9 Serg_1960
 
20.09.12
09:31
(5) Даже если тс "грохнет" ссылки - некорректные записи из регистра не исчезнут :( А корректно их (записи регистра) восстанавливать всё равно придётся. Иначе поплывут остатки, обороты и прочая неприятность...
10 Alexey87
 
21.09.12
16:40
(8)запрос по регистру

ВЫБРАТЬ
   ЗаказыПоставщикам.Регистратор
ИЗ
   РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
ГДЕ
   ЗаказыПоставщикам.Регистратор.Ссылка ЕСТЬ NULL
   И НЕ ЗаказыПоставщикам.Регистратор = &ПустаяСсылкаДокумента

выдает пустой результат, в то же время такой запрос:

ВЫБРАТЬ
   ЗаказыПоставщикамОстатки.Контрагент,
   ЗаказыПоставщикамОстатки.ЗаказПоставщику,
   ЗаказыПоставщикамОстатки.Номенклатура,
   ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры,
   ЗаказыПоставщикамОстатки.ЗаказаноОстаток
ИЗ
   РегистрНакопления.ЗаказыПоставщикам.Остатки(, Номенклатура = &Н) КАК ЗаказыПоставщикамОстатки

выдает в том числе такие строки:

                    ЗаказПоставщику

<Объект не найден> (121:8735003048c3573a11e08297c8e0e2e3)
<Объект не найден> (121:8735003048c3573a11e08297c8e0e2e5)
<Объект не найден> (121:b4d1003048c3573a11e0a7042a709492)
и т.д.
11 Alexey87
 
21.09.12
17:21
Все-таки получилось вывести регистраторы с битыми ссылками в движениях

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ЗаказыПоставщикам.Регистратор
ИЗ
   РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
ГДЕ
   ЗаказыПоставщикам.ЗаказПоставщику.Ссылка ЕСТЬ NULL
   И НЕ ЗаказыПоставщикам.ЗаказПоставщику = &ПустаяСсылкаДокумента

Дальше просто почистить их движения?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший