Имя: Пароль:
1C
1С v8
Для знатоков SQL
0 pochemu
 
18.12.12
16:55
Обновлял как-то базу динамически - нарушилась целостность структуры... Из бэкапа восстановил таблицу dbschema и база заработала. Но потом оказалось, что если в один документ добавить реквизит, то база не обновлялась, вылетает ошибка. Скорее всего это из-за того, что в dbnames прописан столбец в этом документе, которого на самом деле не существует.. Вот я и хочу прочитать в таблице Params бинарную запись dbnames, изменить что мне надо и засунуть изменения обратно. Как это можно осуществить?
1 Defender aka LINN
 
18.12.12
16:59
(0) Рекомендую предварительно закупить пару банок вазелина
2 mikecool
 
18.12.12
17:01
рискну предположить, что бинарник там - это хмл, но не факт
а в обчем - не с той стороны ты начал бутерброд есть, дядя Федор, имхо
3 pochemu
 
18.12.12
17:01
(1) База работает нормально, все данные на месте. Проблема только в одном столбце одного документа, не дает метеданные этого дока менять..
4 pochemu
 
18.12.12
17:03
(2) С какой надо? Находил на форумах, что доставали данные и заменяли их. Но не раскрывалась сам механизм.. Читал, что данные надо разархивировать еще.
5 samozvanec
 
18.12.12
17:04
тестирование исправление? просто выгрузить-загрузить дт? что-то из этого пробовал?
6 pochemu
 
18.12.12
17:05
(5) Тестирование-исправление не помогло, всю ночь делалось. ДТ - выгружать - загружать, слишком долгая тема, да и места на  диске мало сейчас (оставлю на последок).
7 samozvanec
 
18.12.12
17:08
(6) с цфкой из бекапа можно попробовать объединить полностью. я бы такие действия в первую очередь попробовал, так как алгоритмы закрытые, что конкретно делают - хз. может возьмет и сформирует тебе dbnames по структуре базы, мало ли, что разрабы курили
8 Evg
 
18.12.12
17:09
(0) тут не нужно особых знаний sql, топик неправильный.
9 Hipernate
 
18.12.12
17:10
тут SQL и не пахнет, причем тут знатоки SQL??
10 pochemu
 
18.12.12
17:12
(7) Хм, я вначале просто попробовал - выгрузил cf из бэкапа, загрузил на касячную базу - не помогло. Но это было до того, как я структуры таблиц SQL синхронизировал и заменил dbschema. Сейчас еще разок попробую. Но читать данные из SQL и записывать обратно - это было бы круто даже если бы и небыло у меня проблемы с базой..
11 pochemu
 
18.12.12
17:17
(9) Как не пахнет? Есть запись в SQL.... читать её, записать её, 1С... Те кто SQL 1С-овской постоянно зависает - наверняка знают как читать и записывать бинарные файлы..
12 МихаилМ
 
18.12.12
17:20
(0)
запись dbnames сжата алгоритмом deflate

http://msdn.microsoft.com/ru-ru/library/system.io.compression.deflatestream.aspx
13 pochemu
 
18.12.12
17:25
(12) Спасибо. А в 1С-ке или delphi не находил примеров использования?
14 Hipernate
 
18.12.12
17:25
сначала пробуй простые способы потом используй лом и молоток(6)
15 pochemu
 
18.12.12
17:28
(14) Мне интереснее научиться читать-записывать, да и время не жмет (документ не типовой)
16 sda553
 
18.12.12
17:41
А что хоть за ошибка то вылетает при обновлении? Какой текст?
17 samozvanec
 
18.12.12
17:43
(16) вопрос по сути гениален, поддерживаю)
18 pochemu
 
18.12.12
17:44
В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Не удалось вставить значение NULL в столбец "_Fld28219", таблицы "StalTestZUP.dbo._Document22276NG"; в столбце запрещены значения NULL. Ошибка в INSERT.
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=2, Severity=10, native=515, line=1
19 pochemu
 
18.12.12
17:45
(17) Ну я вопрос задавал в форме, которая по сути знания текста ошибки не требует..
20 pochemu
 
18.12.12
17:46
(16) Вот мне и надо этот столбец "_Fld28219" (18) Удалить...
21 olegves
 
18.12.12
17:50
(18) у тебя похоже описание конфигурации не содержит инфы по полю _fld28219, так что придется лом брать.
Спрашивается: зачем ломал конфу средствами скуля? Получил приключений на свою ж*пу
22 olegves
 
18.12.12
17:52
(20) кури ALTER TABLE
23 pochemu
 
18.12.12
17:53
(21) я структуры синхронизировал, только данные о структуре не синхронизировались до конца, вот и хочу досинхронизировать. Ничего тут страшного нет, данные не теряются. Это всего-то проблема с парой записей, которые надо удалить.
24 stix2010
 
18.12.12
17:54
(0) вообще то надо начинать с ConfigSave
25 pochemu
 
18.12.12
17:55
(22) Ты не понял. Есть таблица Params, в ней есть запись DBNames, в этой записи есть данные бинарные, в этих бинарных данных содержится инфа о конфе. Вот мне эти данные и надо поправить, а не удалить столбец..
26 pochemu
 
18.12.12
17:56
(24) С этого было начато, но не помогло, поскольку структура базы данных поменялась. Я конечное решение привел.
27 pochemu
 
18.12.12
17:57
(22) Как тут уже было сказано (12) Надо мне научиться пользоваться алгоритмом сжатия, да и всё.
28 vmv
 
18.12.12
17:57
(0) загрузи в файловую, выполнни все операции по профилактике(утилита ремонта таблиц, крушение битых ссылок, и т.д. в режиме тестирования/исправления)

потом закугрузи в скуль "хорошую"

другой путь копаться в дебрях скуля, но это путь когда вариант 1 не дал результата и последний на порядок гемморойней
29 samozvanec
 
18.12.12
17:59
(18) я, конечно, может, глупость скажу, но пробовал ли ты ставить флаг нулл у столбца? и есть ли столбец?
30 pochemu
 
18.12.12
18:00
(28) Это я использую, если забью на SQL. Мне так интереснее, да и на будущее пригодится.
31 pochemu
 
18.12.12
18:00
(29) - (25)
32 pochemu
 
18.12.12
18:01
(29) Инфа о наличии столбца находится в бинарных данных, в самой-же реальной структуре его просто нет.
33 vmv
 
18.12.12
18:04
(30) организация таблиц и связей структур данных 1С в классических реляционных СУБД понятна только разработчикам платформы и людям, которые для них собирали грибы - удачи)
34 stix2010
 
18.12.12
18:08
реквизит переименуй в конфигураторе и сохранись и обратно
35 Serginio1
 
18.12.12
18:11
(0) Интересно это ноги растут отсюда v8: Тем кто в SQL шарит
или зайцы плакали но ели кактус?
36 MaxS
 
18.12.12
18:15
Сделать копию базы без данных и экспериментировать на ней. Если получится починить, из копии перенести конфигурацию в рабочую базу.
37 Serginio1
 
18.12.12
18:27
38 denfil
 
18.12.12
20:05
У меня такая шляпа произошла когда при обновлении файловой базы вырубили свет.

2 недели попыток, восстановления этой таблицы прошли зря. Связей и структуры этой таблицы мне мне понять не дано. Хотя структура файла аналогична ALS-файлу. Но связи с другими таблицами я не нашел. Тестирование и  прочие типовые средства либо ни чего не находят либо вываливаються с ощибкой.
Не помню   точно как победил. Но косяк был с недавно добавленным реквизитом. Поэтому вставил в файл cf-ник и DBSchema из копии, а потом тестирование и  исправление.
39 Ferz
 
18.12.12
23:22
(0)в Ei это можно сделать. Да действительно отсутствующий столбец  описанный в DBNames может приводить к ошибке. Но не единым DBNames,,,,

более подробнее тут http://blog.1c-ei.ru/2012/12/blog-post.html
40 _Demos_
 
18.12.12
23:56
DROP TABLE AdventureWorks2012.dbo.SalesPerson2 ;
как пример
смотри ничего  не перепутай)))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший