Имя: Пароль:
1C
1С v8
Проблема при сохранении и восстановлении ссылок
,
0 dimonst1
 
03.11.15
17:45
Проблема следующего характера: В 1С на базе 8.3 используется механизм перевода данных(сслыки/таблицы значений) в строки с помощью ЗначениеВСтрокуВнутр(), после это сохраняется в виде строки в реквизите объекта. По необходимости из строки идет восстановление в данные ЗначениеИзСтрокиВнутр () (сслыки/таблицы значений) , но иногда возникают проблемы по имеющейся записи (ссылке) не восстанавливается ссылка на объект, имеем подобную картину <Объект не найден> (23:b6e900155d53460211e53a41a85be3a6),
<Объект не найден> (23:b6e900155d53460211e53a603c90c3c5).
т.е. 99,99% объектов сохраняются и восстанавливаются нормально, а некоторые нет, записывается в строке UUID по которому не находится ссылка на объект. Может кто-то сталкивался с подобной ситуацией ? Не понятно он сразу криво записывается или при хранении происходит сбой.
1 VikingKosmo
 
03.11.15
17:50
Почитай СП по ЗначениеВСтрокуВнутр() и сильно сильно расстройся
2 dimonst1
 
03.11.15
17:51
Читал:
3 dimonst1
 
03.11.15
17:53
Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется.

Но механизм работает пару лет, только недавно начали возникать проблемы.
4 VikingKosmo
 
03.11.15
17:54
Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется.
Для совместимости с 7.7. Для совместимости, Карл!
5 Tateossian
 
03.11.15
18:05
(0) У тебя где-то ошибка в логике, по-любому. (4) Нормальный механизм, на этом функционале работает журнал регистрации изменений + даже работает с регистрами сведений. Это что-то вроде хеширования.
6 Tateossian
 
03.11.15
18:06
(0) Не рассматривал ситуацию удаления объекта?
7 Defender aka LINN
 
03.11.15
18:08
(0) Эти объекты вы САМИ, ЛИЧНО, удалили из ИБ. Чего вы после этого хотите - непонятно.
8 Живой Ископаемый
 
03.11.15
18:12
а ведь могли заюзать версионность. в таком случае можно было бы восстановить с тем же uid'ом.... Я правда не помню, может измерение объект ведущее измерени
9 ДенисЧ
 
03.11.15
19:09
Расстрелять автора за такое решение.
10 dimonst1
 
03.11.15
21:43
(6) объект не удален, такое ощущение что при записи пишется ошибочный UUID, потому что при поиске объекта по битой ссылке, в бекапе то же не дает результата.
11 Franchiser
 
гуру
04.11.15
01:42
(10) а как ты ищешь в бэкапа?
Вот это <Объект не найден> (23:b6e900155d53460211e53a41a85be3a6) не ГУИД. Из него можно рассчитать гуид, но просто взять-вставить и найти в базе нельзя. Где то валялась обработка по получению гуид из такой строки вида <Объект не найден>
12 Franchiser
 
гуру
04.11.15
01:52
<Объект не найден> (23:b6e900155d53460211e53a41a85be3a6)
соответствует гуид
a85be3a6-3a41-11e5-b6e9-00155d534602
13 dimonst1
 
05.11.15
08:55
да я читал про преобразование, нашел готовую обработку, она преобразовывает уиды в гуиды и ищет, не находит ничего, думаю идет кривая запись в базу.
14 cw014
 
05.11.15
09:09
(13) Или же все таки каких то элементов справочников в базе вдруг начинает нехватать... Где то ты не договариваешь, товарищ... Все врут (С) House MD
15 dimonst1
 
05.11.15
09:19
(14) вроде бы все описал, но могу подробнее: есть справочник Сотрудники, и есть документ со строковым реквизитом, в этом документе табличная часть с колонкой сотрудники. Набиваются сотрудники, при записи документа табличная часть преобразуется в строку (ЗначениеВСтрокуВнутр()), записывается в строковый реквизит. И так и хранится, при открытии документа происходит обратная манипуляция из строкового реквизита идет преобразование в табличную часть (ЗначениеИзСтрокиВнутр ()). И несколько раз записанный в строку элемент не преобразуется в элемент справочника, не находит с таким иудом. Причем я знаю какой элемент был при записи и иуды разные (элемента и записанный в строке), такое впечатление что криво записывается уид.
16 Franchiser
 
гуру
05.11.15
10:55
А если преобразовывать всю тч, а строки тч в цикле?
17 dimonst1
 
05.11.15
15:14
так я всю ТЧ и записываю в строку, восстанавливается корректно, остальные колонки нормальные, сотрудники почти все нормальные, несколько с глюками.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.