|   |   | 
| 
 | v7: Состояние объекта и история - как лучше реализовать? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Bigbro 04.08.20✎ 09:27 | 
        Задача стоит аналогично КПП  - есть объекты, их состояние, и история - когда менялось, чтобы можно было отчет посмотреть.
 как лучше реализовать с учетом того что событий много, историю надо хранить задолго, а тормоза - крайне нежелательны? база на SQL. периодический реквизит вызывает сомнение. для регистра понадобится документ городить. вспомнил про регистры сведений, но на 8ку пока не перейти) может еще как то иначе сделать? тут много зубров по 7ке наверняка и подобный опыт есть - поделитесь, как бы вы сделали. | |||
| 1
    
        HawkEye 04.08.20✎ 09:33 | 
        (0) ну как вариант, в течении дня пишешь в документ, в шапке Объект, в таб.части что менялось...
 ночью выгружаешь в SQL, документы удаляешь или очищаешь таб.часть... | |||
| 2
    
        Bigbro 04.08.20✎ 09:36 | 
        (1) не совсем понял смысл хранения в промежуточном документе который потом удалится?     | |||
| 3
    
        fisher 04.08.20✎ 09:37 | 
        Отдельная (от 1С) база и табличка. Прямые запросы.     | |||
| 4
    
        ADirks 04.08.20✎ 09:37 | 
        (0) Табличку заведи. Или текстовый файл.     | |||
| 5
    
        fisher 04.08.20✎ 09:37 | 
        Если в сетке видима база СКУДа, то прямо к ней запросы и строить.     | |||
| 6
    
        fisher 04.08.20✎ 09:39 | 
        Если все же внутри - служебный справочник.     | |||
| 7
    
        Bigbro 04.08.20✎ 09:40 | 
        (4) во что превратится текстовый файл за скажем 5 лет, и как в нем искать данные по миллионам событий? это совсем странный вариант.
 (5) это не скуд, отдельная задача, просто близка очень по смыслу. (3) это пожалуй лучший вариант пока. | |||
| 8
    
        HawkEye 04.08.20✎ 09:41 | 
        (2) чтобы в момент записи объекта не лезть в какие-то внешние соединения....     | |||
| 9
    
        fisher 04.08.20✎ 09:44 | 
        Наиболее близкие по смыслу к "простой табличке" объекты что в 7.7, что в 8-ке - это справочники (не регистры сведений). В 8-ке стандартные индексируемые поля (код, наименование) удаляются выставлением длины в ноль (в 7.7 не помню - можно ли так) или их можно приспособить под нужную логику использования.     | |||
| 10
    
        Sserj 04.08.20✎ 09:45 | 
        (7) Отдельная база + триггеры на запись. Триггер проверять/создавать при началеРаботыСистемы. Тогда ничего в самой 1С кроме процедурки генерации триггера и не надо будет.     | |||
| 11
    
        ADirks 04.08.20✎ 09:47 | 
        (7) Запись в файл - наименее тормозной вариант.
 Анализировать это добро и потом можно, много всяких инструментов есть. Да хоть бы и переписывать в SQL-табличку по ночам. Плюс за файловый лог, это то, что в него внутри транзакции можно писать. Записи в SQL-табличку откатятся вместе с транзакцией. | |||
| 12
    
        Bigbro 04.08.20✎ 09:47 | 
        (8) звучит достаточно громоздко как в плане последующей отчетности так и потенциально проблемы записи документа если он один при конкурентных условно одновременных событиях, а если разные - тоже вопрос. но подумать в эту сторону наверное можно.
 (9) в ноль можно выставить, дату время события поставить. но потом запросом будет же всю эту кучу в миллион записей брать и фильтровать. | |||
| 13
    
        fisher 04.08.20✎ 09:48 | 
        (12) Если основной отбор будет по индексируемой дате, то размер справочника тебя особенно беспокоить не будет.     | |||
| 14
    
        ADirks 04.08.20✎ 09:49 | 
        (10) У нас тут героические админы как-то раз так сделали. Это было прикольно. Хорошо их рядом не было, когда я понял, что произошло. Убил бы, ей богу.     | |||
| 15
    
        fisher 04.08.20✎ 09:50 | 
        (12) Короче, если типовые запросы будут иметь приемлемую селективность по индексируемым полям, то размеры таблиц особого влияния на производительность оказывать не будут. Это как бы основная идея проектирования СУБД.     | |||
| 16
    
        Bigbro 04.08.20✎ 09:51 | 
        (10) а можно чуть подробнее? с триггерами не работал.
 (13) то есть добавить справочник событий с отбором по дате, событием, объектом, временем. | |||
| 17
    
        fisher 04.08.20✎ 09:51 | 
        Ну, т.е. будут конечно, но кривая будет очень пологая.     | |||
| 18
    
        fisher 04.08.20✎ 09:54 | 
        (16) Вспоминая проблемы 7.7 с датой-временем, я бы их тупо зафигачил в наименование справочника в формате "ГГГГММДД ЧЧ:мм:сс"     | |||
| 19
    
        Bigbro 04.08.20✎ 09:54 | 
        (17) спасибо.
 если ничего более интересного не предложат, наверное так и сделаю, подводных камней особо не видно, а реализовать будет очень просто. | |||
| 20
    
        ikea 04.08.20✎ 09:56 | 
        Какое количество пользователей работает онлайн?     | |||
| 21
    
        HawkEye 04.08.20✎ 09:57 | 
        (12) я же написал в шапке - "объект", а значит один объект - один документ, и ес-сно запретить его интерактивное открытие, никаких блокировок быть не должно...
 я бы (скорее всего) просто добавил ко всем объектам по которым надо хранить историю реквизит - документ.История и создавал его вместе с объектом, дальше при записи объекта писал уже в готовый документ только измененные реквизиты... ночью эти данные переносил в базу SQL с очисткой таб.части Отчеты строить по умолчанию - по данным SQL базы (или в зависимости от периода отчета)... | |||
| 22
    
        ikea 04.08.20✎ 10:00 | 
        Тригеры не вариант - нужно будет постоянно следить за добавление/изменением/удалением реквизитов.
 Поскольку база SQL - оптимальный вариант - хранение в справочниках истории. | |||
| 23
    
        Bigbro 04.08.20✎ 10:01 | 
        (20) 30+/- плюс всяческие регламентные обмены.     | |||
| 24
    
        ikea 04.08.20✎ 10:02 | 
        С прямыми запросами как?     | |||
| 25
    
        Bigbro 04.08.20✎ 10:03 | 
        (24) когда-то пробовал, понравилось, но на этой базе живем пока без них.
 если начнется засада с быстродействием начну переводить самые тонкие места. | |||
| 26
    
        Ёпрст гуру 04.08.20✎ 10:04 | 
        делал когда то, хранил в отдельной табличке
 http://pics.rsh.ru/img/_htgo09q3.png | |||
| 27
    
        HawkEye 04.08.20✎ 10:04 | 
        +21 почему не справочник....
 1. получить изменения по объекту можно просто выгрузить в ТЗ таб.часть документа, который указан в реквизите vs ВыбратьЭлементыПоРеквизиту и цикл с заполнением... 2. удаление истории: очистка таб.части vs цикл по элементам справочника с непосредственным удалением... и т.д. | |||
| 28
    
        Ёпрст гуру 04.08.20✎ 10:07 | 
        а в снеговике, иногда не хватает вот этого 
 http://catalog.mista.ru/public/20038/ | |||
| 29
    
        Kigo_Kigo 04.08.20✎ 10:10 | 
        Помню когда то заморачивался с подобным, как реализовывал не помню, помню одно, вся заварушка была из-за одного случая, гемора принесла много в последствии не потребовалась, потому как настроил такой импровизированный СКУД уже с записью прямо в док кем когда и скаой целью редактируется док, слава богу только до номенклатуры только добрались, да и доки токак приход расход(сф)     | |||
| 30
    
        ikea 04.08.20✎ 10:12 | 
        1. Чтобы избежать конфликта блокировок при одновременной записи изменений разными пользователями - пиши изменения в текстовый файл с генерацией уникального имени в файл. Ночью файлы обрабатывай и пиши в справочник с последующим удалением обработанных файлов.
 2. Я делал два справочника - один просто как таблица - Дата|Время|Пользователь|ТипОбъекта|ВидОбъекта|ИзменениеОбъекта(Справочник), второй справочник - ИзменениеОбъекта, где уже хранится история изменения объекта. | |||
| 31
    
        fisher 04.08.20✎ 10:12 | 
        (28) Почему не хватает? Версионирование же?     | |||
| 32
    
        HawkEye 04.08.20✎ 10:13 | 
        (29) во всех критических объектах всегда делаю реквизиты Автор, ДатаСоздания, Редактор, ДатаРедактирования...
 и все говорю: последний записал - принял на себя все риски по содержимому )) | |||
| 33
    
        fisher 04.08.20✎ 10:13 | 
        (28) А, сорри. Невнимателен.     | |||
| 34
    
        fisher 04.08.20✎ 10:15 | 
        (28) Но по-идее, реализовать же можно и значительно проще, чем в 7.7     | |||
| 35
    
        Bigbro 04.08.20✎ 10:17 | 
        (26) что насчет справочника с историей состояния скажешь, с отбором на дату? то что фишер советует?     | |||
| 36
    
        Ёпрст гуру 04.08.20✎ 10:18 | 
        (34) ну..как то лень пересиливает.
 Надо будет заняться что, ле на досуге. Иногда полезно: к примеру, в большом доке удаляешь что-то с таб части и ошибся, всё привет, выходи без сохранения и всё по-новой. А так, была бы отмена действий, вплоть до первоначального состояния. | |||
| 37
    
        Kigo_Kigo 04.08.20✎ 10:19 | 
        (32) Примерно так, так и было - кто последний тот и папа, но они еще писали пояснение -зачем они туда лезут для редактирования, а вот если пояснения не было - сразу депримирование, еще  помню делали большой пул для копий БД, откуда можно было сравнить изменения     | |||
| 38
    
        Ёпрст гуру 04.08.20✎ 10:19 | 
        (35) да пофик где хранить то, хоть тупо строка и значениВСтроку\ЗначениеВСтрокуВнутр..     | |||
| 39
    
        Ёпрст гуру 04.08.20✎ 10:22 | 
        Как показала практика, особа вся эта инфа с версионированием (что в 7.7, что в снеговике) особо то и не нужна, ну так, информации для.
 Ну выяснили , что месяц назад где-то кто-то что-то изменил ..дальше то что ? Поезд ушел :) Если только не явная диверсия, то, на эту инфу можно забить. Единственное, если в один документ вносят изменения несколько юзверей на разных этапах, добавляя в него новую инфу, можно посмотреть цепочку редактирований..усё | |||
| 40
    
        Ёпрст гуру 04.08.20✎ 10:24 | 
        В снеговике, частая операция в обслуживании базы - прибитие устаревшей инфы в регистре версииобъектов, чтоб не пух :)     | |||
| 41
    
        Ёпрст гуру 04.08.20✎ 10:24 | 
        Ибо смотреть, что там было полгода назад, никто уже не будет     | |||
| 42
    
        Bigbro 04.08.20✎ 10:26 | 
        (41) у меня к сожалению смотреть будут и на то что было 3 года назад тоже)     | |||
| 43
    
        Bigbro 04.08.20✎ 10:28 | 
        ладно всем спасибо за участие сделаю на справочнике. можно прикрыть.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |