Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Восстановление удаленного элемента справочника в SQL базе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Talkman
Проблема: удален элемент справочника, по которому были активные движения в базе по счету 281. 1С 7.7. SQL Server 200. Можно ли в ручном режиме перенаправить ссылки с удаленного элемента справочника на вновь созданный? Проверка логической целостности средствами конфигуратора занимает слишком много времени. Есть ли другие варианты восстановления удаленного элемента?
Zaval
Запускайте ТИИ.

ЗЫ. Уже один раз в ручном режиме поработали? "Битому не спится?"(с) преферансный фольклор
Dartvader111
Цитата(Talkman @ 01.10.15, 8:30) необходимо зарегистрироваться для просмотра ссылки
Проблема: удален элемент справочника, по которому были активные движения в базе по счету 281. 1С 7.7. SQL Server 200. Можно ли в ручном режиме перенаправить ссылки с удаленного элемента справочника на вновь созданный? Проверка логической целостности средствами конфигуратора занимает слишком много времени. Есть ли другие варианты восстановления удаленного элемента?


Думаю можно чего нельзя...SQL на UPDATE напишите и будет Вам счастье...(поиск ID удаленного замена его на новый ID) везде где он был думаю дело 30 мин
Talkman
Цитата(Zaval @ 01.10.15, 9:52) необходимо зарегистрироваться для просмотра ссылки
Запускайте ТИИ.

ЗЫ. Уже один раз в ручном режиме поработали? "Битому не спится?"(с) преферансный фольклор


Если можно поподробнее и без аббревиатур. В ручном режиме не работал. Уточню. Я больше кодер. С SQL знаком ооочень поверхностно.

Цитата(Dartvader111 @ 01.10.15, 10:00) необходимо зарегистрироваться для просмотра ссылки
SQL на UPDATE напишите и будет Вам счастье...(поиск ID удаленного замена его на новый ID) везде где он был думаю дело 30 мин


Тоже если можно поподробнее. Спасибо.
Zaval
Цитата(Talkman @ 01.10.15, 11:15) необходимо зарегистрироваться для просмотра ссылки
Если можно поподробнее и без аббревиатур. В ручном режиме не работал. Уточню. Я больше кодер. С SQL знаком ооочень поверхностно.

Штатно 1с не дала бы удалить этот элемент, "рученьки шаловливые" явно поработали.
Сделайте копию базы и на ней в режиме Конфигуратор запустите Тестирование и испраление(с восстановлением потерь в настройках).
Если результат устроит - повторите на рабочей базе.
Talkman
Рученки поработали, хоть и не мои. Элемент удален штатными методами. В 1С стояло "непосредственное удаление". Вопрос конечно в том, почему оно стояло и как можно было случайно нажать на подтверждение удаления. Тестирование и исправление было запущено мною на ночь на двух процессорном серваке с 20+ ГГб ОЗУ. За 12 часов не прошло. Более мощного железа в наличии нет.
Zaval
Можно, конечно, и вариант Dartvader111'а применить.
Обязательно вначале - на копии.
Принцип такой.
Ссылка на элемент - его ид, который видно даже в 1с. Вместо него нужно вставить ид нового элемента.
Я вынужденно возился с СКЛ лет пять назад, насколько помню - нужен набор записей для изменения(запрос), прочитать, перебрать-заменить, записать.
Мож, спецы что лучше подскажут.

ЗЫ. Видать, неплохо фирма на одинэснике сэкономила))
Talkman
Цитата(Zaval @ 01.10.15, 12:42) необходимо зарегистрироваться для просмотра ссылки
ЗЫ. Видать, неплохо фирма на одинэснике сэкономила))


Спасибо за комплимент
Zaval
Цитата(Talkman @ 01.10.15, 15:17) необходимо зарегистрироваться для просмотра ссылки
Спасибо за комплимент

Это не Вам, фирме по поводу Ваших предшественников)

Есть идея.
Создать новый элемент, полезть в СКЛ и ручками вместо оригинального ид вписать ид невинно убиенного элемента.
Только - вначале на копии!
Dartvader111
Приветсвую! А литтл пример... Смотрим в файле 1Cv7.DDS структуру SQL базы, находим все поля где храниться ссылка на товар вот пример из файла:
#===============================================================================
#==TABLE no 54 : Документ (Мн.ч.) Поступление
# Name |Descr |SQLTableNam|RecordLock
T=DT73 |Документ (Мн.ч.) Поступление |DT73 |
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=IDDOC |ID Document's |C |9 |0
F=LINENO_ |LineNo |S |0 |0
F=SP78 |(P)товар |C |9 |0
Видим что поле SP78 таблицы DT73 - это ИД товара сооответсвенно запрос будет выглядеть так: UPDATE [BAZA].[dbo].[DT73] SET SP78 = 'старый ИД' WHERE SP78 = 'новый ИД' выполняем запрос и будет Вам счастье smile.gif

Talkman
Отличные советы. Спасибо, сегодня вечером попробую. Если не прокатит (что по логике врядли) на выходных запущу ТИИ.
Talkman
Доброго утра. Значится так. До всех танцев с бубнами решил сделать ТИИ, так как оно никогда лишним не будет. Шло часов 15-17. Прошло. Создало кучку пустых элементов где не попадя и горстку пустых доков. Искомый элемент с проводками также восстановлен. Спасибо за моральную поддержку и хорошие совету. Забрал в копилку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.