Версия для печати темы (https://pro1c.org.ua/index.php?s=1edb3afd6cc0e482007236a82229ea1e&showtopic=25456)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Восстановление удаленного элемента справочника в SQL базе

Автор: Talkman 01.10.15, 7:30

Проблема: удален элемент справочника, по которому были активные движения в базе по счету 281. 1С 7.7. SQL Server 200. Можно ли в ручном режиме перенаправить ссылки с удаленного элемента справочника на вновь созданный? Проверка логической целостности средствами конфигуратора занимает слишком много времени. Есть ли другие варианты восстановления удаленного элемента?

Автор: Zaval 01.10.15, 9:52

Запускайте ТИИ.

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

Автор: Dartvader111 01.10.15, 10:00

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


Думаю можно чего нельзя...SQL на UPDATE напишите и будет Вам счастье...(поиск ID удаленного замена его на новый ID) везде где он был думаю дело 30 мин

Автор: Talkman 01.10.15, 10:15

Цитата(Zaval @ 01.10.15, 9:52) http://pro1c.org.ua/index.php?act=findpost&pid=103611
SQL на UPDATE напишите и будет Вам счастье...(поиск ID удаленного замена его на новый ID) везде где он был думаю дело 30 мин


Тоже если можно поподробнее. Спасибо.

Автор: Zaval 01.10.15, 11:14

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

Штатно 1с не дала бы удалить этот элемент, "рученьки шаловливые" явно поработали.
Сделайте копию базы и на ней в режиме Конфигуратор запустите Тестирование и испраление(с восстановлением потерь в настройках).
Если результат устроит - повторите на рабочей базе.

Автор: Talkman 01.10.15, 11:31

Рученки поработали, хоть и не мои. Элемент удален штатными методами. В 1С стояло "непосредственное удаление". Вопрос конечно в том, почему оно стояло и как можно было случайно нажать на подтверждение удаления. Тестирование и исправление было запущено мною на ночь на двух процессорном серваке с 20+ ГГб ОЗУ. За 12 часов не прошло. Более мощного железа в наличии нет.

Автор: Zaval 01.10.15, 12:42

Можно, конечно, и вариант Dartvader111'а применить.
Обязательно вначале - на копии.
Принцип такой.
Ссылка на элемент - его ид, который видно даже в 1с. Вместо него нужно вставить ид нового элемента.
Я вынужденно возился с СКЛ лет пять назад, насколько помню - нужен набор записей для изменения(запрос), прочитать, перебрать-заменить, записать.
Мож, спецы что лучше подскажут.

ЗЫ. Видать, неплохо фирма на одинэснике сэкономила))

Автор: Talkman 01.10.15, 14:17

Цитата(Zaval @ 01.10.15, 12:42) *
ЗЫ. Видать, неплохо фирма на одинэснике сэкономила))


Спасибо за комплимент

Автор: Zaval 01.10.15, 17:42

Цитата(Talkman @ 01.10.15, 15:17) *
Спасибо за комплимент

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

Есть идея.
Создать новый элемент, полезть в СКЛ и ручками вместо оригинального ид вписать ид невинно убиенного элемента.
Только - вначале на копии!

Автор: Dartvader111 02.10.15, 8:45

Приветсвую! А литтл пример... Смотрим в файле 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 02.10.15, 12:37

Отличные советы. Спасибо, сегодня вечером попробую. Если не прокатит (что по логике врядли) на выходных запущу ТИИ.

Автор: Talkman 05.10.15, 8:46

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua