Имя: Пароль:
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 использовать? ну типа того.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn