Имя: Пароль:
1C
 
Удаление объекта метаданных средствами SQL
0 unTonee
 
05.03.09
11:27
Возможно ли такое...
Мне необходимо удалить ДОКУМЕНТ_А средствами SQL, причем так же удалить все ссылки на это ДОКУМЕНТ_А в других документах на него.

Ознакомился с докой на ИТС "Размещение данных 1С:Предприятия 8.1", особо не помогла, смог только вяснить в таблице с каим именем на sql храниться документ и соотвественно выцепить его табличные части.

Как я понимаю необходимо произвести манипуляции еще и с таблицей config...

Друзья, кто сталкивался с такой проблемой - расскажите как и возможно ли это.
1 mikecool
 
05.03.09
11:29
(0) ничего не трогай
2 sanches2
 
05.03.09
11:31
А стандартными средствами удалить нельзя чтоли?
3 unTonee
 
05.03.09
11:31
(1) Я не спрашивал разрешения потрогать. Давайте обойдемся без делинтанских постов - проще говоря флуда.
4 ДенисЧ
 
05.03.09
11:33
Любитель нетрадиционного секса? Так это на других форумах...
5 los_hooliganos
 
05.03.09
11:33
DELETE
FROM
WHERE

Возможно все, но надо не забывать про ссылки в журналах и кое-где еще.
Лучше ИМХО поставить пометку на удаление ср-вами sql, а удалять уже 1ской.
6 unTonee
 
05.03.09
11:33
(2) При реструктуризации возникает ошибка. Каким-то образом при получении конифгурации из Хранилища, завелись некорректные таблицы. Которые при реструктуризации не позволяют выполнить её...
7 los_hooliganos
 
05.03.09
11:34
Так удали некорректные таблицы из базы и из таблицы конфигурации.
8 unTonee
 
05.03.09
11:35
(5) Вы меня не поняли ДОКУМЕНТ - это объект метаданных. А не запись в таблице, как вы посчитали
9 unTonee
 
05.03.09
11:36
(7) Если сделать простой delete валятся ошибки при реиндексации на удаленные объекты. Нужно глубже копнуть удалить все ссылки на эти объекты.
10 Я не курил
 
05.03.09
11:37
Через SQL md можно править? О_о
11 mikecool
 
05.03.09
11:37
тогда тебе еще и в master таблицы лезть нада будет, syscolumns или systables
где то там перечисление полей всех таблиц всех БД...
геморрно больно
12 unTonee
 
05.03.09
11:37
Ну вот ссылка к примеру в Роли, должна быть удалена, ссылка в измерении регистра на объект тоже должна быть удалена.
13 mikecool
 
05.03.09
11:39
может проще найти "правильную" конфигу, обновить хранилище и вытянуть по новой?
может прокатить такой вариант?
14 unTonee
 
05.03.09
11:41
(13) Самый не плохой вариант был использовать стандартную обработку ИТС, которая позволяет выгрузить конфу в XML
И залить ей в новую НОРМАЛЬНУЮ конфу - но по непнятным причинам обработка при выгрузке зависает.
15 unTonee
 
05.03.09
11:42
Как еще можно выгрузить данные из конфигурации? не выгружая саму конфу?
16 unTonee
 
05.03.09
11:45
(11) А где эти таблицы находятся? Про них так же ничего не сказано в доке по размещению данных...
17 hhhh
 
05.03.09
11:50
(9) ну так запусти ТИИ или chdbfl
18 unTonee
 
05.03.09
11:52
(17) что такое ТИИ ?
19 Serg_1960
 
05.03.09
11:53
Конфигурация - Администрирование - Тестирование и исправление...
20 unTonee
 
05.03.09
11:54
(17) chdbfl - для файлового варианта
21 unTonee
 
05.03.09
11:55
(19) Не помогает
Конфигурация - Администрирование - Тестирование и исправление...
22 fisher
 
05.03.09
12:21
Чисто средствами SQL вы объект МЕТАДАННЫХ удалить не сможете. Потому как сама конфа хранится в SQL в виде бинарных данных, а не набора связанных таблиц (таблицы config, поле BinaryData).
Задача решаемая, но её адекватность вызывает громадные сомнения. Прийдется анализировать и использовать очень большой объем недокументированной информации, со всеми вытекающими.
23 unTonee
 
05.03.09
12:31
(22) Если честно, задавая вопрос в (0), думал, что кто-нибудь поможет расшифровать именно поле binarydata . Если я правильно понял, весь корень зла именно в нем.
24 fisher
 
05.03.09
12:41
(23) Корень зла в том, что недокументированные способы работы с данными и метаданными чреваты своей непредсказуемостью. Не отследив все взаимосвязи (а так оно и будет), вы рискуете заложить в свою базу ряд мин замедленного действия.
Может, вы снизойдете до объяснения конечной цели своих манипуляций? ЗАЧЕМ это делать и почему делать это ИМЕННО ТАК? Может, коллективный разум сможет предложить разумную альтернативу?
25 Serg_1960
 
05.03.09
12:52
Имхо, такой глюк надо в несколько "этапов" вычищать. Сначало удалить ссылки на документ в тех объектах, которые не "валят" реструктуризацию. Потом (средствами SQL) удалить данные в тех таблицах, которые "валятся". И повторить первый пункт...
26 Serg_1960
 
05.03.09
12:59
(24) +1 С "разбегу" проблему не получилось решить - автор, колись подробностями :)
27 unTonee
 
05.03.09
13:05
Поясню ситуацию:
Работаем мы вот так: РАБОЧАЯ БАЗА - хранилище конфигурации - ПРОГРАММИСТЫ
При добавлении в РАБОЧУЮ БАЗУ документов - произошел глюк какой-то глюк - на следующий день работы вываливалось сообщение relation _document4990 does not exist... Выяснилось что document4990 - это документ ЗаданиеНаПриозводство, который делает обороты по регистру ПартииТоваров. И это ошибка вылетала, потому, что не было проставлено право доступа на чтение документа ЗаданиеНаПриозводство у всех ролей, которым необходимо работать с регистром.
Далее все было нормально БАЗА работала, но 3-мя документами никто не пользовался. Когда начала захотели полпользощваться, началаи вылетать сообщения типа relation ТАКОЙ-ТО does not exist и т.п. Решили, что эти документы надо удалить из рабочей базы, обойдя хранилище, удалить объекты в хранилище и заоить из по новой...  Вообщем теперь при попытке удаления в РАБОЧЕЙ базе этих документов выдается сообщение:
В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка СУБД:
ERROR:  relation "_docume4990_vt5206_intkeyind" does not exist
28 unTonee
 
05.03.09
13:58
(27) В посте не точно описал: При добавлении в При добавлении в РАБОЧУЮ БАЗУ трёх документов

Во время выполнения ТИИ (Тестирование и исправление ИБ)
вылетает ошибка :
Ошибка СУБД:
ERROR: relation "_document4990_vt5206" does not exist
29 unTonee
 
05.03.09
14:31
На наверно все обед ушли?
30 unTonee
 
05.03.09
15:54
uppp.
31 fisher
 
05.03.09
16:41
Сложно что-то посоветовать. Никогда с подобной ошибкой не сталкивался...
Если я правильно понял смысл ругательств 1С - структура метаданных не совпадает со структурой данных БД. Причем в БД нет кой-чего, чего там быть должно в соответствии с текущей версией метаданных.
Чтобы попробовал сделать я в подобной ситуации (ессно, на копии):
Выгрузил из рабочей базы cf и поднял под ним пустую базу.
Потом очень внимательно сравнил структуры пустой базы и рабочей (или можно отталкиваться от ругательств). Т.е. чего не хватает (полей, таблиц, индексов и т.д.) - создать в рабочей 1:1 как в пустой. Когда ругаться перестанет, лучше всего штатно удалить из рабочей эти объекты метаданных и потом штатно создать их по новой (чтобы 1С корректно разобралась со всеми хвостами).
32 Vippi
 
05.03.09
16:51
(29) На наверно.
Делинтанты, мля.
С ЗаданиеНаПрИОзводство справиться не могут.
33 unTonee
 
05.03.09
17:17
(31)
Вы абсолютно верно вникли в проблему....
Проблема в том - что Ваш совет я уже пробовал. НО при загрузке CF файла имена документов , реквизитов, заводятся в БД каждый раз с другими именами... -)
Есть еще один вариант, если получится отпишусь...
34 unTonee
 
05.03.09
17:18
(32) Проверка орфографии выполнена ? -))

Ваши предложения?
35 fisher
 
05.03.09
17:42
(33) Вы хотите сказать, что при загрузке одного и того же cf в пустую базу несколько раз подряд, каждый раз генерятся разные имена таблиц и полей??
36 Immortal
 
05.03.09
17:46
(35) ну не каждый раз, но что разные могут быть это да
37 unTonee
 
05.03.09
17:47
(35) Я хотел сказать, что при выгрузке CF файл-бэкапа с нормально работающей БД, т.е. вчерашщнего бэкапа - при заведении в новой БД и загрузки CF в новую БД - имена таблиц и полей - заводятся по-новому т.е. имеют другие имена.


Я не пробовал в пустую БД заливать насколько раз один и тот же CF файл.
38 unTonee
 
05.03.09
17:54
Интересно бы было узнать как связаны записи в таблицу config
с названиями таблиц документов.
Фактически проблема:
в таблицу config
попали записи на таблицы _documentXXXX_vtXXXX
которые не существую, но как их удалить из config - неизвестно...  Пока неизвестно....
Как расшифровать поле binarydata (22)(23)
39 Vippi
 
05.03.09
17:56
(34) Мои предложения - пригласить специалиста.
Нельзя методом тыка работать с данными, не владея нужными знаниями.
И советчики в этой ветке примерно такого же уровня.
Доступно и всерьез (с)
40 unTonee
 
05.03.09
18:09
(39) Контакты достойного спеца подскажите ?
41 fisher
 
05.03.09
18:09
(37) Блин, хреново...
Можно попробовать создавать таблицы/поля методом научного тыка - на что ругается, то и создавать. Изначально стараясь придерживаться структуры схожих объектов конфигурации, чтоб уменьшить количество итераций...
42 unTonee
 
05.03.09
18:12
(41) пробовал пробема с типами
43 unTonee
 
05.03.09
18:12
(41) и долго
44 Serg_1960
 
05.03.09
18:16
(29) Сорри, на работе озадачили проблемой - не могу Вам уделить и грамма внимания :( Обсудите без меня варианты:
- выгрузить конфу БД (Конфигурация - Конфигурация базы данных - Сохранить конфигурация БД в файл) и сравнить с рабочей конфой - нужно уточнить расхождения;
- вернуться к конфе БД (Конфигурация - Конфигурация базы данных - Вернуться к конфигурации БД) - если рабочая конфа и конфа БД различны.
45 unTonee
 
05.03.09
18:18
(44) Пробовал не катит... -)
46 LamerSuper
 
05.03.09
18:18
Варианты починки базы пр  всяких сбоях вроде такие
1) Выгрузка cf и загрузка в чистую (это уже было тут)
2) Выгрузка dt и загрузка обратно
3)Выгрузка XML и загрузка в чистую созданную с помощью CF
4)Создание образа узла и установка для него что он центральный.
Больше я не знаю.
47 fisher
 
05.03.09
18:19
(42) Понял. Погодь.
Кажись, была программка, умеющая выдавать физическую структуру БД по метаданным. Счас повспоминаю/пороюсь...
48 unTonee
 
05.03.09
18:19
(46) 3) Выгрузка в XML - подвисает... -((((
49 unTonee
 
05.03.09
18:19
(47) У меня есть... Это внешняя обработка
50 Serg_1960
 
05.03.09
18:21
(45) Что именно не катит? Конфа БД выгружается или это тоже глючит?
(49) StrBaseSQL.epf
51 LamerSuper
 
05.03.09
18:22
+(46) Наверно можно еще извратиться поставить чистую БД из cf.
Установить конвертацию данных.
Создать правила все возможные.
И с помощью этого выгружать /загружать.
52 unTonee
 
05.03.09
18:22
(50) Выгружается в CF, но в DT не выгружается...
53 unTonee
 
05.03.09
18:23
(51) На крайний случай попробуем
54 unTonee
 
05.03.09
18:25
Сейчас родилась сумасшедшая идея... Попробуем...
55 LamerSuper
 
05.03.09
18:25
Озвуч
56 Serg_1960
 
05.03.09
18:26
(52) Конфа БД выгружается в CF и загружается в рабочую (Конфигурация - Загрузить конфигурацию из файла) - можно сделать ТиИ и начинать удалять...

Вернусь через пол-часа - час, - сорри
57 unTonee
 
05.03.09
18:28
(56) Пробовал - Х/У\Й! 1С:Предприятие вылетает, с ошибкой отправить сообщение в майкрасофт - даже ругнуться не успевает! -))
58 LamerSuper
 
05.03.09
18:29
Попробуй 4 из (46).Должно.
59 unTonee
 
05.03.09
18:31
(4) Я вот не понял как это можно сделать?
60 unTonee
 
05.03.09
18:31
(58) Я вот не понял как это можно сделать?
61 LamerSuper
 
05.03.09
18:33
В планах обмена Полный создаешь узел распределенной БД. Потом входишь в эту созданную базу конфигуратором и запускаешь внешнюю обработку
УстановитьГлавныйУзел(Неопределено). В итоге новая копия твоей базы. Ее можно в dt
62 unTonee
 
05.03.09
18:37
(61) Ок... Сейчас закончу свой эксперимент - если не по прет тогда - по-вашему сделаю...
63 LamerSuper
 
05.03.09
18:37
(62) А свой то озвуч.
Мне интересно.
64 unTonee
 
05.03.09
18:43
Сейчас у нас физически нет этих таблиц, но есть бэкап, который имеет имена таблиц в SQL, но они (имена таблиц) не верные на конце имеют дописку ng.
Пример: _document4990_vt5206ng
а 1С:Предприятие при выгрузке .dt файла ругается что не может найти таблицу _document4990_vt5206 (т.е. без ng)


и так порядок действий таков:
1) из бэкапа создаю в SQL таблицы - CREATE table - и понеслась - благо с скуэль много работал
2) далее убираю а них дописку ng и пробую выгрузить в файл 1CD всю конфу
3) прохожу выгруженную конфу утилитой chdbfl
4) Загружаю обратно на сервак
65 LamerSuper
 
05.03.09
18:44
Сильно.
Получилось?
66 unTonee
 
05.03.09
18:44
(65) пробую - обязательно отпишусь -)))
67 LamerSuper
 
05.03.09
18:45
Хорошо что в асемблере не работал:)
68 unTonee
 
05.03.09
18:47
(67) Кто сказал ???? =))))
69 unTonee
 
05.03.09
18:56
Вот только не могу найти как выгрузить конфигурацию в файл формата 1CD ??
70 fisher
 
05.03.09
19:07
(49) Так в чем проблема? Смотрим, какая должна быть структура недостающей хни и создаем её.
71 Мелкий бес
 
05.03.09
19:09
в явном виде ссылка на документ может и отсутствовать - попробуй заменить тип ДокументСсылка на конкретные типы без вирусного документа
72 eklmn
 
гуру
05.03.09
19:14
(69) для этого надо выгрузить в 1см8.dt, создать ситую в файле и залить дтшник
73 eklmn
 
гуру
05.03.09
19:16
я так понимаю ты обновился и у тебя началась такая фигня?
74 unTonee
 
05.03.09
19:17
нее.. Жто произошло после залития новых доков из хранилища...

или что ты имел ввиду под - обновился?
75 unTonee
 
05.03.09
19:18
(72) Ок спасибо...

А как потом опять перенести в .dt из .1CD ?
76 eklmn
 
гуру
05.03.09
19:20
выгрузить так же :))
77 eklmn
 
гуру
05.03.09
19:21
(74) я имею ввиду платформу на 13 не обновляли?
78 unTonee
 
05.03.09
19:22
(77) Обновляли! У нас сейчас самая последняя стоит 1С:Предприятие 8.1 (8.1.13.41)
А что в этом глюк - кстати знаю еще один конкретный глюк платформы - но ни как не могу написать в 1С...
79 eklmn
 
гуру
05.03.09
19:30
(78) я заметил это у многих, да и сам столкнулся.
У меня была запара на СФвыданных, точнее на её проводках 76.АВ, везде где фигурировал 76.АВ валило 1Ску, молча.
Ошибка другая правда, но диагноз тот же.
просто перед тем как обновиться, расправел все СФ, закрытие месяца, книгу и т.д.
потом только обновлял, вроде пока фурычит. Правда после обновления он мне все СФ убил нахрен собака :)
80 unTonee
 
05.03.09
19:31
(79) ЖЕСТЬ! Вот за это я и не люблю 1С - кривота. Я раньше с банковским бэкофисом работал - системки покруче были! А здесь как из говна и пыли все слепили...
81 eklmn
 
гуру
05.03.09
19:34
(80) тоже хотел скулем, как ты кстати, почикать, ан нет, не получиться, даже не парься.
82 SnarkHunter
 
05.03.09
19:37
Я сегодня не такой как вчера -
Я вчера был ростом выше на метр
И в плечах гораздо шире был я,
Да и был шишками покрыт, словно кедр...
83 SnarkHunter
 
05.03.09
19:38
Затвра тоже сильно я изменюсь -
Буду я горбатый и с бородой,
Вот такой я, понимаете, гусь,
Вот такой вот я мужик заводной...
84 unTonee
 
05.03.09
19:40
(82)(83) -)))) Стебайтесь - стебайтесь а я все-равно все сделаю -)))
85 unTonee
 
05.03.09
19:41
(81) Я думаю все будет - ОК!
86 SnarkHunter
 
05.03.09
19:43
Я не хвастаюсь вам, но у меня
Изменяется набор хромосом
Лишь намедни я был белым конем,
А сегодня я - Буденный на нем!

Но не я один на свете таков
Нынче может измениться любой
А вот припрется к вам сейчас unTonee -
Вы, ведь, хрен поймете кто он такой...
87 unTonee
 
05.03.09
19:52
(86)
Жил в Москве один товарищ,
Трубку крепкую курил
Вот и умер, потому что
За здоровьем не следил...
88 unTonee
 
05.03.09
20:04
(81) А как вы вышли из сложившейся ситуации ?
89 unTonee
 
05.03.09
20:04
(81) поподробнее...
90 eklmn
 
гуру
05.03.09
20:51
(88) см (79)
91 unTonee
 
05.03.09
21:19
Полёт - нормальный!

Уже chdbfl проверяет 1CD файл! УРА!
92 unTonee
 
05.03.09
21:58
Проверка окончена - идет выгрузка в .dt файл -)
93 eklmn
 
гуру
05.03.09
22:07
рано радуешься,chdbfl может сказать что ошибок не обнаружено, а диагноз останется :)
94 Мимохожий Однако
 
05.03.09
22:08
95 unTonee
 
05.03.09
22:17
(93) Да ладноо... -(((
97 bahmet
 
06.03.09
00:28
посодют, всех вас нах посодют...
98 Serg_1960
 
06.03.09
08:41
(0) Как дела? Проверка структуры chdbfl, имхо, не помогла сбойные данные восстановить?
99 unTonee
 
06.03.09
09:35
(98) Вроде все - ок. Возможно действительно chdbfl и не помогла, ща проверю - что и как...
100 КапЛей
 
06.03.09
09:36
100
101 unTonee
 
06.03.09
10:00
Ситуация такая была:
Все таблицы SQL существовали(часть из бэкапа, где система работала более-менее нормально), которые необходимы для документов 1С:Предприятия, но названы были не верно. Методом тестирования - было выявлено отсутствие записи ключа. В результате был создан руками на SQL. Таблицы были либо перименованы, либо заведено по новой.
Все глючные имена таблиц были поправлены на правильные (те которые ругался 1С), старые таблицы не удалялись(заведенные с ошибочными именами).
В результате получилось перегнать SQK версию ИБ в .dt файл. После был создана новая ИБ и загружен .dt файл.
Потом файловый вариант ИБ был проверен chdbfl - ошибок - нет.
Проверена работоспособность документов, которые были глючные - вск ОК, но на всякий случай их удалили, т.к. они не использовались в системе (в дальнейшем их зальем).

1CD - загружена в SQL. Все работает - как надо!


Понятно что помог - просто перегон БД из файла - в SQL.
После просомтра SQL-структуры вновь загруженной ИБ - на первый взгляд все выглядит - работоспособным и на деле тоже работоспособно.
102 unTonee
 
06.03.09
10:07
Всем .Б.А.Л.Ь.Ш.О.Е. спасибо - кто помогал! -)
А особенно:
mikecool
fisher
LamerSuper
Serg_1960
hhhh
eklmn
Мелкий бес

За песни спасибо: SnarkHunter - творческая личность -)
И КапЛей за сотый пост - респект - успел!
103 Serg_1960
 
06.03.09
10:11
Круто Вы с базой, однако... Успехов Вам :)
104 fisher
 
06.03.09
10:44
(101) Ну, вот...
Нет, чтобы пригласить специалиста...
:)))
ЗЫ. Спасибо за подробный отчет.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.