|
Структура хранения в SQL ИсторииДанных. Как распарсить поле "DataId" с типом binary(20) | ☑ | ||
---|---|---|---|---|
0
arsik
гуру
02.09.21
✎
15:51
|
Предыстория:
В системе истории данных сначала все изменения пишутся в таблицу DataHistoryQueue0. Далее по регзаданию или когда пользователь интерактивно заглянет в историю, данные по объекту "переезжают" в таблицу "DataHistoryVersions" где в последующем и хранятся. Это штатная работа 1с. Мы по регзаданию историю данных не обновляем. Соответственно в таблице DataHistoryQueue0 накопилось много всего, в том числе и неактуального (нам последний месяц всего то и нужен). Вопрос: В таблице DataHistoryQueue0 - есть поле "DataId" с типом binary(20), как его в дату преобразовать, что бы удалить из нее все старые записи. https://i.imgur.com/QzLZRfQ.png |
|||
1
Garykom
гуру
02.09.21
✎
15:54
|
(0) там разве не число секунд?
|
|||
2
arsik
гуру
02.09.21
✎
16:07
|
Так. Поле DataId вообще к дате не имеет отношения :)) Это ссылка на объект видимо + еще 4 каких то байта.
|
|||
3
Garykom
гуру
02.09.21
✎
16:08
|
(2) в _Content все ?
|
|||
4
ДенисЧ
02.09.21
✎
16:09
|
Шо, Лицензию нарушаем?
|
|||
5
Garykom
гуру
02.09.21
✎
16:10
|
(4) Любая работа в SQL базе напрямую с данными нарушает лицуху 1С?
|
|||
6
arsik
гуру
02.09.21
✎
16:17
|
(4) Ой мамочки. Я после работы свечку в храме поставлю и все будет ок.
(5) В некоторых кругах ходят такие слухи, но это как тот Неуловимый Джо - Нахрен никому ненужен. |
|||
7
arsik
гуру
02.09.21
✎
16:19
|
(3) Видимо. Так что без стандартных средств эту лабуду не сделать.
|
|||
8
ДенисЧ
02.09.21
✎
16:20
|
(5) "что бы удалить из нее все старые записи"
Запись - да, нарушает |
|||
9
Dmitrii
гуру
02.09.21
✎
16:22
|
(5) ОПИСАНИЕ ПРАВ И ОГРАНИЧЕНИЙ
Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, в частности, не совершать и не допускать совершения третьими лицами следующих действий без специального письменного разрешения Правообладателя: - вносить какие-либо изменения в ..., содержимое баз данных и других наборов данных, в которых система хранит информацию, за исключением тех изменений, которые вносятся штатными средствами, входящими в состав ПРОГРАММНОГО ПРОДУКТА и описанными в сопроводительной документации; - осуществлять доступ к информационной базе ПРОГРАММНОГО ПРОДУКТА и построение систем на основе ПРОГРАММНОГО ПРОДУКТА с помощью средств и технологических решений, не предусмотренных в сопроводительной документации. Ну и где-то когда-то были комментарии от 1С, что смысл этих ограничений в недопустимости работы пользователя с БД напрямую в обход стандартных средств, предусмотренных самой 1С. Читать - пожалуйста. "Вносить какие-либо изменения" - нет. |
|||
10
arsik
гуру
02.09.21
✎
16:24
|
(8) На самом деле эта часть лицензии нужна для того, что бы 1С сняла с себя ответственность когда юзер руками таблички субд изменяет. И пока ты в 1С не обратишься с претензией: "я вот тут одну табличку затер и у меня база развалилась" никто на этот пункт смотреть не будет.
|
|||
11
Dmitrii
гуру
02.09.21
✎
16:28
|
(10) А это ты потом прокурору рассказывать будешь (с) Старый советский кинофильм (название забыл)
|
|||
12
Garykom
гуру
02.09.21
✎
16:30
|
(7) попробуй на шару де base64
|
|||
13
arsik
гуру
02.09.21
✎
16:31
|
(11) Тебя уж точно не спрошу.
|
|||
14
arsik
гуру
02.09.21
✎
16:32
|
(12) Так это долго будет выполнятся. Быстрее штатными средствами в несколько потоков.
|
|||
15
Dmitrii
гуру
02.09.21
✎
17:25
|
А прям вот срочно надо?
Чего бы не запилить обработку, которая в несколько потоков выполняла бы обновление и чистку истории данных? |
|||
16
arsik
гуру
02.09.21
✎
18:03
|
(15) Это само собой, просто обнаружили, что база распухла, хотелось почистить оперативно, но видимо только через стандартные механизмы и медленно :). Хорошо хоть распараллелить можно.
|
|||
17
Жан Пердежон
02.09.21
✎
23:47
|
(9) ADODBConnection = Новый COMОбъект("ADODB.Connection");
и изменяй/читай что угодно "штатными средствами" |
|||
18
VS-1976
03.09.21
✎
01:04
|
4 байта это тип, 16 байт guid
|
|||
19
youalex
03.09.21
✎
01:39
|
(18) не факт , там нули на скрине. Скорее разделение данных какое-то. Плюс есть еще столбец _metadataid
(16) сильно костыльно, можно скопировать эту таблицу в другую БД (не 1с) а исходную очистить. И руками создать в DataHistoryQueue0 столбец, который по дефолту будет заполняться getdate(). Такое, и (4) ) |
|||
20
ildary
03.09.21
✎
09:21
|
Почему Вы решили, что в DataId должна быть дата? "Data" - это "Данные", а "Дата" - это "Date".
|
|||
21
arsik
гуру
03.09.21
✎
10:20
|
(20) я же в (2) исправился уже. Просто глаз замылился. Вижу Data, а в голове Date. Ну и по контексту подразумевалось, что наверно где то дата должна хранится. Поэтому промохал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |