|   |   | 
| 
 | Структура хранения в 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. Ну и по контексту подразумевалось, что наверно где то дата должна хранится. Поэтому промохал.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |