Имя: Пароль:
1C
 
Кто поможет в SQL базе убить нужную запись?
0 Капюшон
 
08.06.10
20:01
Дело в том что версия 1с Управление торговлей была файловой и при отключении питания порушилась одна записьв таблице. При попытке открыть документ, из базы выбивало. Я уже открывал ветку на эту тему и решение было найдено. Единственное решение это перевести Базу на SQL версию и там внутри SQL сервера грохнуть запись, которая выдаётся в качестве ошибки. Ошибка возникает при "тестирование и исправление информационной базы

erver: Не удалось вставить значение NULL в столбец "_Fld4995_TYPE", таблицы "temp.dbo._Document203_VT4975NG"; в столбце запрещены значения NULL. Ошибка в INSERT.
HRESULT=80040E2F, SQLSrvr: Error state=2, Severity=10, native=515, line=136

Как бы мне сейчас в SQL сервере грохнуть эту запись?
1 Дикообразко
 
08.06.10
20:04
ну зайди и убей
2 Fram
 
08.06.10
20:04
(0) а chdbfl.exe не помогло на фаловой версии?
3 iamnub
 
08.06.10
20:04
Нет.
Судя по всему - не запись убивать надо.
4 Капюшон
 
08.06.10
20:05
(2)не помогло. вобще ничего не помогало.
5 Капюшон
 
08.06.10
20:05
(3)а что тогда?
6 Fram
 
08.06.10
20:06
судя по ошибке не запись убивать надо а разрешить NULL в указанном столбце
7 iamnub
 
08.06.10
20:06
Тебе этот документ грохнуть надо.

У него одно из свойств - NULL, а NULL вставлять нельзя.

Он при открытии пытается вставить какие-то значения во временную таблицу.

Надо отловить - что он пытается вставить. И либо заполнить значение, либо грохнуть документ.
8 Fram
 
08.06.10
20:06
(0) а что за объект узнал?
9 iamnub
 
08.06.10
20:07
(6)
Ага. Круто придумал.

Я думаю, что нужно просто принудительно удалить документ. Насовсем. И все станет хорошо.
10 Капюшон
 
08.06.10
20:08
(7)а каким образом этот документ грохнуть? любые попытки из режима 1с предприятия обратиться к нему приводят к выходу базы из строй. хоть пытаешься его пометить на удаление. хоть програмно пытаешься его удалить.
11 Kashemir
 
08.06.10
20:08
Судя по тексту ошибки, проблема с типе колонки табличной части документа _Document203, содержащий реквизит _Fld4995_TYPE.
12 Fram
 
08.06.10
20:09
(7) мне кажется у него база temp называется
13 Капюшон
 
08.06.10
20:09
(8) да. это объект "реализацияторваровуслуг". даже конкретно знаю какой документ это. но с ним программа ничего не даёт сделать. и не могу понять почему так.
14 Капюшон
 
08.06.10
20:10
(11)да. проблема есть. только я не могу этот документ удалить никак.
15 Капюшон
 
08.06.10
20:10
(12)да. база Temp называется в sql сервере.
16 Капюшон
 
08.06.10
20:10
(9)а как его принудительно удалить? он ведь не даёт ничего с собой сделать.
17 Fram
 
08.06.10
20:11
(9) я ж говорил ))
18 iamnub
 
08.06.10
20:11
Удали из SQL-ля.
Из таблицы шапок и из таблиц табличной части.
19 Kashemir
 
08.06.10
20:11
(16) А если грохнуть реквизит, предарительно создав временный и слив туда всю инфу раннее содержащуюся в старом ?
20 Fram
 
08.06.10
20:12
(18) знал бы он еще какая запись
21 Капюшон
 
08.06.10
20:14
(19)попробую сейчас грохнуть этот реквизит
22 Fram
 
08.06.10
20:14
(21) а (6) не хочешь попробовать?
23 Капюшон
 
08.06.10
20:14
(18)а вот как действительно сделать это?
24 Капюшон
 
08.06.10
20:15
(22)тоже хочу. только не знаю как. щас буду думать
25 Fram
 
08.06.10
20:16
(23) если знаешь ключ записи то без проблем
26 iamnub
 
08.06.10
20:16
Поле Fld4995
Таблица Document203
Значение NULL

(22)
Да таблица может на лету создаваться - как он разрешит??
27 Fram
 
08.06.10
20:16
(24) никогда не создавал и не редактировал таблицы в MS SQL
28 Fram
 
08.06.10
20:16
+ (24) ?
29 iamnub
 
08.06.10
20:19
SELECT * FROM Document203
WHERE Fld4995 IS NULL

И смотри что за запись.

Названия могут отличаться - надо смотреть
30 Fram
 
08.06.10
20:22
а почему интересно ТиИ пытается в эту таблицу запись добавить?
31 Fram
 
08.06.10
20:22
(29) думаешь такая запись там есть?
32 levlvov
 
08.06.10
20:23
нука пустите меня в базу, счас я там поудаляю все на х***...
33 Kashemir
 
08.06.10
20:24
(29) Вобщем то таблица _Document203_VT4975NG - это табличная часть документа _Document203
34 Ковычки
 
08.06.10
20:24
(3) автора что ли ?
35 iamnub
 
08.06.10
20:25
(30)
В качестве предположения - он сначала копирует все в темп - а потом шуршит там. ЧТоб типа не сразу в основной.

(33)
Тем лучше.

(34)
LOL

(32)
))))))))))))))
Пустите нас всех в базу - мы сделаем все красиво!
36 Капюшон
 
08.06.10
20:25
(33)а вот как бы эту табличную часть грохнуть?
37 iamnub
 
08.06.10
20:26
(36)
Ты не торопись грохать-то!!!

Что в реквизите Fld4995?
38 Капюшон
 
08.06.10
20:28
(37)там надпись "двоичные данные"
39 Ковычки
 
08.06.10
20:29
замени во всех таблицах нулл на "пусто" в зависимости от типа поля
40 iamnub
 
08.06.10
20:30
Запости сюда ID
41 iamnub
 
08.06.10
20:30
ID документа
42 Fram
 
08.06.10
20:30
(38) а в структуре метаданных что это за поле?
43 Kashemir
 
08.06.10
20:31
(36) Вряд ли поможет, проблема имхо в том, что конфигурация содержит инфу о том что данная колонка может содержать  значения типа NULL в отличии от фактической.
44 Капюшон
 
08.06.10
20:31
(41)_Document203_VT4975
(42)ЗначениеУсловияАвтоматическойСкидки
45 iamnub
 
08.06.10
20:32
(44)
ID документа, а не название таблицы.

Как найти ID - смотри (29)
46 Kashemir
 
08.06.10
20:36
(44) Какое значение колонки в SQL у свойства "Разрешить неопределенные значений" ?
47 Капюшон
 
08.06.10
20:37
(45)Сообщение 208, уровень 16, состояние 1, строка 1
Недопустимое имя объекта "Document203".
48 Капюшон
 
08.06.10
20:38
(46)true там стоит теперь. я поменял. но всеравно выбивает
49 iamnub
 
08.06.10
20:38
(47)
Ну ты дал. Названия-то нао заменить на реальные - я ж схематично!
50 Kashemir
 
08.06.10
20:38
(47) Вобщем-то вот так не будет выбивать
SELECT * FROM _Document203_VT4975
WHERE _Fld4995_TYPE IS NULL
51 Капюшон
 
08.06.10
20:43
(49)
SELECT * FROM _Document203_VT4975
WHERE _Fld4995_TYPE IS NULL

не выдал ни одной записи
а запрос

SELECT * FROM _Document203_VT4975
WHERE _Fld4995_TYPE IS not NULL

выдал кучу записей. и везде в поле стояло значение 0х01
52 iamnub
 
08.06.10
20:46
SELECT DISTINCT _Fld4995_TYPE  FROM _Document203_VT4975
53 Капюшон
 
08.06.10
20:48
(52)ВЫДАЛ две записи. одна 0х00 а вторая 0х01
54 Капюшон
 
08.06.10
20:48
(52)вы здорово разбираетесь! спасибо!
55 iamnub
 
08.06.10
20:49
Все получилось?
56 Капюшон
 
08.06.10
20:49
(55)не всё! просто он показал что гдето есть нулевое значение. а сейчас попытаюсь запрос переделать чтобы выйти на нужную запись
57 Kashemir
 
08.06.10
20:49
(55) А что могло получится :) Тип бинари это и есть значения 0х00 и 0х01 :)
58 Капюшон
 
08.06.10
20:50
(55)и ещё както её удалить нужно. А ещё паралельно пытаюсь взять конфигурацию УТ того же релиза типовую и сделать "загрузить конфигурацию". может поможет?
59 iamnub
 
08.06.10
20:50
(57)
Я бы изменил 0x00 на 0x01
60 Kashemir
 
08.06.10
20:51
(57) Когда наиграешся ... предлагаю вернуться к (19). Проблема скорее в конфигурации, а не данных.
61 iamnub
 
08.06.10
20:53
(60)
Зависит от.
Хотя база скорее всего маленькая - раз была в файловом варианте.
Грохнуть реквизит, потом его создать и?

Перезаписать все документы? Перепровести? А сколько их там?

Проще тогда проставить нужный опять-таки скульным запросом.

То есть - те же "игры"
62 Капюшон
 
08.06.10
20:54
(61)база 350 метров. в ней документы за 2010 год. но их немало.
63 Капюшон
 
08.06.10
20:54
(61)а помогите пожалуйста запросом поменять значения?
64 iamnub
 
08.06.10
20:55
(63)
ЩАЗ
65 iamnub
 
08.06.10
20:56
ЧТо выдаст
SELECT TOP 1 _Fld4995_TYPE  FROM _Document203_VT4975
66 Капюшон
 
08.06.10
20:58
(65)0х01
67 Kashemir
 
08.06.10
20:58
(61) Зачем же перепроводить. Достаточно перезаписать.
68 iamnub
 
08.06.10
20:58
UPDATE _Document203_VT4975
SET _Fld4995_TYPE = (SELECT TOP 1 _Fld4995_TYPE  FROM _Document203_VT4975)

Но смотри - ты начинаешь изменять базу. Надо делать на копии.
69 iamnub
 
08.06.10
20:59
(67)
Откуда ж я знаю - что у вас там. Может этот реквизит черте где участвует.
70 Капюшон
 
08.06.10
21:01
(68)кстати я нашел эти поганые нулевые значения знаете как?
SELECT * FROM _Document203_VT4975
order by _Fld4995_TYPE

только ручками не смог их изменить
71 iamnub
 
08.06.10
21:03
(70)
В (68) запрос которые изменит данные
72 Капюшон
 
08.06.10
21:04
(71)он поменял данные! крутой запрос. а из базы всеравно выбивает (( а вобще как можно убить этот документ? он ведь единственный кто вызывает проблему
73 Kashemir
 
08.06.10
21:04
Лана вот вам на закусь :)

Типы полей ,хранящие значения составного типа :
...
Суффикс _TYPE
Тип поля  BINARY(1)
Когда присутсвуюет: всегда
Назначение: Содержит идентификатор фактического типа: Булево, Число, Строка, Дата или ссылка.
...
74 borozavr
 
08.06.10
21:06
(70) да поменяй через энтерпрайз менеджер
75 Капюшон
 
08.06.10
21:08
Я ещё сейчас взял. из типовой конфигурации cf файл и загрузил его через конфигуратор как "загрузить конфигурацию". может поможет?
76 iamnub
 
08.06.10
21:08
(72)
Хм. Дело в следующем реквизите?
77 iamnub
 
08.06.10
21:10
(75)
Ну ты ЖЖОЖ.

База-то типовая? Судя по всему - как ты лихо менял в конфигурации - она НЕ типовая
78 Капюшон
 
08.06.10
21:11
(77)ну конфигурация с дописками но я их восстановлю. это не так страшно. просто мне важно понять как решить проблему.
79 iamnub
 
08.06.10
21:11
Запусти сейчас ТиИ
80 iamnub
 
08.06.10
21:12
Из базы может выбивать по разным причинам.

Но проблему вылета ТИИ мы сейчас вроде как устранили.
81 Капюшон
 
08.06.10
21:12
(80)а что такое ТИИ ?
82 Капюшон
 
08.06.10
21:13
ааа понял
83 Капюшон
 
08.06.10
21:13
запустил
84 iamnub
 
08.06.10
21:15
(78)
Дописки <>  изменения структуры метаданных.
Можно очень круто влететь.
85 Капюшон
 
08.06.10
21:18
(84)вот представляете. он в ТИИ дошел до этого документа и выдал что нарушена в этом документе нумерация строк табличной части и что типа она восстановлена теперь. Вот проверим как будет сейчас запускаться
86 Капюшон
 
08.06.10
21:21
И ещё ТИИ прям для этого документа во всех регистрах. которые он двигал выдавала ошибки.
87 iamnub
 
08.06.10
21:23
И что в итоге-то?
88 Капюшон
 
08.06.10
21:25
(87)досихпор тестирование и исправление идёт. сейчас уж закончится.
89 Капюшон
 
08.06.10
21:29
(87). эх вот что теперь
В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Не удалось вставить значение NULL в столбец "_Fld7566_TYPE", таблицы "temp.dbo._AccumRegTurnovers7584NG"; в столбце запрещены значения NULL. Ошибка в INSERT.
HRESULT=80040E2F, SQLSrvr: Error state=2, Severity=10, native=515, line=1
90 Капюшон
 
08.06.10
21:30
(89)похоже также лечится проблема
91 Капюшон
 
08.06.10
21:40
(87)всё. спасибо вам большое! очень помогли. на том документе уже не выкидывает. а дальше уж я сам смогу. или на край завтра помогут
92 iamnub
 
08.06.10
21:56
(91)
)))))))
93 Капюшон
 
08.06.10
22:54
вот ещё
UPDATE _AccumRegTurnovers7584
SET _Fld7566_TYPE = (SELECT TOP 1 _Fld7566_TYPE  FROM _AccumRegTurnovers7584)
94 Fram
 
08.06.10
23:16
(92) а че ты радуешься? ему помогло то что NULL разрешил, поэтому у него ТиИ прошло
95 Fram
 
08.06.10
23:19
+(92) это следует из (0) + (6) + (48) + (85)
(93) продолжай разрешать NULL на ругающиеся столбцы..
96 Fram
 
08.06.10
23:20
+(95) только не забудь потом вернуть как было
97 levlvov
 
08.06.10
23:24
танцы с бубенцами ище продолжаются?
98 iamnub
 
08.06.10
23:29
(94)
У тебя проблемы с моей радостью? Я радуюсь, что у человека все получилось. А свое "че" засунь себе в очо. Доступно?
99 Fram
 
08.06.10
23:30
(98) обиделся что ли? ))
100 eklmn
 
гуру
08.06.10
23:31
сто!
101 iamnub
 
08.06.10
23:31
(93)
Слушай. Ты так запросы-то не хреначь бездумно, не соображая, что ты делаешь.

(99)
Ты лучше подскажи ему, как разрешить NULL на _AccumRegTurnovers7584NG - вот эту таблицу.

"обиделся что ли? ))" - да ну что ты - просто стараюсь соответствовать. Изо всех сил.
102 iamnub
 
08.06.10
23:34
(93)
Попробуй перепровести проблемный документ, а потом опять ТиИ.
103 Fram
 
08.06.10
23:44
(101) ну так же как он это сделал в прошлый раз
104 Капюшон
 
08.06.10
23:53
(101)а я просто решил регистр "продажи" грохнуть. через SQL. потомучто база хорошая. с 2010 года в ней только документы. Я её всеравно хотел перепровести. вот и повод хороший. пусть регистры перезаполнятся. Надеюсь новые косяки сейчас не всплывут. Я до сих пор ТИИ делаю
105 Капюшон
 
08.06.10
23:56
(102)а вот что. Скажите пожалуйста. Такая проблема могла у меня возникнуть по причине, Что было дело, я ТиИ делал с параметрами "очищать ссылки", "удалять объекты" ?
106 Капюшон
 
09.06.10
00:01
Сегодня благодаря этой проблеме и благодаря веткам, которые я насоздавал, а главное благодаря людям из этой ветки, особенно (102), я научился пользоваться SQL сервером, как инструментарием. Sql я конечно знаю чудчуть, но MS SQL сервер так за долгие годы карьеры не юзал. а сегодня научился файловую версию на SQL переводить и вот такие вот проблемы решать
107 Капюшон
 
09.06.10
00:02
хорошо что добрые люди не знают. что у меня ник "Еврейчик" есть ещё. ато бы наврядли они мне подсказали...
108 iamnub
 
09.06.10
00:02
(107)
Знаем-знаем. )))))
109 iamnub
 
09.06.10
00:04
(105)
Нет.
110 Капюшон
 
09.06.10
00:05
рассекретили) даже фотка моего друга в инфе не спасла
111 iamnub
 
09.06.10
00:06
(106)
Да ну...
Уметь админить SQL-сервак - это скил такой некислый.
Там еще столько всего. Индексы, бекапы, статистика, транзакции... Это все в первом приближении; тебе это надо срочно поднимать.
112 iamnub
 
09.06.10
00:08
И еще к научился - в (93) просто аховая жестяная жесть!
113 Капюшон
 
09.06.10
00:08
(111)похоже придётся. Люди уже на восьмерке сидят в основном, а объёмы баз всё растут и растут. Просто не приходилось сталкиваться. Все както на файловых версиях сидели и SQL не желали покупать. она дороже стоила. А в Москве вон у знакомых прогеров, постоянно необходимость возникала всякие TSQL и просто SQL юзать чтоб ускорять всё в больших базах
114 Капюшон
 
09.06.10
00:09
(112)ну потом пришлось вот что сделать
delete from _AccumRegTurnovers7584
delete from _AccumReg7563
delete from _AccumRegChangeRec7585

таким образом весь регистр грохнул
115 iamnub
 
09.06.10
00:14
(113)
всякие TSQL и просто SQL
(вздыхает)
Срочно в магаз за книжкой.
116 Капюшон
 
09.06.10
00:16
(115)ну я полагаю первое относится к 1С++ - прямые запросы ну а второе - это просто sql версия 1с. где можно для оптимизации отчетов sql использовать? ну типа того.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.