Имя: Пароль:
1C
1С v8
Прямой SQL запрос к БД
0 Guerro
 
01.11.21
10:27
Необходимо очистить таблицу "_DATAHISTORYVERSIONS". Куда и как мне написать запрос "DELETE FROM _DATAHISTORYVERSIONS;"?
1 mikecool
 
01.11.21
10:28
truncate table  в любой консоли, подключенной к скулю
2 mikecool
 
01.11.21
10:29
+1 но если возникают такие вопросы....
3 Guerro
 
01.11.21
10:30
Это необходимо сделать, потому что поле "_NODE_TYPE" не должно иметь значение "null", а 603 записи имеют такое значение. Поэтому не могу перенести ИБД в серверную 1С
4 Guerro
 
01.11.21
10:30
(1) у меня файловая база сейчас
5 Guerro
 
01.11.21
10:31
(4) а чтобы перенести на SQL сервер, он требует исправить значение с полем "_NODE_TYPE"
6 mikecool
 
01.11.21
10:31
тестирование и исправление напусти
7 Guerro
 
01.11.21
10:32
(6) Делал "Реиндексация таблиц информационной базы" и "Сжатие таблиц информационной базы" и "Реструктуризация таблиц информационной базы", нет результата
8 Guerro
 
01.11.21
10:33
(6) Сейчас запустил со всеми галочками, позже проверю будет ли эффект
9 exwill
 
01.11.21
10:47
(0) Может просто версионирование отключить?
10 Guerro
 
01.11.21
10:52
(9) как вариант, но хз, очистит ли он таблицу по типу документа и справочника, а то значение в конфигурации изменится, а таблица не очистится
11 Garykom
 
гуру
01.11.21
10:59
(10) так ты выгрузку-загрузку то сделай и должно очиститься
12 Garykom
 
гуру
01.11.21
11:01
ну или Tool_1CD
13 Guerro
 
01.11.21
11:04
(12) Уже ей пользуюсь, но там 603 записи и сортировки нет, из 255к записей, очень много времени займет
14 Guerro
 
01.11.21
11:04
(11) не слышал о таком
15 Guerro
 
01.11.21
11:05
(11) Беру файловую базу, выгружаю, создаю новую чистую и загружаю в нее прошлую и типо очиститься?
16 Garykom
 
гуру
01.11.21
11:06
(15) теоретически если "версионирование отключить"
17 Garykom
 
гуру
01.11.21
11:11
(13) Выгрузить таблицу, исправить и загрузить не?
https://github.com/e8tools/tool1cd
18 Guerro
 
01.11.21
11:15
(16) Попробую
19 Guerro
 
01.11.21
13:05
(8) не дало результата
20 Guerro
 
01.11.21
13:27
(17) не дало результата
21 youalex
 
01.11.21
13:38
Штатно очистить не пробовал?  через
МенеджерИсторииДанных (DataHistoryManager)
УдалитьВерсии (DeleteVersions)
22 Guerro
 
01.11.21
14:36
(21) Пробовал, чистил историю по объектам методанных, так что хз, то есть история не выгружается по объекту, но зато в БД остается
23 Garykom
 
гуру
01.11.21
14:38
Конфа то какая? Выгрузку в сервис пробовал?
24 arsik
 
гуру
01.11.21
14:41
(23) Зачем ты его мучаешь?
(0) Перенос системы копированием - по моему мнению это только для рабочих компов и никак не вяжется с серверами.
Поставьте с нуля оперционку, дрова, скуль , 1с. 99% глюков не будет.
25 arsik
 
гуру
01.11.21
14:41
+ (24) Сорян, веткой ошибся
26 Ёпрст
 
01.11.21
14:59
(0) ну или разобрать конфу и удалить ручонками, или понизить совместимость до 10 и оно само прибьётся потом вернуть взад
27 МихаилМ
 
01.11.21
15:30
попробуйте переименовать таблицу. и 1с8 воссоздаст. так делали с таблицей users.
28 Guerro
 
01.11.21
15:59
(23) нетиповая
29 Guerro
 
01.11.21
16:00
(27) по такой логике, я могу удалить таблицу, но у меня ошибку потом выдает
30 Garykom
 
гуру
01.11.21
16:05
(29) так ты после chdbfl сделай и ТиИ
31 youalex
 
01.11.21
16:07
Можно попробовать изощриться, и в скуле создать триггер на CREATE TABLE _DATAHISTORYVERSIONS, в котором создавать триггер для нее же на INSERT.
32 Garykom
 
гуру
01.11.21
16:13
(31) файловая
33 Garykom
 
гуру
01.11.21
16:14
(32)+ а понял чтобы ошибку заливки в sql из файловой обойти
34 youalex
 
01.11.21
16:21
(33) да, вот здесь я что-то подобное сочинял,
Неуникальные индексы при загрузке базы из архива

Плюс еще есть "INSTEAD OF  - Указывает, что триггер DML выполняется вместо инструкции SQL, по которой он срабатывает"
по идее, наверное, можно переопределить CREATE TABLE на аналогичную, но без NOT NULL (не проверял)
35 МихаилМ
 
01.11.21
16:28
(34)  CREATE TABLE - это ddl. "по идее, наверное, можно"- не можно.
36 МихаилМ
 
01.11.21
16:30
(31) нет. в ддл триггере нельзя создать дмл триггер.
но можно изменить правило нот нулл. и после загрузки исправить данные либо удалить.
37 youalex
 
01.11.21
16:33
(35) значит нельзя.

(36) можно. вот работающий вариант:

CREATE TRIGGER trigg_table_create
ON DATABASE
FOR CREATE_TABLE  
AS

    IF EVENTDATA().value('(/EVENT_INSTANCE[1]/ObjectName[1])', 'nvarchar(150)') = '_1sjourn'
         exec (
            'create trigger tr_jrn_insert on dbo._1sjourn
                after insert
                    as  
                        delete from _1sjourn
                        where _id in (select _id from _1sjourn group by _id having count(*) >1)
            '
        )

GO
38 youalex
 
01.11.21
16:53
(36) но ваш вариант конкретнее, вот такой триггер вроде бы работает (какой там тип не знаю, вместо int ):

create trigger trigg_table_create on database
for  CREATE_TABLE
AS
IF EVENTDATA().value('(/EVENT_INSTANCE[1]/ObjectName[1])', 'nvarchar(150)') = '_DATAHISTORYVERSIONS'
         exec ('alter table _DATAHISTORYVERSIONS alter column _NODE_TYPE int NULL')
39 Guerro
 
01.11.21
17:01
(30) Пробовал, не помогло
40 Guerro
 
01.11.21
17:02
(16) От части помогло, сократило количество записей в таблице с 255к до 4к, но осталось 579 неправильных записей, вручную все равно дикость.
41 Guerro
 
01.11.21
17:04
(38) тип binary
42 Guerro
 
01.11.21
17:05
(38) как сделать запрос(тригер), у меня то не sql база, пока что.
43 youalex
 
01.11.21
17:06
(42) а куда ты грузишь ? Создай сначала sql базу
44 Ёпрст
 
01.11.21
17:07
Платформа какая хоть ? Релиз совместимости какой указан ?
+см (26) в 8.3.10 не было никаких версий, если понизишь до неё, оно само прибьётся
45 Garykom
 
гуру
01.11.21
17:09
(44) Не факт что такое понижение не прибьет нечто нужное
46 Ёпрст
 
01.11.21
17:12
(45) для этого нужно знать, какой релиз и какой режим совместимости
47 Guerro
 
01.11.21
17:13
(43) база есть с конфигураций, а вот БД ошибку пишет, при "Загрузить информационную базу..."
48 Guerro
 
01.11.21
17:14
(44) Платформа 8.3.19.1264, совместимость сейчас попробую сбросить, он уже ругается, что стоит "Использовать"
49 youalex
 
01.11.21
17:14
(47) ну вот в этой БД, в которую загружаешь попробуй этот триггер создать. До загрузки.
50 Ёпрст
 
01.11.21
17:15
(48) какой стоит, не надо сбрасывать
51 Ёпрст
 
01.11.21
17:15
?
52 Ёпрст
 
01.11.21
17:16
Если есть регистры бухгалтерии, и режим совместимости был ниже 8.3.15, то после сброса тебя ждёёт сюрпрайз
53 Guerro
 
01.11.21
17:19
(52) нет регистров бухгалтерии, я пока на тестовой базе БД мучаю, так что если я найду решение проблемы с полем. То уже будет легче решать вопрос.
54 Ёпрст
 
01.11.21
17:20
(53) тогда ставь режим совместимости до 8.3.10. Твоя история прибьётся к едрени фени, потом взад вернешЬ. хоть в файловой, хоть потом, в скуле.
55 Guerro
 
01.11.21
18:04
(54) да, все удачно. Но почему возникают ошибки конфигурации, работаю на толстом(обычное приложение) клиенте, в обычных формах, а он жалуется на "Нет функции "Предупреждение" "
56 Ёпрст
 
01.11.21
18:27
(55) смотреть надо, какие галки включены в пофигураторе в проверяемых модулях (сервер/мобильное приложение и т.д.. тебе нужно отставить только обычное приложение толстый клиент.. тип того)
57 Ёпрст
 
01.11.21
18:28
+ посмотреть, есть ли галка  - открывать содальные окна бла бла бла в свойствах конфы
58 Guerro
 
01.11.21
21:49
(57) Модальность включена
59 Guerro
 
01.11.21
21:50
(56) Стоит обычное приложение толстый клиент, так что походу нужно переписать конфу
60 Ёпрст
 
01.11.21
22:56
(59) режим совместимости вернул назад хоть ?
61 Guerro
 
02.11.21
07:53
(60) Да, но ошибки все равно нужно исправлять
62 Guerro
 
02.11.21
07:54
Я заметил, что обычные формы открывает нормально, а вот управляемые формы начинают читать модуль объекта, как в управляемом приложении
63 Guerro
 
02.11.21
08:13
Проверка конфигурации пишет "Ошибок нет", а при открытии говорит "Иди в задницу, переписывай управляемые формы и модули объектов под управляемое приложение"
64 ДенисЧ
 
02.11.21
08:24
(63) Ну так слушай умных людей и переписывай...
65 Guerro
 
02.11.21
18:00
(64) Аргумент
Независимо от того, куда вы едете — это в гору и против ветра!