Имя: Пароль:
1C
1С v8
Вопрос про поиск ссылок на объект
0 f_vadim
 
16.05.14
16:50
Есть обработка "поиск и замена значений" (итс или инфостарт - не помню). С помощью неё произвожу замену контрагента и его договора в ряде документов (включая движения).
После этого как поиск ссылок самой обработки, так и поиск ссылок встроенный находит в документах ссылки на старые значения.
Причём глазами и запросами к этим документами и регистрам я их не нахожу. ТиИ делал с пересчетом итогов.
Кто-нибудь с таким сталкивался?
1 John83
 
16.05.14
16:58
почему в браузерах до сих пор не сделают проверку на пунктуацию?...
PS раз пять перечитал..
2 f_vadim
 
16.05.14
17:03
(1) Ну хоть суть-то ясна?

Могу чуток короче.
Открываю документ - нет в нём такого договора, а НайтиПоСсылкам говорит, что есть.
3 DS
 
16.05.14
17:12
Для вывода о том, что в документе нет такого договора, недостаточно открыть этот документ.
4 mikecool
 
16.05.14
17:13
(2)
- ты суслика видишь?
- нет
- а он там есть!
5 f_vadim
 
16.05.14
17:16
(3) Всё верно.
Запросом выгребаю все поля из документа и из движений - нету такого.
6 hhhh
 
16.05.14
17:24
(5) а из табличных частей?
7 f_vadim
 
16.05.14
17:29
(6) естественно.
8 eddy_n
 
16.05.14
18:02
Сталкивался. БП3. Платформа 8.3. Файловая ИБ. Поиск ссылок на объект - показывает на несуществующую ссылку. Полнотекстовый поиск при этом работает нормально - "левых" ссылок не показывает.
9 eddy_n
 
16.05.14
18:03
Не может 1с обеспечить целостность базы своим форматом.
10 f_vadim
 
16.05.14
18:24
(8)(9) Или вообще жесть или я чего-то не понял. мы об одном говорим?
Несуществующая ссылка - это не ссылка на несуществующий объект, а именно ссылка, которой не должно быть, но она есть?

Это как-то можно побороть? Скажем, какие варианты удаления таких объектов, на которые присутствуют фантомные ссылки?

База серверная с MS SQL.
11 bolobol
 
16.05.14
18:59
Плохо смотрел. Не может быть есть того что нет.
12 Infsams654
 
16.05.14
19:26
(0) хочется спросить. В НайтиПоСсылкам

во Вторая колонка - ссылка на объект. Там тот документ, у которого якобы нет этого договора ?


НайтиПоСсылкам (FindByRef)
Синтаксис:

НайтиПоСсылкам(<СписокСсылок>)
Параметры:

<СписокСсылок> (обязательный)

Тип: Массив.
Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:

Тип: ТаблицаЗначений.
Возвращает ссылки на найденные объекты в виде ТаблицаЗначений.
Первая колонка - исходная ссылка.
Вторая колонка - ссылка на объект, если найденная ссылка соответствует объектной таблице или значение, олицетворяющее запись необъектной таблицы.
Третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка.
Описание:

Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>.
13 f_vadim
 
16.05.14
21:16
(12) именно
14 f_vadim
 
16.05.14
21:25
(11) Возможно я чего-то не углядел. Научи меня хорошо смотреть, у меня идеи кончились.
Хотя есть одна - залезть в базу напрямую, подсмотрев таблички профайлером. Но доступа пока нет.
15 f_vadim
 
19.05.14
08:15
А-ап.
16 lxndr
 
19.05.14
08:29
(2) какой документ? Какой реквизит?
17 f_vadim
 
19.05.14
11:35
(16) Поступление на р/с и списание с р/с. Ссылки ищу на договор контрагента.
Какой реквизит - неизвестно, все заполнены новыми  значениями.
18 DS
 
19.05.14
13:18
Это не там, где кроме шапочного набора реквизитов есть еще и табличный ("РасшифровкаПлатежа" или что-то в этом духе)?
19 f_vadim
 
19.05.14
14:19
(18) Да, там. Все реквизиты, включая ТЧ, выбирались запросом.
20 Анютик
 
19.05.14
14:22
А точно все движение проверил? на тесте перепровести док контрольный и посмотреть.
Кстати, может быть тч зачет аванса еще.
21 FIXXXL
 
19.05.14
14:22
(14) дерзкий? рескаай!

мой тебе совет: пакатай обработку раза три
потом смотри :)
22 f_vadim
 
19.05.14
14:54
(20) На тестовой базе перезаполнял и перепроводил. Даже в непроведенном документе ссылка присутствует.

(21) Катал-перекатал уже. Сама обработка не находит чего менять. Т.е. по кнопке "найти ссылки" - ссылки находятся, а когда смотришь отладчиком "выполнить замену значений" - до кода замены дело не доходит.
23 f_vadim
 
19.05.14
14:59
Выгружаю документ вместе с движениями в XML (ВыгрузкаЗагрузкаДанныхXML82.epf). В файле присутствует только UID нового договора (старого нет).
24 Анютик
 
19.05.14
15:03
(22) быть такого не может. ТИИ, выгрузка-загрузка. Но я такого не видела
25 f_vadim
 
19.05.14
15:08
(24) сам не верю :).
ТИИ делал, выгрузка-загрузка в тестовую базу - эффекта ноль.
26 Анютик
 
19.05.14
15:09
может, какие-то регистры сведений завязаны? и там не изменено? проверял?
27 f_vadim
 
19.05.14
15:25
(26) движения документа, регистры, ссылающиеся на этот документ и договор, проверил.
28 f_vadim
 
19.05.14
16:15
Прелесть просто.
Удалил документ "поступление на р/с" с фантомной ссылкой на договор.
Делаю поиск ссылок на договор. Находит!
Объект, содержащий ссылки: <объект не найден> (уид).
Тип объекта: "поступление на р/с"
O_o

ЗЫ. ТИИ не предлагать.
29 hhhh
 
19.05.14
16:18
(280 так надо закрыть эту обработку и опять открыть
30 f_vadim
 
19.05.14
16:27
(29) шутка?
Всё равно проверил - результат как в (28)
31 Анютик
 
19.05.14
16:28
конфигурация какая? у всех регистров накопления этот реквизит ведущий?
32 Анютик
 
19.05.14
16:29
и вдогонку...через поиск ссылок на объект поискать - найдет?
33 f_vadim
 
19.05.14
16:44
(31) "Адаптированная" БП3. Второй вопрос не понял.

(32) Да. Находит <объект не найден>.
34 Анютик
 
20.05.14
09:29
у регистров сведений, где используются эти данные взведен флажок "ведущее"
35 f_vadim
 
20.05.14
11:36
(34) В регистрах сведений (данные первичных документов) фигурирует только документ "поступление на р/с". Там есть флаг "ведущее".
Договор вместе с поступлением только в бух. проводке, а ссылка сохраняется после отмены проведения и удаления самого документа.
36 Анютик
 
20.05.14
11:38
файловая база? может, chdbfl попробовать полечить?
37 Пеппи
 
20.05.14
11:43
(33) картинку выложи волшебник) именно из поиск ссылок
38 f_vadim
 
20.05.14
12:29
(36) серверная, для тестов выгружал в файловую - безрезультатно. chdbfl попробую

(37) ахалай-махалай
https://drive.google.com/file/d/0BzRsBTCcQiXeZFFIVVlDWWVsUzA/edit?usp=sharing
39 f_vadim
 
20.05.14
13:45
chdbfl - ошибок не обнаружено
40 hhhh
 
20.05.14
14:04
кеш чистил?
41 f_vadim
 
20.05.14
14:13
(40) почистил. эффекта - ноль
42 hhhh
 
20.05.14
15:45
(41) тогда проверьте права.
43 f_vadim
 
20.05.14
16:42
(42) всё с полными правами
44 f_vadim
 
21.05.14
12:22
Ап.
Краткое содержание проблемы:
В документе "П1" заполнено поле договор - "Д1".

Поиск ссылок на договор "Д2" находит тот же документ "П1" (в каком реквизите встречается "Д2" неизвестно, искал запросами).

Если удалить документ "П1", ссылка сохраняется.
https://drive.google.com/file/d/0BzRsBTCcQiXeZFFIVVlDWWVsUzA/edit?usp=sharing

ТИИ не помогает. База серверная MS SQL.
Загрузка в файловую проблемы не решает. CHdbfl без ошибок.
45 Анютик
 
21.05.14
12:40
(38) в (37) не это просили, а из операции - поиск ссылок на объекты
46 f_vadim
 
21.05.14
13:38
47 f_vadim
 
21.05.14
15:12
Ссылку нашёл. Хранится в таблице _SeqB9957.
Гугле говорит, что это - таблица границ последовательностей.

Кто подскажет как разрулить штатными средствами?
Таких ссылок у меня порядка 2000.
48 f_vadim
 
21.05.14
15:33
Всё нашёл.
В последовательности Взаиморасчеты.Границы.
Т.е. поиск ссылок находит ссылку в последовательности, но показывает, что ссылка в документе.

Как заставить систему перезаписать данные в последовательности? Или их как-то можно удалить?
49 Анютик
 
22.05.14
08:55
ну ...как вариант, на копии, откатить дату последовательности раньше самого раннего документа, а потом восстановить. Должно перезаписаться, но надо опыты ставить, так сказать не готова. На Копии!!:)
50 hhhh
 
22.05.14
09:18
(48)  ПоследовательностьНаборЗаписей.<Имя последовательности> (SequenceRecordSet.<Имя последовательности>)
Очистить (Clear)
Синтаксис:

Очистить()
Описание:

Удаляет все записи регистрации из набора.

Доступность:

Сервер, толстый клиент, внешнее соединение.
51 f_vadim
 
22.05.14
09:50
(49) Ага, я поигрался вчера. В записях последовательностей все документы с кривыми ссылками заменились на пустой документ "авансовый отчёт" :) (как тут v8: Как можно удалить документ (пустую ссылку) из последовательности)

(50) Как очистить я знаю. Последствий никаких не будет?
52 hhhh
 
22.05.14
10:03
а какие могут быть последствия? Ведь ничего не изменится.
53 f_vadim
 
22.05.14
10:33
С очисткой тоже проблема.
В последовательности "Последовательность.Взаиморасчеты" похоже всё нормально.
Кривые записи в "Последовательность.Взаиморасчеты.Границы". Запросом отбираются по регистратор = пустая ссылка на авансовый отчет.
Чтение набора записей по этому регистратору ни одной записи не находит.
Т.е. надо как-то очистить записи в границах.
Дату пробовал сдвинуть раньше первого документа - не помогает, записи остаются.
54 f_vadim
 
22.05.14
10:43
Подмывает прихлопнуть эти записи средствами sql.
55 hhhh
 
22.05.14
10:51
(53)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Взаиморасчеты.Регистратор
    |ИЗ
    |    Последовательность.Взаиморасчеты КАК Взаиморасчеты
    |ГДЕ
    |    Взаиморасчеты.Регистратор.Дата ЕСТЬ NULL ";
    
    Таб = Запрос.Выполнить().Выгрузить();
    Для Каждого Стр Из Таб Цикл
        Наб = Последовательности.Взаиморасчеты.СоздатьНаборЗаписей();
        Наб.Отбор.Регистратор.Установить(Стр.Регистратор);
        Наб.ОбменДанными.Загрузка = Истина;
        Наб.Записать();
        Сообщить("--- " + Стр.Регистратор);
    КонецЦикла;
56 f_vadim
 
22.05.14
11:01
(55)
этот возвращается пустой

ВЫБРАТЬ
    Взаиморасчеты.Регистратор
ИЗ
    Последовательность.Взаиморасчеты КАК Взаиморасчеты
ГДЕ
    Взаиморасчеты.Регистратор.Дата ЕСТЬ NULL


а этот находит нужные мне записи

ВЫБРАТЬ
    ВзаиморасчетыГраницы.Регистратор
ИЗ
    Последовательность.Взаиморасчеты.Границы КАК ВзаиморасчетыГраницы
ГДЕ
    ВзаиморасчетыГраницы.Регистратор.Дата ЕСТЬ NULL
57 f_vadim
 
22.05.14
12:08
Вобщем, похоже, что когда сдвигаешь границу на дату ранее первого документа, в таблице с границами остаются только битые ссылки.
58 f_vadim
 
22.05.14
13:18
Вобчем, я вычистил кривые записи из таблицы SeqB.
Границы подвигал - записи создаются. Посмотрю чего скажет ТиИ.
59 f_vadim
 
23.05.14
14:00
ТиИ - без ошибок. База вроде живая.

Спасибо за внимание.